// Copyright (C) 2016 - 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: Harpreet Singh, Pranav Deshpande and Akshay Miterani // Organization: FOSSEE, IIT Bombay // Email: toolbox@scilab.in #include "QuadTMINLP.hpp" #include "IpIpoptData.hpp" extern "C"{ #include } // Go to http://coin-or.org/Ipopt and http://coin-or.org/Bonmin for the details of the below methods // Set the type of every variable - CONTINUOUS or INTEGER bool QuadTMINLP::get_variables_types(Index n, VariableType* var_types) { n = numVars_; for(int i=0; i < n; i++) var_types[i] = CONTINUOUS; for(int i=0 ; i < intconSize_ ; ++i) var_types[(int)(intcon_[i]-1)] = INTEGER; return true; } // The linearity of the variables - LINEAR or NON_LINEAR bool QuadTMINLP::get_variables_linearity(Index n, Ipopt::TNLP::LinearityType* var_types) { /* n = numVars_; for(int i = 0; i < n; i++) var_types[i] = Ipopt::TNLP::LINEAR; */ return true; } // The linearity of the constraints - LINEAR or NON_LINEAR bool QuadTMINLP::get_constraints_linearity(Index m, Ipopt::TNLP::LinearityType* const_types) { m = numCons_; for(int i = 0; i < m; i++) const_types[i] = Ipopt::TNLP::LINEAR; return true; } // Get MINLP info such as the number of variables,constraints,no.of elements in jacobian and hessian to allocate memory bool QuadTMINLP::get_nlp_info(Index& n, Index&m, Index& nnz_jac_g, Index& nnz_h_lag, TNLP::IndexStyleEnum& index_style) { n=numVars_; // Number of variables m=numCons_; // Number of constraints nnz_jac_g = n*m; // 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=TNLP::C_STYLE; // Index style of matrices return true; } // Get the variables and constraints bound info bool QuadTMINLP::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