How can I make the negative output values of the linprog optimization to be treated as if they was positive when optimizing a problem?
Show older comments
How can I make the negative output values of the linprog optimization to be treated as if they was positive when optimizing a problem?
My output is as follows (being printed into an external file):
Gen1 P: 0.00 Gen2 P: 200.00 P12: 66.67 P13: -66.67 P32: 133.33
It is a power flow problem, and the output might therefore be negative if power flows in a different direction to my chosen one. What the optimizer clearly does, is treating the negative value as a "gain" and hence it tries to maximize this value (only constrained by the bounds and other constraints I have defined). I need this negative value to be treated as a positive one when optimizing, as negative only indicates direction and not a gain. In other words, I need the negative value to be minimized in the same manner as a positive value. Is there an option to do this directly when launching the optimizer?
1 Comment
Walter Roberson
on 14 Nov 2013
You do not show us your linprog() call. It appears that you are not specifying a lower bound and upper bound ?
Accepted Answer
More Answers (2)
Ben Petschel
on 15 Nov 2013
1 vote
If you need to minimise something like abs(x), just replace x with y-z so your objective becomes to minimise y+z with y>=0 and z>=0. This can all be plugged straight into linprog along with all the other linear constraints.
You could also replace terms f(i)*abs(x(i)) in the objective function with f(i)*w where w(i) is an additional variable introduced into the problem formulation. You then add constraints,
w(i)>=x(i)
w(i)>=-x(i)
Categories
Find more on Solver Outputs and Iterative Display in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!