Class: OpenCLMinimization::NewtonRampsonMinimizer

Inherits:
Object
• Object
show all
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

• writeonly

Sets the attribute epsilon.

Returns the value of attribute f_minimum.

• writeonly

Sets the attribute golden.

• writeonly

Sets the attribute max_iterations.

Returns the value of attribute x_minimum.

• constructor

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

Parameters:

• value

the value to set the attribute epsilon to.

 ``` 101 102 103``` ```# File 'lib/opencl/opencl_minimization.rb', line 101 def epsilon=(value) @epsilon = value end```

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

Parameters:

• value

the value to set the attribute golden to.

 ``` 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

Parameters:

• value

the value to set the attribute max_iterations to.

 ``` 100 101 102``` ```# File 'lib/opencl/opencl_minimization.rb', line 100 def max_iterations=(value) @max_iterations = value end```

 ``` 97 98 99``` ```# File 'lib/opencl/opencl_minimization.rb', line 97 def x_minimum @x_minimum end```
 ``` 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```