Model.cbStopOneMultiObj()

Filter Content By
Version
Languages

Model.cbStopOneMultiObj()

cbStopOneMultiObj ( objcnt )

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.Callback.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:

import time

def mycallback(model, where):
if where == GRB.Callback.MULTIOBJ:
# get current objective number
model._objcnt = model.cbGet(GRB.Callback.MULTIOBJ_OBJCNT)

# reset start time to current time
model._starttime = time.time()

# See if we want to stop current multiobjective step
else if time.time() - model._starttime > BIG or
solution is good enough:
# stop only this optimization step
cbStopOneMultiObj(model._objcnt)

model._objcnt = 0
model._starttime = time.time()
model.optimize(mycallback)


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.

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.