Ramp Rate constraint in Economic Dispatch using Linprog function

조회 수: 11 (최근 30일)
Swaroop Mahasiva
Swaroop Mahasiva 2017년 11월 17일
편집: Matt J 2020년 2월 21일
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
Matt J
Matt J 2017년 11월 17일
편집: Matt J 2017년 11월 17일
What are the unknown variables x(i) and what is the dependence of PG on these variables?
Swaroop Mahasiva
Swaroop Mahasiva 2017년 11월 17일
편집: Matt J 2017년 11월 18일
PG = linprog(f,A,b,Aeq,beq,lb,ub);
Instead of x, i used PG. The output values are Power generated by each generator (PG). So x(i) = PG(i).

댓글을 달려면 로그인하십시오.

채택된 답변

Torsten
Torsten 2017년 11월 20일
편집: Torsten 2017년 11월 20일
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.
  댓글 수: 4
Swaroop Mahasiva
Swaroop Mahasiva 2018년 1월 9일
Torsten's solution satisfies ramp limits and my goal is to optimize the total generation across all 288 periods.How can i obtain optimal solution to my problem.Please help me.Thanks in advance.
Matt J
Matt J 2018년 1월 9일
편집: Matt J 2018년 1월 9일
What advice is there to add beyond the solution that I proposed in my answer from November?

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Matt J
Matt J 2017년 11월 18일
편집: Matt J 2017년 11월 18일
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
Aleksandra Komorowska
Aleksandra Komorowska 2020년 2월 21일
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
Matt J 2020년 2월 21일
편집: Matt J 2020년 2월 21일
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.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Solver Outputs and Iterative Display에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by