Incorporating a Max in optimization objective

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

Brendan Hamm
Brendan Hamm 2016년 11월 30일
편집: Brendan Hamm 2016년 11월 30일
A convex function is not linear, so intlinprog will not solve it. 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.
What is the need for an optimization routine to solve this anyhow? Are you trying to expand the concept to a larger problem?
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.
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일

0 개 추천

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일

0 개 추천

You can try to use the method presented in this video.

카테고리

도움말 센터File Exchange에서 Get Started with Optimization Toolbox에 대해 자세히 알아보기

질문:

2016년 11월 30일

답변:

2023년 10월 1일

Community Treasure Hunt

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

Start Hunting!

Translated by