Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
328 views
in Technique[技术] by (71.8m points)

optimization - MIP: Fixing a partial solution vector in CPLEX (C++)

I am implementing a matheuristic with CPLEX in C++, where I start the same MIP multiple times with different partial solution vectors provided.

However, I do not only want to provide a starting solution, I want the variables in the partial solution vector to be seen as fixed during the whole optimization procedure (the reason is, to always explore different parts of the search space in a controlled manner).

Searching through the documentation of CPLEX and here, I can't really find a fitting function call providing the functionality I am looking for and would really appreciate tipps how to approach this problem in a good and efficient way.

There is one solution-approach I can think of, which is fixing the variables through adding constraints such as y == 4 to the model and after solving the resulting sub-MIP, removing the constraint from the model (as described here). However, are there better options to achieve this? And are there possibilities to exploit the preprocessing information gained by solving one MIP with fixed partial solution vector a for afterwards solving the same MIP with a different fixed partial solution vector b? After all, the core model did not change.

Regarding warm-starting CPLEX with a partial solution, I found the Level 3 CPX_MIPSTART_SOLVEMIP effort level with the description:

solves a subMIP. You must specify the value of at least one discrete variable at this effort level

But am I interpreting this correctly, that this means it tries to construct a starting solution by solving the sub-MIP and then proceed with the whole optimization problem possible changing variables given in the starting solution, whereas I am interested in only solving the subMIP.

Thank you!


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...