Solving Conditional equations using linear programming
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentario
Matt J
el 17 de Ag. de 2014
Editada: Matt J
el 17 de Ag. de 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.
Respuestas (1)
John D'Errico
el 17 de Ag. de 2014
Editada: John D'Errico
el 17 de Ag. de 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.
0 comentarios
Ver también
Categorías
Más información sobre Linear Programming and Mixed-Integer Linear Programming en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!