class IntegerTabuSearch extends AnyRef
The IntegerTabuSearch
class performs tabu search to find minima of functions
defined on integer vector domains 'z^n'. Tabu search will not re-visit points
already deemed sub-optimal.
minimize f(x) subject to g(x) <= 0, x in Z^n
- Alphabetic
- By Inheritance
- IntegerTabuSearch
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new IntegerTabuSearch(f: (VectorI) => Double, g: (VectorI) => Double = null, maxStep: Int = 5)
- f
the objective function to be minimize ('f' maps an integer vector to a double)
- g
the constraint function to be satisfied, if any
- maxStep
the maximum/starting step size (make larger for larger domains)
Type Members
- type Vec_Func = (VectorI, Double)
Pair consisting of an integer vector and its functional value (a double)
Value Members
- def fg(x: VectorI): Double
The objective function 'f' re-scaled by a weighted penalty, if constrained.
The objective function 'f' re-scaled by a weighted penalty, if constrained.
- x
the coordinate values of the current point
- def minNeighbor(x_f0: Vec_Func, i: Int, step: Int = 1): Vec_Func
Find a minimal neighbor of the current point x that is a distance step away.
Find a minimal neighbor of the current point x that is a distance step away. Let x be the current point with y being a step down and x being a step up in dimension i. Recurse to handle all of the dimensions.
- x_f0
the current pair (the point and its functional value)
- i
the i-th dimension or coordinate (facilitates recursion)
- step
examine points that are this far away
- def solve(x: VectorI): Vec_Func
Solve the minimization problem by repeatedly moving to a minimal neighbor until there is no improvement.
Solve the minimization problem by repeatedly moving to a minimal neighbor until there is no improvement.
- x
the starting point for the search