Class: OpenCLMinimization::NewtonRampsonMinimizer
- Inherits:
-
Object
- Object
- OpenCLMinimization::NewtonRampsonMinimizer
- Defined in:
- lib/opencl/opencl_minimization.rb
Overview
Classic Newton-Raphson minimization method.
Requires first and second derivative
== Usage
n = 3
expected_point = [1, 100, 1000]
f = "(x-3)(x-3)+5"
fd = "2(x-3)"
fdd = "2"
min = OpenCLMinimization::NewtonRampsonMinimizer.new(n, expected_point, f, fd, fdd)
min.minimize
min.x_minimum
min.f_minimum
Instance Attribute Summary collapse
-
#epsilon ⇒ Object
writeonly
Sets the attribute epsilon.
-
#f_minimum ⇒ Object
readonly
Returns the value of attribute f_minimum.
-
#golden ⇒ Object
writeonly
Sets the attribute golden.
-
#max_iterations ⇒ Object
writeonly
Sets the attribute max_iterations.
-
#x_minimum ⇒ Object
readonly
Returns the value of attribute x_minimum.
Instance Method Summary collapse
-
#initialize(n, expected_point, f, fd, fdd) ⇒ NewtonRampsonMinimizer
constructor
== Parameters: * n: Number of Jobs * expected_point: Initial point * f: Original function * fd: First derivative function string * fdd: Second derivative function string.
- #minimize ⇒ Object
Constructor Details
#initialize(n, expected_point, f, fd, fdd) ⇒ NewtonRampsonMinimizer
== Parameters:
- n: Number of Jobs
- expected_point: Initial point
- f: Original function
- fd: First derivative function string
- fdd: Second derivative function string
111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/opencl/opencl_minimization.rb', line 111 def initialize(n, expected_point, f, fd, fdd) @n = n @expected_point = expected_point @f = f @fd = fd @fdd = fdd @max_iterations = MAX_ITERATIONS_DEFAULT @epsilon = EPSILON_DEFAULT @golden = GOLDEN_DEFAULT @sqrt_epsilon = SQRT_EPSILON_DEFAULT end |
Instance Attribute Details
#epsilon=(value) ⇒ Object (writeonly)
Sets the attribute epsilon
101 102 103 |
# File 'lib/opencl/opencl_minimization.rb', line 101 def epsilon=(value) @epsilon = value end |
#f_minimum ⇒ Object (readonly)
Returns the value of attribute f_minimum.
98 99 100 |
# File 'lib/opencl/opencl_minimization.rb', line 98 def f_minimum @f_minimum end |
#golden=(value) ⇒ Object (writeonly)
Sets the attribute golden
102 103 104 |
# File 'lib/opencl/opencl_minimization.rb', line 102 def golden=(value) @golden = value end |
#max_iterations=(value) ⇒ Object (writeonly)
Sets the attribute max_iterations
100 101 102 |
# File 'lib/opencl/opencl_minimization.rb', line 100 def max_iterations=(value) @max_iterations = value end |
#x_minimum ⇒ Object (readonly)
Returns the value of attribute x_minimum.
97 98 99 |
# File 'lib/opencl/opencl_minimization.rb', line 97 def x_minimum @x_minimum end |
Instance Method Details
#minimize ⇒ Object
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/opencl/opencl_minimization.rb', line 123 def minimize # create Buffers for inputs and outputs expected_buffer = FFI::Buffer.alloc_inout(:pointer, @n) x_buffer = FFI::Buffer.alloc_inout(:pointer, @n) f_buffer = FFI::Buffer.alloc_inout(:pointer, @n) # set inputs expected_buffer.write_array_of_float(@expected_point) # call minimizer OpenCLMinimization::opencl_minimize(@n, nil, expected_buffer, nil, 1, @f, @fd, @fdd, x_buffer, f_buffer, 0, @max_iterations, @epsilon, @golden, @sqrt_epsilon, PATH_TO_KERNEL) @x_minimum = Array.new(@n) @f_minimum = Array.new(@n) # read results @x_minimum = x_buffer.read_array_of_float(@n) @f_minimum = f_buffer.read_array_of_float(@n) end |