FRAMES NO FRAMES

IloDichotomize

public IloGoal IloDichotomize(const IloEnv env, const IloNumVarArray vars, const IloChooseFloatIndex=IloChooseFirstUnboundFloat, IloBool increaseMin=IloTrue, IloNum precision=0)
public IloGoal IloDichotomize(const IloEnv env, const IloNumVar var, IloBool increaseMin=IloTrue, IloNum precision=0)
Definition file: ilsolver/ilosolverfloat.h
Include file: <ilsolver/ilosolver.h>

This function creates and returns a goal in a Concert Technology model. The goal attempts to assign values to the constrained floating-point variables in the array vars. To do so, it recursively searches half the domain of each variable in the array at a time.

If the current variable is not yet bound, IloDichotomize sets a choice point, replaces the complete domain of the variable by one half of the domain and calls itself recursively. If failure occurs then, it replaces the domain of the current variable by the other half, and tries again recursively.

IloDichotomize chooses the order in which to try to bind variables in the array based on the argument of type IlcChooseFloatIndex. If no choice criterion is passed, IloDichotomize will recursively consider the first variable in the array until it is instantiated and then proceed to the next one.

When the argument increaseMin is IloTrue, the upper half of the domain is tried first. When increaseMin is IloFalse, the lower half of the domain is tried first.

When the optional argument precision is strictly positive, at each choice point, the domains of the variables are reduced more than usual. This reduction is the same as the one performed by the goal IloGenerateBounds.

This function returns an instance of IloGoal for use with the member functions IloSolver::startNewSearch and IloSolver::solve. IloDichotomize is extracted to IlcGenerate. An instance of IloSolver extracts the goal that it returns as an instance of IlcGoal for use during a Solver search.

This function works on numerical variables of type Float and type Int.

For an IloNumVarArray of either type Float or type Int, IloDichotomize is extracted to IlcGenerate. IlcGenerate takes a variable (chosen by _choose) and if uninstantiated considers the two halves of the domain (according to increaseMinFirst. It then repeats this. If no _choose selector is given it will recursively consider the first variable until it is instantiated and then proceed to the next one.

For an IloNumVar of either type Float or type Int, IloDichotomize is extracted to IlcInstantiate. IlcInstantiate takes a variable (chosen by _choose) and if uninstantiated considers the two halves of the domain (according to increaseMinFirst. It then repeats this. If no _choose selector is given it will recursively consider the first variable until it is instantiated and then proceed to the next one.

See Also: