Wednesday 20 August 2014

Open Loop & Close Loop Buck Convertor

Buck Convertor is Used to Step Down DC Voltage to a Desired Level depending upon Duty Cycle Provided at Controlling Switch(A BJT or a MOSFET )

Open Loop COnvertor


Close Loop Convertor


Unit Commitment Using Priority Listing Scheme & Economic Dispatch



Unit Commitment is Non-linear Constrained Combinatorial Optimization Problem
Therefore Selection of Generators from a given lot is solved through many techniques So that most economical Combination of Generation Units can be obtained.
Priority list Scheme, Complete Enumeration Scheme, & Dynamic Programing are some techniques used for Selection of Generation units so as to achieve minimum cost.

Matlab Program

clc
c=1;
while(c==1)
X=[1:24];
n=length(X);
Y=[1000 1200 1470 980 600 900 400 550 450 670 900 1000 1000 1200 1300 800 600 900 400 550 450 670 900 1000];
plot(X,Y)
xlabel('Time ( Hours )');
ylabel('Power Demand(MW) ');
Title('Load Curve')
h=input('Check Commitement & ED at Hour # ');
    Pdt=Y(h);
basemva = 100;  accuracy = 0.0001;  maxiter = 10;
 Cost = [240  7.0   0.007
         200  10    0.0095
         220  8.5   0.009
         200  11    0.009
         220  10.5  0.0080
         190  12    0.0075];
 mwlimitB  =[100  500
            50   200
            80   300
            50   150
            50   200
            50   120];
        B=    [0.0017    0.0012    0.0007   -0.0001   -0.0005   -0.0002
               0.0012    0.0014    0.0009    0.0001   -0.0006   -0.0001
               0.0007    0.0009    0.0031    0.0000   -0.0010   -0.0006
              -0.0001    0.0001    0.0000    0.0024   -0.0006   -0.0008
              -0.0005   -0.0006   -0.0010   -0.0006    0.0129   -0.0002
              -0.0002   -0.0001   -0.0006   -0.0008   -0.0002    0.0150];
            B00= [0.0056];
            B0=  10^-3*[-0.3908   -0.1297    0.7047    0.0591    0.2161   -0.6635];
        a=Cost(:,1);
        b=Cost(:,2);
        c=Cost(:,3);
        Pmin=mwlimitB(:,1);
        Pmax=mwlimitB(:,2);

m=length(Cost);% Number of Generators
Avcostmax=(a+b.*Pmax+c.*(Pmax.^2))./Pmax;
Avcostmin=(a+b.*Pmin+c.*(Pmin.^2))./Pmin;
Avcost=(Avcostmax);
Gen=transpose(1:m);
AVC=[Avcost,Gen,Cost,Pmin,Pmax];
B=sortrows(AVC);
Costpl=B(:,3:5);
Pmaxpl=B(:,7);
Pminpl=B(:,6);
mwlimitA=B(:,6:7);
plist=B(:,2);
disp('Priority List is Given By')
disp(['    Gen#    Average_Cost      Cost Chatracteristics']);
disp(['               (R/MWh)         a     b     c']);
disp([plist   B(:,1)      B(:,3)     B(:,4)       B(:, 5)]);
PP=Pmaxpl(1);
    MP=sum(PP);
                x=1;%No of Generators
                if(Pdt<=MP)
                    disp(['No of Generators Commited = ']);
                    disp(x);
                    Pdt
            Lambda=8;
            cost(1:x,:)=Costpl(1:x,:);
            mwlimit(1:x,:)=mwlimitA(1:x,:);
            pl(1:x,:)=plist(1:x,:);
            Pmina=B(1,6);
            Pmaxa=B(1,7);

 disp(['    Gen#    Average_Cost    Min Power    Max Power    Cost Chatracteristics']);
disp(['               (R/MWh)         MW           MW          a     b     c']);
disp([ pl     B(1:x,1)      Pmina    Pmaxa  B(1:x,3)     B(1:x,4)       B(1:x, 5)]);
            ED_lambda2(Pdt,cost,Lambda,mwlimit); 
                end
while(Pdt>MP)
        PP=Pmaxpl(1:m-(m-x));
        MP=sum(PP);
        if(Pdt<=MP)
        disp(['No of Generators Commited = ']);
        disp(x);
        Pdt
            Lambda=8;
            cost(1:x,:)=Costpl(1:x,:);
            mwlimit(1:x,:)=mwlimitA(1:x,:);    
            pl(1:x,:)=plist(1:x,:);
            Pmina=B(1,6);
            Pmaxa=B(1,7);
            for i=2:x
                Pminb(i)=Pmina+B(i,6);
                Pmaxb(i)=Pmaxa+B(i,7);
                Pmina=Pminb(i);
                Pmaxa=Pmaxb(i);
            end
            Pminb=nonzeros([Pmin(1),Pminb]);
            Pmaxb=nonzeros([Pmax(1),Pmaxb]);
 disp(['    Gen#    Average_Cost    Min Power    Max Power    Cost Chatracteristics']);
disp(['               (R/MWh)         MW           MW          a     b     c']);
disp([ pl     B(1:x,1)      Pminb    Pmaxb  B(1:x,3)     B(1:x,4)       B(1:x, 5)]);
            ED_lambda2(Pdt,cost,Lambda,mwlimit);
        elseif(Pdt>MP)
            x=x+1;
        end
end
clear all
c=input('Continue(1) or end(0) ');
end

