the objective function to be minimized
the constraint function to be satisfied, if any
the set of variables to be excluded from the integer requirement
Add a new constraint to the current set of bounding constraints: x_j - bound <= 0 or x_j - bound >= 0 (e.
Add a new constraint to the current set of bounding constraints: x_j - bound <= 0 or x_j - bound >= 0 (e.g., x_1 - 2 <= 0 or x_0 - 4 >= 0).
the index of variable x_j
whether it is a "less than or equal to" (le) constraint
the bounding value
Return j such that x_j has a fractional (non-integer) value, -1 otherwise.
Return j such that x_j has a fractional (non-integer) value, -1 otherwise. Make sure that j is not in the exclusion list.
the vector to check
the constraint function to be satisfied, if any
Add up all the violation of bounds constraints.
Add up all the violation of bounds constraints.
the current point
Return the optimal (minimal) integer solution.
Solve the Mixed Integer Nonlinear Linear Programming (MINLP) problem by using Branch and Bound and an NLP Algorithm (e.
Solve the Mixed Integer Nonlinear Linear Programming (MINLP) problem by using Branch and Bound and an NLP Algorithm (e.g., QuasiNewton), recursively.
the current depth of recursion
This class solves Integer Non-Linear Programming (INLP) and Mixed Integer Linear Non-Programming (MINLP) problems recursively using the Simplex algorithm. First, an NLP problem is solved. If the optimal solution vector x is entirely integer valued, the INLP is solved. If not, pick the first x_j that is not integer valued. Define two new NLP problems which bound x_j to the integer below and above, respectively. Branch by solving each of these NLP problems in turn. Prune by not exploring branches less optimal than the currently best integer solution. This technique is referred to as Branch and Bound. An exclusion set may be optionally provided for MINLP problems.
Given an objective function f(x) and a constraint function g(x), find values for the solution/decision vector 'x' that minimize the objective function f(x), while satisfying the constraint function, i.e.,
minimize f(x) subject to g(x) <= 0, some x_i must integer-valued
Make b_i negative to indicate a ">=" constraint