Filter löschen
Filter löschen

how can I do linear programming with a piecewise objective function?

5 Ansichten (letzte 30 Tage)
xinyu
xinyu am 22 Feb. 2013
hello
I have done a linear programming code.And now the objective function of the problem will become a piece-wise function, but still linear in every part of the function.Also, all the constrains are linear as well.
which order can I use to solve the optimizing problem? still the linprog? if yes, how to write the objective function,AKA f. If not, which order can I turn to?
I have tried the fmincon order, but the example in help seems wrong, because I errors happened when I was trying to run it. Is also seems that the description of 'medium-scale programming' in help of linprog suits my requirements, but I cannot figure out how to right the objective function.
thanks
zech

Antworten (2)

Alan Weiss
Alan Weiss am 22 Feb. 2013
Optimization Toolbox solvers generally assume that objective functions are smooth, meaning twice differentiable. They can have difficulty with nonsmooth functions.
That said, there should be no errors even with nonsmooth objectives. If you show us some code we might be able to help diagnose what is going on with your objective or constraint functions.
linprog is unsuitable because it does not handle piecewise-defined objectives and constraints.
It is possible that patternsearch, in Global Optimization Toolbox, is most suitable, because it does not care about smoothness.
Alan Weiss
MATLAB mathematical toolbox documentation
  7 Kommentare
xinyu
xinyu am 27 Feb. 2013
the fminimax can also be used as
x= fminimax(fun,x,A,b,Aeq,beq,lb,ub)
x0 is the initial guess, what is x supposed to be?
Alan Weiss
Alan Weiss am 27 Feb. 2013
Sorry, you found a typo in the documentation. I'll fix that. The syntax is supposed to be
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub)
Alan Weiss
MATLAB mathematical toolbox documentation

Melden Sie sich an, um zu kommentieren.


Matt J
Matt J am 27 Feb. 2013
If your problem size isn't too large (you say it's "medium scale"), you could try a brute force approach. Since your feasible set consists of polygonal pieces, you could find try to find the vertices of all the polygons using
The piecewise linear objective has to be optimized at one of the vertices, so you could just search the values at all vertices to find the optimum.

Community Treasure Hunt

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

Start Hunting!

Translated by