Result

Conclusion

This Technique of Complete Enumeration Is a Slow because it checks each combination one by one and then sort out Feasible Ones.
On the other Hand it does not Include System Constraints Such as
ü  Reliability
ü  Startup Cost and Minimum Startup Time
ü  Shut down Cost and Minimum shutdown Cost etc.
However it gives accurate Answers as compared to other techniques.
On the other hand Dynamic Programming is advanced form of Enumeration scheme which reserves few feasible low cost states and then utilize them to develop schedule keeping in mind system constraints.

Monday 17 February 2014

Economic Dispatch Using Lambda Itteration Method Neglecting Generation Limits & Transmission Losses Using Matlab

a)    Calculation Using Lambda Iteration Method

Lambda Iteration method Uses an Initial Assumption of Lagrange Multiplier and uses Continuous iterations to find correct value of Lambda. This correct value is found at Satisfaction of Demand.
Steps of Calculation Include
Ø  1st Step to Solve a Dispatch Problem is to write cost characteristic equations of committed units for Meeting Demand .(Refer To Equal Incremental Cost Criteria)
Ø  Assume a Value of Lagrange Multiplier and Calculate Generation Sharing (Generation Allocation) at that value of Lambda 

Ø  Calculate Difference in Value of Power demand and Total Generation.(Error)

MATLAB Program

clc
clear all
Pd=input('Total Power Demand = ');
Lambda=input('Assumed Value of Lagrange Multiplier = ');
n=input('No of Units Commited to Satisfy Demand = ');
x=Pd*0.10:10:Pd;
for i=1:n;
    a=input('No Load Speed Cost of Unit($/h) = ');
    b=input('Slope of linear line of unit ($/MWh) = ');
    c=input('Coefficient of 2nd order term of Unit(($/h)/MW^2) = ');
    A(i,:)=[a b c];
    y=[2*c*x+b];
    plot(x,y)
    hold on
end
a=A(:,1);
b=A(:,2);
c=A(:,3);
DelP=5;
iter=0;
while abs(DelP) >=0.01
    iter=iter+1;
    P=(Lambda-b)./(2*c);
    DelP=Pd-sum(P);
    X=sum(1./(2*c));
    Del_Lambda=DelP/X;



Saturday 15 February 2014

Economic Dispatch Of thermal generating units Using Equal Incremental Cost Criteria Neglecting Generation Limits & Transmission Losses

Objective

                            In Power Systems Generation Allocation (Economic Dispatch) is Major Problem, Therefore we will try to Allocate Generation to Committed Units so as to Satisfy Demand With Minimum Expenses(Minimum $/h) . We will Use Lagrange Multiplier Techniques in this Session.i.e;
a)      Incremental Cost Criteria
b)      Lambda(LaGrange Multiplier) Iteration Technique

Explanation

                              Incremental Cost Criteria is stated as
“Allocate Generation so that total Demand is Satisfied & All Incremental Costs are equal in Economic Dispatch Problem”
It is Most Widely Used Technique for Solution of Economic Dispatch Problems.
However it is Constrained Continuous Problem Therefore it is Difficult to Solve system keeping in mind the Inequality constraints. Transmission losses are also to be neglected for simplicity. Therefore Neglecting

         b)    Calculation Using Lambda Iteration Method

Lambda Iteration method Uses an Initial Assumption of Lagrange Multiplier and uses Continuous iterations to find correct value of Lambda. This correct value is found at Satisfaction of Demand.
Steps of Calculation Include
Ø  1st Step to Solve a Dispatch Problem is to write cost characteristic equations of committed units for Meeting Demand Using equation (1).
Ø  Assume a Value of Lagrange Multiplier and Calculate Generation Sharing (Generation Allocation) at that value of Lambda using equation (3).

Ø  Calculate Difference in Value of Power demand and Total Generation.(Error)


Matlab Program & Results

Equal Incremental Cost Criteria

Code

function [Lambda,P,Total_Cost]=IncrementalCC(Pd,A)
Pd=input('Total Power Demand = ');
n=input('Number of Generating Stations = ');
x=Pd*0.10:10:Pd;
for i=1:n;
    a=input('No Load Speed Cost of Unit($/h) = ');
    b=input('Slope of linear line of unit ($/MWh) = ');
    c=input('Coefficient of 2nd order term of Unit(($/h)/MW^2) = ');
    A(i,:)=[a b c];
    y=[2*c*x+b];
    plot(x,y)
    hold on
end
xlabel('Power(MW)');
ylabel('Incremental Cost ($/MWh)');
Title('Incremental Cost(Economic Dispatch Problem Solution)');
hold off
a=A(:,1);
b=A(:,2);
c=A(:,3);
Lambda=(Pd+sum(b./(2*c)))/sum(1./(2*c))
P=(Lambda-b)./(2*c)
Total_Cost=[sum(a)+sum(b.*P)+sum(c.*(P.^2))]

Results


Conclusion

                                Economic Dispatch is Online Function Carried on real Time (Minimum Cost of Production meeting Constraints). Economic Dispatch is an Important for Power System Operation because Economy is a Major factor which Influence Structure and Complexity of System. Even Unit Commitment Involve Economic Dispatch Solution as 1st step. In this Session we Solved Problem Neglecting T/L Losses and Generation Limits. However When we take into Account T/L Losses.
Equal-Incremental Criteria is most widely used technique for Solution of ED Problem;