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.