I’m trying to solve a MILP where CVX takes more than a week to solve. I’m using Gurobi as solver. Can anyone suggest me how it is possible to instruct Gurobi through CVX settings to terminate when the cost is below a certain threshold? I intend to compute the threshold from upper bound and lower bound of cost.
Is there any other way to solve the optimization faster? Does anyone recommend use of MIPGap through CVX settings? If so it would be great to have a direction?
cvx_solver_settings CVX solver settings adjustment.
cvx_solver_settings is used to adjust the advaned settings of the
current solver being used by CVX. Before using this function, please
read the IMPORTANT NOTE below.
cvx_solver_settings( <name1>, <value1>, [ <name2>, <value2>, ... ] )
stores a custom setting called <name1> for the active solver, and gives
it a value of <value2>, and so forth for the other key-value pairs.
Each name must be a string containing a valid variable name; the values
may be of any type or size, including empty arrays or strings.
When CVX_END is reached, these key/value pairs will be delivered to the
underlying solver as parameters. This allows an expert user to modify
the behavior of the underlying solver in a manner that is otherwise
unavailable through more standard CVX commands.
cvx_solver_settings( 'name' ) or
returns the current value of that setting for the current solver. If
there is no such setting by that name, an error results.
cvx_solver_settings( '-clear', <name1>, '-clear', <name2>, ... ) or
cvx_solver_settings -clear <name>
Removes the key/value pair matching <name> from the settings list for
the active solver.
cvx_solver_settings, with no arguments, displays the current list of
settings for the active solver.
cvx_solver_settings -all displays a list of the settings for all
all available solvers.
cvx_solver_settings -clear clears all settings for the active solver.
cvx_solver_settings -clearall clears all settings for all solvers.
cvx_solver_settings( S )
where S is a structure, replaces the *entire* list of solver settings
with the field-value pairs stored in the structure S.
S = cvx_solver_settings returns a structure containing all of the
settings for the current solver.
If you call cvx_solver_settings within a model --- that is, between
CVX_BEGIN and CVX_END --- then the changes are "local": that is, they
will apply ONLY to the current model.
On the other hand, if you call cvx_solver_settings outside of a model,
then the changes are "global": they will apply to all subsequent models
that employ that solver.
CVX_SAVE_PREFS will save any global settings you have provided, so they
will be restored the next time you start MATLAB.
cvx_solver_settings( 'dumpfile', <filename> ) is a setting supported by
all solvers. If set, it will save a .MAT file containing the exact
input arguments delivered to the solver. This file will be created
immediately before the solver is called, so you will be able to examine
their contents even if the solver fails with an error. This feature is
to be used primarily by solver developers.
**** IMPORTANT NOTE ****
Please use this feature with extreme caution, and at your own risk:
* CVX does not check the correctness of the settings you supply. If the
solver rejects the setting you supply, CVX will fail until you change
or remove that setting.
* Use of this feature can alter the quality of the solutions that the
solver produces: sometimes for the better, sometimes for the worse.
* Please consult your solver's specific documentation for information
about its available settings.
* The settings set here *override* any default values CVX has chosen
for each solver. In certain cases, this may actually confuse CVX and
and cause it to misinterpret the results. For this reason, we cannot
support all possible combinations of custom settings.