Class: Minimization::PolakRibiere
- Inherits:
-
NonLinearConjugateGradientMinimizer
- Object
- NonLinearConjugateGradientMinimizer
- Minimization::PolakRibiere
- Defined in:
- lib/multidim/conjugate_gradient.rb
Overview
Conjugate Gradient Polak Ribbiere minimizer.
A multidimensional minimization methods.
Usage.
require 'minimization' f = proc{ |x| (x - 2)**2 + (x - 5)**2 + (x - 100)**2 } fd = proc{ |x| [ 2 * (x[0] - 2) , 2 * (x[1] - 5) , 2 * (x[2] - 100) ] } min = Minimization::PolakRibiere.minimize(f, fd, [0, 0, 0]) min.x_minimum min.f_minimum
Constant Summary
Constants inherited from NonLinearConjugateGradientMinimizer
NonLinearConjugateGradientMinimizer::EPSILON_DEFAULT, NonLinearConjugateGradientMinimizer::MAX_ITERATIONS_DEFAULT
Instance Attribute Summary
Attributes inherited from NonLinearConjugateGradientMinimizer
#converging, #f_minimum, #initial_step, #x_minimum
Class Method Summary collapse
-
.minimize(f, fd, start_point) ⇒ Object
Convenience method to minimize using Polak Ribiere method == Parameters: * f: Function to minimize * fd: First derivative of f * start_point: Starting point == Usage: f = proc{ |x| (x - 2)**2 + (x - 5)**2 + (x - 100)**2 } fd = proc{ |x| [ 2 * (x[0] - 2) , 2 * (x[1] - 5) , 2 * (x[2] - 100) ] } min = Minimization::PolakRibiere.minimize(f, fd, [0, 0, 0]).
Instance Method Summary collapse
-
#initialize(f, fd, start_point) ⇒ PolakRibiere
constructor
A new instance of PolakRibiere.
Methods inherited from NonLinearConjugateGradientMinimizer
#converged, #f, #find_upper_bound, #gradient, #iterate, #line_search_func, #precondition, #solve
Constructor Details
#initialize(f, fd, start_point) ⇒ PolakRibiere
Returns a new instance of PolakRibiere.
261 262 263 |
# File 'lib/multidim/conjugate_gradient.rb', line 261 def initialize(f, fd, start_point) super(f, fd, start_point, :polak_ribiere) end |
Class Method Details
.minimize(f, fd, start_point) ⇒ Object
Convenience method to minimize using Polak Ribiere method
Parameters:
- f: Function to minimize
- fd: First derivative of f
- start_point: Starting point
Usage:
f = proc{ |x| (x - 2)**2 + (x - 5)**2 + (x - 100)**2 } fd = proc{ |x| [ 2 * (x[0] - 2) , 2 * (x[1] - 5) , 2 * (x[2] - 100) ] } min = Minimization::PolakRibiere.minimize(f, fd, [0, 0, 0])
275 276 277 278 279 280 281 |
# File 'lib/multidim/conjugate_gradient.rb', line 275 def self.minimize(f, fd, start_point) min = Minimization::PolakRibiere.new(f, fd, start_point) while(min.converging?) min.iterate end return min end |