class IntegerNLP extends AnyRef
This IntegerNLP
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
- Alphabetic
- By Inheritance
- IntegerNLP
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
-
new
IntegerNLP(f: FunctionV2S, n: Int, g: FunctionV2S = null, excl: Set[Int] = Set ())
- f
the objective function to be minimized
- g
the constraint function to be satisfied, if any
- excl
the set of variables to be excluded from the integer requirement
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
addConstraint(j: Int, le: Boolean, bound: Double): Boolean
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).
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).
- j
the index of variable x_j
- le
whether it is a "less than or equal to" 'le' constraint
- bound
the bounding value
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
def
fractionalVar(x: VectorD): Int
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.
- x
the vector to check
- var g: FunctionV2S
- def g0(x: VectorD): Double
-
def
gBounds(x: VectorD): Double
Add up all the violation of bounds constraints.
Add up all the violation of bounds constraints.
- x
the current point
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
-
def
solution: (VectorD, Double)
Return the optimal (minimal) integer solution.
-
def
solve(x0: VectorD, dp: Int): Unit
Solve the Mixed Integer Non-linear, Linear Programming (MINLP) problem by using Branch and Bound and an NLP Algorithm, e.g.,
QuasiNewton
, recursively.Solve the Mixed Integer Non-linear, Linear Programming (MINLP) problem by using Branch and Bound and an NLP Algorithm, e.g.,
QuasiNewton
, recursively.- dp
the current depth of recursion
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
- val x_ge: VectorD
- val x_le: VectorD