from casadi import *
class test(Callback):
def __init__(self, name, opts = {}):
Callback.__init__(self)
self.construct(name, opts)
def get_n_in(self): return 1
def get_n_out(self): return 1
def init(self):
print 'initialising object'
def eval(self, arg):
x = arg[0]
f = sin(x)
return [f]
def has_jacobian(self): return True
def get_jacobian(self,args):
x = arg[0]
[f] = self.eval(arg)
jac = cos(x)
return [jac, f]
my_sin = test('my_sin')
x = SX.sym('x')
nlp = {'x':x,'f':-my_sin(x)}
solver = nlpsol('solver',"ipopt",nlp)
arg = {}
arg['lbx'] = 0
arg['ubx'] = 3.14
sol = solver(**arg)
In [1]: run test.py
initialising object
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
/usr/lib/python2.7/dist-packages/IPython/utils/py3compat.pyc in execfile(fname, *where)
202 else:
203 filename = fname
--> 204 __builtin__.execfile(filename, *where)
/home/mzanon/data/git/communication_mpc/papers/comm_aware_rob_mpc/code/test.py in <module>()
37
38
---> 39 nlp = {'x':x,'f':-my_sin(x)}
40
41 solver = nlpsol('solver',"ipopt",nlp)
/home/mzanon/src/casadi-3/casadi/casadi.pyc in __call__(self, *args, **kwargs)
12576 if len(args)>0:
12577 # Ordered inputs -> return tuple
> 12578 ret = self.call(args)
12579 if len(ret)==0:
12580 return None
/home/mzanon/src/casadi-3/casadi/casadi.pyc in call(self, *args)
11643
11644 """
> 11645 return _casadi.Function_call(self, *args)
11646
11647
RuntimeError: on line 1376 of file "/home/travis/build/casadi/binaries/casadi/casadi/core/function/function_internal.cpp"
'eval_sx' not defined for N6casadi16CallbackInternalE
from casadi import *
class test0(Callback):
def __init__(self, name, opts = {}):
Callback.__init__(self)
self.construct(name, opts)
def get_n_in(self): return 1
def get_n_out(self): return 2
def get_sparsity_in(self,n_in): return Sparsity.dense(2,1)
def get_sparsity_out(self,n_out):
if n_out == 0: return Sparsity.dense(1,2)
if n_out == 1: return Sparsity.dense(1,1)
def init(self):
print 'initialising object'
def eval(self, arg):
x = arg[0]
f = sin(x[0])
jac = horzcat(cos(x[0]),0)
return [jac, f]
def has_jacobian(self): return True
def get_jacobian(self,name,opts):
return Function('jacobian',[x],[DM(2,2),DM(2,1)])
class test(Callback):
def __init__(self, name, opts = {}):
Callback.__init__(self)
self.construct(name, opts)
def get_n_in(self): return 1
def get_n_out(self): return 1
def get_sparsity_in(self,n_in): return Sparsity.dense(2,1)
def get_sparsity_out(self,n_out): return Sparsity.dense(1,1)
def init(self):
self.low_level = test0('low_level')
def eval(self, arg):
[jac,f] = self.low_level(arg)
return [f]
def has_jacobian(self): return True
def get_jacobian(self,name,opts):
x = MX.sym('x',2,1)
jacSym = self.low_level(x)[0]
return Function('jacobian',[x],[jacSym])
my_sin = test('my_sin')
x = MX.sym('x',2,1)
nlp = {'x':x,'f':-my_sin(x)}
solver = nlpsol('solver',"ipopt",nlp)
arg = {}
arg['lbx'] = 0
arg['ubx'] = 3.14
sol = solver(**arg)
In [1]: run test2.py
initialising object
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
/Users/zmario/data/git/projects/communication_mpc/papers/comm_aware_rob_mpc/code/test2.py in <module>()
67 nlp = {'x':x,'f':-my_sin(x)}
68
---> 69 solver = nlpsol('solver',"ipopt",nlp)
70
71 arg = {}
/Users/zmario/src/casadi-py27-np1.9.1-v3.1.1/casadi/casadi.pyc in nlpsol(*args)
15086
15087 """
> 15088 return _casadi.nlpsol(*args)
15089
15090 def nlpsol_in(*args):
RuntimeError: The assertion "ret.n_out()==1" on line 1673 of file "/Users/travis/build/casadi/binaries/casadi/casadi/core/function/function_internal.cpp" failed.
Please notify the CasADi developers.
from casadi import *
class test0(Callback):
def __init__(self, name, opts = {}):
Callback.__init__(self)
self.construct(name, opts)
def get_n_in(self): return 1
def get_n_out(self): return 2
def get_sparsity_in(self,n_in): return Sparsity.dense(2,1)
def get_sparsity_out(self,n_out):
if n_out == 0: return Sparsity.dense(1,2)
if n_out == 1: return Sparsity.dense(1,1)
def init(self):
print 'initialising object'
def eval(self, arg):
x = arg[0]
f = sin(x[0])
jac = horzcat(cos(x[0]),0)
return [jac, f]
def has_jacobian(self): return True
def get_jacobian(self,name,opts):
return Function('jacobian',[x],[vertcat(DM(2,2),DM(1,2))])
class test(Callback):
def __init__(self, name, opts = {}):
Callback.__init__(self)
self.construct(name, opts)
def get_n_in(self): return 1
def get_n_out(self): return 1
def get_sparsity_in(self,n_in): return Sparsity.dense(2,1)
def get_sparsity_out(self,n_out): return Sparsity.dense(1,1)
def init(self):
self.low_level = test0('low_level')
def eval(self, arg):
[jac,f] = self.low_level(arg[0])
return [f]
def has_jacobian(self): return True
def get_jacobian(self,name,opts):
x = MX.sym('x',2,1)
jacSym = self.low_level(x)[0]
return Function('jacobian',[x],[jacSym])
my_sin = test('my_sin')
x = MX.sym('x',2,1)
nlp = {'x':x,'f':-my_sin(x)}
solver = nlpsol('solver',"ipopt",nlp)
arg = {}
arg['lbx'] = 0
arg['ubx'] = 3.14
sol = solver(**arg)
nlp2 = {'x':x,'f':-sin(x[0])}
solver2 = nlpsol('solver',"ipopt",nlp2)
sol2 = solver2(**arg)
print sol['x']-sol2['x']
nlp = {'x':x,'f':-my_sin(x),'g':x[1]}arg['lbg'] = 1
arg['ubg'] = 1 def get_jacobian(self,name,opts):
print('getting jacobian')
return Function('jacobian',[x],[vertcat(DM.eye(2),DM(1,2))],{'verbose': True})opts ={}
opts['ipopt.hessian_approximation'] = 'limited-memory'
solver = nlpsol("solver", "ipopt", nlp, opts)
from casadi import *
class test0(Callback):
def __init__(self, name, opts = {}):
Callback.__init__(self)
self.construct(name, opts)
def get_n_in(self): return 2
def get_n_out(self): return 2
def get_sparsity_in(self,n_in):
if n_in == 0: return Sparsity.dense(2,1)
if n_in == 1: return Sparsity.dense(1,1)
def get_sparsity_out(self,n_out):
if n_out == 0: return Sparsity.dense(1,3)
if n_out == 1: return Sparsity.dense(1,1)
def init(self):
print 'initialising object'
def eval(self, arg):
x = arg[0]
p = arg[1]
f = sin(x[0]+p)
jac = horzcat(cos(x[0]+p),0,0)
return [jac, f]
def has_jacobian(self): return True
def get_jacobian(self,name,opts):
x = MX.sym('x',2,1)
p = MX.sym('p',1,1)
return Function('jacobian',[x,p],[vertcat(DM.eye(3),DM(1,3))])
class test(Callback):
def __init__(self, name, opts = {}):
Callback.__init__(self)
self.construct(name, opts)
def get_n_in(self): return 2
def get_n_out(self): return 1
def get_sparsity_in(self,n_in):
if n_in == 0: return Sparsity.dense(2,1)
if n_in == 1: return Sparsity.dense(1,1)
def get_sparsity_out(self,n_out): return Sparsity.dense(1,1)
def init(self):
self.low_level = test0('low_level')
def eval(self, arg):
[jac,f] = self.low_level(arg[0],arg[1])
return [f]
def has_jacobian(self): return True
def get_jacobian(self,name,opts):
x = MX.sym('x',2,1)
p = MX.sym('p',1,1)
jacSym = self.low_level(x,p)[0]
return Function('jacobian',[x,p],[jacSym])
my_sin = test('my_sin')
x = MX.sym('x',2,1)
p = MX.sym('p',1,1)
nlp = {'x':x,'p':p,'f':-my_sin(x,p),'g':x[1]}
solver = nlpsol('solver',"ipopt",nlp)
pnum = 0.5
arg = {}
arg['lbx'] = 0
arg['ubx'] = 3.14
arg['lbg'] = 1
arg['ubg'] = 1
arg['p'] = pnum
sol = solver(**arg)
nlp2 = {'x':x,'f':-sin(x[0]+pnum),'g':x[1]}
solver2 = nlpsol('solver',"ipopt",nlp2)
sol2 = solver2(**arg)
print sol['x']-sol2['x']