@@ -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
191233class 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