Incorporating a Max in optimization objective

3 次查看(过去 30 天)
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 个评论
cchen
cchen 2016-12-5
编辑:cchen 2016-12-5
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 2017-10-12
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.

请先登录,再进行评论。

回答(2 个)

Matt J
Matt J 2017-10-12
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 2023-10-1
You can try to use the method presented in this video.

类别

Help CenterFile Exchange 中查找有关 Get Started with Optimization Toolbox 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by