How to pass multiple constraints in NLP solver

978 views
Skip to first unread message

Nitish Garg

unread,
May 22, 2017, 1:21:07 PM5/22/17
to CasADi
How to pass multiple inequality constraints to NLP solver?

I was trying the following code (error is shown below)

from casadi import SX, nlpsol

# Initialize problem
x = SX.sym('x', 2)

# Objective function
# Min: -(x^2 + y^2)
f = -(x[0]**2 + x[1]**2)

# Constraints
# x + y <= 10
# x <= 5
# 0 <= x,y <= 100
g = [ x[0] + x[1] , x[0] ]
solver_params = {
   "ubg": [10, 5],
   "lbx": [0, 0],
   "ubx": [100, 100],
   "x0": [2, 2]
}

# Solve
solver = nlpsol("solver", "ipopt", {'x':x, 'f':f, 'g':g}, {})
sol = solver(**solver_params)

# Print solution
print "-----"
print "objective at solution = ", sol["f"]
print "primal solution = ", sol["x"]

Below is the error I got on running the above code:

Traceback (most recent call last):
 File "casadi-test.py", line 22, in <module>
   solver = nlpsol("solver", "ipopt", {'x':x, 'f':f, 'g':g}, {})
 File "/u/gargnit/programming/casadi/pybuild/casadi/casadi.py", line 8416, in nlpsol
   return _casadi.nlpsol(*args)
NotImplementedError: Wrong number or type of arguments for overloaded function 'nlpsol'.
 Possible C/C++ prototypes are:
   casadi::nlpsol(std::string const &,std::string const &,casadi::SXDict const &,casadi::Dict const &)
   casadi::nlpsol(std::string const &,std::string const &,casadi::MXDict const &,casadi::Dict const &)
   casadi::nlpsol(std::string const &,std::string const &,std::string const &,casadi::Dict const &)
   casadi::nlpsol(std::string const &,std::string const &,casadi::Importer const &,casadi::Dict const &)
   casadi::nlpsol(std::string const &,std::string const &,casadi::NlpBuilder const &,casadi::Dict const &)

Joris Gillis

unread,
May 22, 2017, 1:52:03 PM5/22/17
to CasADi
g = vertcat(constr1,constr2)
Reply all
Reply to author
Forward
0 new messages