Ramp Rate constraint in Economic Dispatch using Linprog function
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Swaroop Mahasiva
am 17 Nov. 2017
Bearbeitet: Matt J
am 21 Feb. 2020
I have a problem in implementing ramp rate constraint using linprog function. I have 5 generators with marginal costs, ramp rate limits, min and max generation capacities as linear functions. In short my economic dispatch problem is as follows:
f = [1000 500 0 0 300]; %%Objective function
lb = [0 0 0 0 0]; %%Lower boundary
ub = [5000 9000 3500 1500 8000]; %%Upper boundary
Aeq = [1 1 1 1 1]; %%Equality Constraint
beq = L; %%Total load
Now, the ramp rate constraint: let PG1 be power generated by generator 1(say)
|PG1(k) - PG1(k-1)| <= Ramp rate limit(200);
where k is the optimization period. so how can i implement this using linprog function...?
PG = linprog(f,A,b,Aeq,beq,lb,ub);
2 Kommentare
Akzeptierte Antwort
Torsten
am 20 Nov. 2017
Bearbeitet: Torsten
am 20 Nov. 2017
f = [1000 500 0 0 300]; %%Objective function
A = [];
b = [];
Aeq = [1 1 1 1 1]; %%Equality Constraint
beq = L; %%Total load
lb = [0 0 0 0 0]; %%Lower boundary
ub = [5000 9000 3500 1500 8000]; %%Upper boundary
PG = linprog(f,A,b,Aeq,beq,lb,ub);
A = [eye(5);-eye(5)];
for i=1:288
b = [200+PG(1) ; 83.33+PG(2) ; 100+PG(3) ; 150+PG(4) ; 66.67+PG(5) ; 200-PG(1) ; 83.33-PG(2) ; 100-PG(3) ; 150-PG(4) ; 66.67-PG(5)];
PG = linprog(f,A,b,Aeq,beq,lb,ub);
end
Best wishes
Torsten.
Weitere Antworten (1)
Matt J
am 18 Nov. 2017
Bearbeitet: Matt J
am 18 Nov. 2017
n=numel(f);
D=diff(eye(n));
A=[D;-D];
b=200*ones(n,1);
PG = linprog(f,A,b,Aeq,beq,lb,ub);
4 Kommentare
Aleksandra Komorowska
am 21 Feb. 2020
Hi,
I'm trying to use this code, but the following error is displayed:
The number of rows in A must be the same as the number of elements of b.
f = [1000 500 0 0 300]; % Objective function
lb = [0 0 0 0 0]; % lower bound
ub = [5000 9000 3500 1500 8000]; % upper bound
L = 20000; % load
D=speye(288);
A=kron([D,-D],eye(5));
b=kron(ones(288*2,1), [200;83.33;100;150;66.7]);
Aeq=kron(speye(288),ones(1,5));
beq=L*ones(288,1);
LB=repmat(lb(:),1,288);
UB=repmat(ub(:),1,288);
F=repmat(f(:),1,288);
PGall = linprog(F,A,b,Aeq,beq,LB,UB)
Do you have any ideas, why?
Best regards,
Aleksandra
Matt J
am 21 Feb. 2020
Bearbeitet: Matt J
am 21 Feb. 2020
It's because the A and b matrix generated by the code have different numbers of rows. But never mind. Looking back at it now, the problem was probably stated incorrectly. Since there are no changes in any of the problem data from period to period, satisfying the rate constraint is trivial. Just solve the optimization problem for the first period and use that for all later periods.
Siehe auch
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!