Wednesday, 20 August 2014
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
clcc=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.
Subscribe to:
Posts (Atom)