105 template<
typename T1>
106 int casadi_ccopt_constr_jac_structure(libmad_int* I, libmad_int* J,
void* user_data)
109 const casadi_int *colind, *row;
114 casadi_int ncol = p->sp_a[1];
118 for (cc=0; cc<ncol; ++cc) {
119 for (el=colind[cc]; el<colind[cc+1]; ++el) {
129 template<
typename T1>
130 int casadi_ccopt_lag_hess_structure(libmad_int* I, libmad_int* J,
void* user_data)
133 const casadi_int *colind, *row;
138 casadi_int ncol = p->sp_h[1];
142 for (cc=0; cc<ncol; ++cc) {
143 for (el=colind[cc]; el<colind[cc+1]; ++el) {
153 template<
typename T1>
154 int casadi_ccopt_eval_constr_jac(
const T1* w, T1* res,
void* user_data) {
159 d_oracle->
arg[0] = w;
160 d_oracle->
arg[1] = d_nlp->p;
161 d_oracle->
res[0] = res;
163 return calc_function(&d->
prob->nlp_jac_g, d_oracle);
167 template<
typename T1>
168 int casadi_ccopt_eval_constr(
const T1* w, T1* res,
void* user_data) {
173 d_oracle->
arg[0] = w;
174 d_oracle->
arg[1] = d_nlp->p;
175 d_oracle->
res[0] = res;
177 return calc_function(&d->
prob->nlp_g, d_oracle);
181 template<
typename T1>
182 int casadi_ccopt_eval_obj_grad(
const T1* w, T1* res,
void* user_data) {
190 d_oracle->
arg[0] = w;
191 d_oracle->
arg[1] = d_nlp->p;
192 d_oracle->
res[0] = res;
193 return calc_function(&d->
prob->nlp_grad_f, d_oracle);
197 template<
typename T1>
198 int casadi_ccopt_eval_obj(
const T1* w, T1* res,
void* user_data) {
206 d_oracle->
arg[0] = w;
207 d_oracle->
arg[1] = d_nlp->p;
208 d_oracle->
res[0] = res;
209 return calc_function(&d->
prob->nlp_f, d_oracle);
213 template<
typename T1>
214 int casadi_ccopt_eval_lag_hess(T1 objective_scale,
const T1* w,
const T1* lam,
215 T1* res,
void* user_data){
221 d_oracle->
arg[0] = w;
222 d_oracle->
arg[1] = d_nlp->p;
223 d_oracle->
arg[2] = &objective_scale;
224 d_oracle->
arg[3] = lam;
225 d_oracle->
res[0] = res;
227 return calc_function(&d->
prob->nlp_hess_l, d_oracle);
240 template<
typename T1>
248 template<
typename T1>
250 ccopt_relaxation_delete_solver(d->
solver);
252 ccopt_relaxation_delete_stats(d->
stats);
254 libmad_delete_options_dict(d->
nlp_opts);
255 libmad_delete_options_dict(d->
mpcc_opts);
259 template<
typename T1>
260 void casadi_ccopt_work(
const casadi_ccopt_prob<T1>* p, casadi_int* sz_arg, casadi_int* sz_res, casadi_int* sz_iw, casadi_int* sz_w) {
261 casadi_nlpsol_work(p->
nlp, sz_arg, sz_res, sz_iw, sz_w);
264 *sz_w = casadi_max(*sz_w, 2*(p->
nlp->nx+p->
nlp->ng));
268 template<
typename T1>
269 void casadi_ccopt_set_work(
casadi_ccopt_data<T1>* d,
const T1*** arg, T1*** res, casadi_int** iw, T1** w) {
278 template<
typename T1>
287 ret = libmad_nlpmodel_create(&(d->
nlp_model),
289 p_nlp->
nx, p_nlp->
ng,
291 casadi_ccopt_constr_jac_structure<T1>,
292 casadi_ccopt_lag_hess_structure<T1>,
293 casadi_ccopt_eval_obj<T1>,
294 casadi_ccopt_eval_constr<T1>,
295 casadi_ccopt_eval_obj_grad<T1>,
296 casadi_ccopt_eval_constr_jac<T1>,
297 casadi_ccopt_eval_lag_hess<T1>,
303 ret = libmad_nlpmodel_set_numerics(d->
nlp_model,
304 d_nlp->
z, d_nlp->
lam + p_nlp->
nx,
309 ret = libmad_mpccmodel_create(&(d->
mpcc_model),
323 template<
typename T1>
337 ccopt_relaxation_get_solution(d->
stats, d_nlp->
z);
339 ccopt_relaxation_get_bound_multipliers(d->
stats, d_nlp->
lam);
341 ccopt_relaxation_get_constraints(d->
stats, d_nlp->
z + p_nlp->
nx);
343 ccopt_relaxation_get_multipliers(d->
stats, d_nlp->
lam + p_nlp->
nx);
346 ccopt_relaxation_get_success(d->
stats, &(success_b));
const casadi_ccopt_prob< T1 > * prob
const libmad_int * cctypes
casadi_nlpsol_data< T1 > * nlp
int unified_return_status
RelaxationSolver * solver
const libmad_int * ind_cc2
CCOptExecutionStats * stats
const libmad_int * ind_cc1
OracleCallback nlp_grad_f
OracleCallback nlp_hess_l
const casadi_nlpsol_prob< T1 > * nlp