Skip to content

Commit 06c87ec

Browse files
author
Benjamin Chrétien
committed
FunctionPool: use pure Python implementation for now.
1 parent 0f82ad4 commit 06c87ec

1 file changed

Lines changed: 15 additions & 4 deletions

File tree

src/roboptim/core/__init__.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,14 +121,25 @@ class PyFunctionPool(PyDifferentiableFunction):
121121
def __init__ (self, callback, functions, name = ""):
122122
self._callback = callback
123123
self._functions = functions
124-
self._function = FunctionPool (callback._function,
125-
[f._function for f in functions],
126-
self._formatName(name))
124+
inSize = callback.inputSize ()
125+
outSize = sum([f.outputSize() for f in functions])
126+
self._function = DifferentiableFunction (inSize, outSize,
127+
self._formatName(name))
127128
bindCompute (self._function,
128129
lambda result, x: self.impl_compute (result, x))
129130

131+
bindJacobian (self._function,
132+
lambda result, x: self.impl_jacobian (result, x))
133+
130134
def impl_compute (self, result, x):
131-
compute (self._function, result, x)
135+
# Run callback
136+
self._callback (x)
137+
# Fill result
138+
pos = 0
139+
for f in self._functions:
140+
size = f.outputSize ()
141+
result[pos:pos+size] = f (x)
142+
pos += size
132143

133144
def impl_gradient (self, result, x, functionId):
134145
raise NotImplementedError

0 commit comments

Comments
 (0)