Solving Conditional equations using linear programming

2 Ansichten (letzte 30 Tage)
Ashenafi Alemu
Ashenafi Alemu am 17 Aug. 2014
Bearbeitet: Matt J am 17 Aug. 2014
I am working M.Sc. Thesis research on a load dispatch problem for Ethiopian power system that consists of mainly 15 hydroelectric power plants, 4 wind power plants, 5 geothermal plants and 2 solar power plants. The objective function bases itself on minimizing the power production cost. All types of power plants listed above have their own property and I have already formulated the model based on those properties.
Both the objective function as well as equality and non-equality constraints are all linear, discrete and deterministic. I am working for a year time with hourly resolution and using MATLAB platform to optimize the problem. The problem is already classified as large scale linear programming.
Given this information my problem is as follows:
I have a Conditional spillage constraint equation of the form:
s(r,t) = V(r,t) - Vrmax
if s(r,t) >= 0 then V(r,t)= Vrmax (or V(r,t) takes the value of Vrmax) and s(r,t) = s(r,t) (or S(r,t) takes its own value)
else If s(r,t) < 0 Then V(r,t) = V(r,t) (or V(r,t) takes its own value) and s(r,t) =0 (and s(r,t) takes a value of zero)
Where V(t) = the reservoir level (volume) in time period t, S(r,t) = spill in time period t and Vrmax is the maximum reservoir volume.
In addition there are two upper and lower bound equations for the above variables (V and S):
V(r,t) <= Vrmax
S(r,t) >=0
I was attempting to use the function Linprog to solve the equation. But linprog accepts only coefficients of equation in matrix form which makes it difficult for the above equation since it is conditional. Is there any way I can represent such function in MATLAB linear programming platform? IF not what else can I do?
Regards Ashenafi
  1 Kommentar
Matt J
Matt J am 17 Aug. 2014
Bearbeitet: Matt J am 17 Aug. 2014
You should avoid duplicating posts, as you have done here,
As I pointed out there, the problem as you have described it has only the trivial feasible solution S(r,t)=0, V(r,t)=Vrmax.
That's assuming s(r,t) and S(r,t) are the same thing. Otherwise, the difference needs to be explained.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

John D'Errico
John D'Errico am 17 Aug. 2014
Bearbeitet: John D'Errico am 17 Aug. 2014
This is a nonlinear constraint. It is not solvable by linprog, a LINEAR programming solver.
The clue is that when ONE of your variables exceeds a limit, another parameter is affected in a nonlinear manner. That linprog takes its input in the form of a matrix form should be your other clue, but I think you recognized that. You just were trying to fit a square peg into a round hole.
Note that SOME nonlinear constraints are handled by linprog, like a max constraint, where one of the problem variables takes on min or max (bound) constraint. But in your case, you have one variable that is affected nonlinearly by another variable.
You will need to use a nonlinear solver, like fmincon.

Kategorien

Mehr zu Linear Programming and Mixed-Integer Linear Programming finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by