class IntegerGoldenSectionLS extends AnyRef
The IntegerGoldenSectionLS
class performs a line search on 'f(x)' to find a
minimal value for 'f'. It requires no derivatives and only one functional
evaluation per iteration. A search is conducted from 'x1' (often 0) to 'xmax'.
A guess for 'xmax' must be given, but can be made larger during the expansion phase,
that occurs before the recursive golden section search is called. It works on
scalar functions
- See also
IntegerGoldenSectionLSTest. If starting with a vector function 'f(x)', simply define a new function 'g(y) = x0 + direction * y'.
IntegerGoldenSectionLSTest2.
- Alphabetic
- By Inheritance
- IntegerGoldenSectionLS
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new IntegerGoldenSectionLS(f: (Int) => Double)
- f
the scalar objective function to minimize
Value Members
- def gsection(left: Boolean, x1: Int, x2: Int, x3: Int, f2: Double): Int
A recursive golden section search requiring only one functional evaluation per call.
A recursive golden section search requiring only one functional evaluation per call. It works by comparing two center points x2 (given) and x4 computed.
- left
whether to search left (true) or right (false) side of last interval
- x1
the left-most point
- x2
the center point (.618 across for left and .382 across for right)
- x3
the right-most point
- f2
the functional value for the x2 center point
- def printGolden(): Unit
Print the golden ratio and the golden section.
- def solve(xmax: Int = 5, x1: Int = 1): Int
Perform a Line Search (LS) using the Integer Golden Search Algorithm.
Perform a Line Search (LS) using the Integer Golden Search Algorithm. Two phases are used: an expansion phase (moving the end-point) to find a down-up pattern, followed by a traditional golden section search.
- xmax
a rough guess for the right end-point of the line search
- x1
the left (smallest) anchor point for the search (usually 1)