// Copyright (C) 2015 - IIT Bombay - FOSSEE // // This file must be used under the terms of the CeCILL. // This source file is licensed as described in the file COPYING, which // you should have received as part of this distribution. The terms // are also available at // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt // Author: R.Vidyadhar & Vignesh Kannan // Organization: FOSSEE, IIT Bombay // Email: toolbox@scilab.in #include "minuncNLP.hpp" #include "sci_iofunc.hpp" extern "C" { #include #include #include #include #include #include #include using namespace std; using namespace Ipopt; minuncNLP::~minuncNLP() { if(finalX_) delete[] finalX_; } //get NLP info such as number of variables,constraints,no.of elements in jacobian and hessian to allocate memory bool minuncNLP::get_nlp_info(Index& n, Index& m, Index& nnz_jac_g, Index& nnz_h_lag, IndexStyleEnum& index_style) { finalGradient_ = (double*)malloc(sizeof(double) * numVars_ * 1); finalHessian_ = (double*)malloc(sizeof(double) * numVars_ * numVars_); n=numVars_; // Number of variables m=numConstr_; // Number of constraints nnz_jac_g = 0; // No. of elements in Jacobian of constraints nnz_h_lag = n*(n+1)/2; // No. of elements in lower traingle of Hessian of the Lagrangian. index_style=C_STYLE; // Index style of matrices return true; } //get variable and constraint bound info bool minuncNLP::get_bounds_info(Index n, Number* x_l, Number* x_u, Index m, Number* g_l, Number* g_u) { unsigned int i; for(i=0;i