Skip to content

Commit a3111c5

Browse files
author
Benjamin Chrétien
committed
Reorganize files + add iteration callback support.
1 parent 4e17dff commit a3111c5

7 files changed

Lines changed: 1297 additions & 385 deletions

File tree

src/roboptim/core/__init__.py

Lines changed: 58 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,13 +180,55 @@ def minimum (self):
180180
else:
181181
raise TypeError ("unhandled case")
182182

183+
def setIterationCallback (self, callback):
184+
setIterationCallback (self._solver, callback._callback)
185+
183186
@property
184187
def parameters(self):
185-
return getParameters (self._solver)
188+
return getSolverParameters (self._solver)
186189

187190
@parameters.setter
188191
def parameters(self, value):
189-
setParameters (self._solver, value)
192+
setSolverParameters (self._solver, value)
193+
194+
class PySolverState(object):
195+
def __init__(self, state):
196+
self._solverState = state
197+
198+
def __str__ (self):
199+
return strSolverState (self._solverState)
200+
201+
@property
202+
def x(self):
203+
return getSolverStateX (self._solverState)
204+
205+
@x.setter
206+
def x(self, value):
207+
setSolverStateX (self._solverState, numpy.array(value))
208+
209+
@property
210+
def cost(self):
211+
return getSolverStateCost (self._solverState)
212+
213+
@cost.setter
214+
def cost(self, value):
215+
setSolverStateCost (self._solverState, value)
216+
217+
@property
218+
def constraintViolation(self):
219+
return getSolverStateConstraintViolation (self._solverState)
220+
221+
@constraintViolation.setter
222+
def constraintViolation(self, value):
223+
setSolverStateConstraintViolation (self._solverState, value)
224+
225+
@property
226+
def parameters(self):
227+
return getSolverStateParameters (self._solverState)
228+
229+
@parameters.setter
230+
def parameters(self, value):
231+
setSolverStateParameters (self._solverState, value)
190232

191233
class PyResult(object):
192234
def __init__(self, _result):
@@ -250,3 +292,17 @@ def error(self):
250292
def lastState(self):
251293
if self._dict["lastState"]:
252294
return self._dict["lastState"]
295+
296+
297+
class PySolverCallback(object):
298+
__metaclass__ = abc.ABCMeta
299+
300+
def __init__ (self, pb):
301+
self._callback = SolverCallback (pb)
302+
bindSolverCallback (self._callback,
303+
lambda pb, state:
304+
self.callback (pb, PySolverState(state)))
305+
306+
@abc.abstractmethod
307+
def callback (self, pb, state):
308+
return

0 commit comments

Comments
 (0)