Class: OpenCLMinimization::BisectionMinimizer
- Inherits:
-
GodlSectionMinimizer
- Object
- GodlSectionMinimizer
- OpenCLMinimization::BisectionMinimizer
- Defined in:
- lib/opencl/opencl_minimization.rb
Overview
= Bisection Minimizer. Basic minimization algorithm. Slow, but robust. See Unidimensional for methods. == Usage. n = 3 start_point = [1, 3, 5] expected_point = [1.5, 3.5, 5.5] end_point = [3, 5, 7] f = "pow((x-2)(x-4)(x-6), 2)+1" min = OpenCLMinimization::BisectionMinimizer.new(n, start_point, expected_point, end_point, f) min.minimize min.x_minimum min.f_minimum
Instance Attribute Summary
Attributes inherited from GodlSectionMinimizer
#epsilon, #f_minimum, #golden, #max_iterations, #x_minimum
Instance Method Summary collapse
Methods inherited from GodlSectionMinimizer
Constructor Details
This class inherits a constructor from OpenCLMinimization::GodlSectionMinimizer
Instance Method Details
#minimize ⇒ Object
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/opencl/opencl_minimization.rb', line 160 def minimize # create Buffers for inputs and outputs start_buffer = FFI::Buffer.alloc_inout(:pointer, @n) expected_buffer = FFI::Buffer.alloc_inout(:pointer, @n) end_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 start_buffer.write_array_of_float(@start_point) expected_buffer.write_array_of_float(@expected_point) end_buffer.write_array_of_float(@end_point) # call minimizer OpenCLMinimization::opencl_minimize(@n, start_buffer, expected_buffer, end_buffer, 2, @f, "", "", 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 |