Try our new documentation site (beta).
GRBCallback::stopOneMultiObj()
Interrupt the optimization process of one of the optimization steps in a multi-objective MIP problem without stopping the hierarchical optimization process. Only available for multi-objective MIP models and when the where member variable is not equal to GRB_CB_MULTIOBJ (see the Callback Codes section for more information).
You would typically stop a multi-objective optimization step by querying the last finished number of multi-objectives steps, and using that number to stop the current step and move on to the next hierarchical objective (if any) as shown in the following example:
Example usage:
#include <ctime> class mycallback: public GDBCallback { public: int objcnt = 0; time_t starttime = time(); protected: void callback () { if (where == GRB_CB_MULTIOBJ) { /* get current objective number */ objcnt = getIntInfo(GRB_CB_MULTIOBJ_OBJCNT); /* reset start time to current time */ starttime = time(); } else if (time() - startime > BIG || /* takes too long or good enough */) { /* stop only this optimization step */ stopOneMultiObj(objcnt); } } }
You should refer to the section on Multiple Objectives for information on how to specify multiple objective functions and control the trade-off between them.
void | stopOneMultiObj ( | int | objcnt ) |
Arguments:
objnum: The number of the multi-objective optimization step to interrupt. For processes running locally, this argument can have the special value -1, meaning to stop the current step.