Incorporating a Max in optimization objective

3 views (last 30 days)
I'm trying to use intlinprog to solve a mixed integer linear program where the objective function has a max function embedded in it. For example, the objective may be of the form:
5*max(10-x, 0)+x
The objective is clearly convex and actually piecewise linear. How can I incorporate this in the form
f'x
so as to be able to use intlinprog?
  3 Comments
cchen
cchen on 5 Dec 2016
Edited: cchen on 5 Dec 2016
I see what you are saying. Currently, I'm using cvx to model a larger convex mixed-integer problem, which then calls Mosek. It is slow however, and I was hoping to improve upon this by using a Matlab solver. I thought I could use intlinprog since the cvx input to Mosek is an integer linear program, but reading the model, I cannot fully understand the reformulation.
Oskar Adolfson
Oskar Adolfson on 12 Oct 2017
I think it is false to say that a convex function is not linear. A convex function can actually be linear, but it doesn't have to be. Try to verify yourself by testing if y = ax is convex.

Sign in to comment.

Answers (2)

Matt J
Matt J on 12 Oct 2017
Splitting this piecewise linear function into regions where it is a linear function is akin to knowing the minimum solution in the first place, so I don't see what use this has.
Not sure why that approach isn't worth pursuing. For this example, you simply add the constraint x<=10 for the first region and x>=10 for the second.

Mario CASTRO GAMA
Mario CASTRO GAMA on 1 Oct 2023
You can try to use the method presented in this video.

Categories

Find more on Get Started with Optimization Toolbox 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!