summaryrefslogtreecommitdiff
path: root/build/cpp
diff options
context:
space:
mode:
authorHarpreet2016-09-03 00:34:27 +0530
committerHarpreet2016-09-03 00:34:27 +0530
commit4b64cf486f5c999fd8167758cae27839f3b50848 (patch)
treed9d06639fb7fa61aef59be0363655e4747105ec7 /build/cpp
parentd19794fb80a271a4c885ed90f97cfc12baa012f2 (diff)
downloadFOSSEE-Optim-toolbox-development-4b64cf486f5c999fd8167758cae27839f3b50848.tar.gz
FOSSEE-Optim-toolbox-development-4b64cf486f5c999fd8167758cae27839f3b50848.tar.bz2
FOSSEE-Optim-toolbox-development-4b64cf486f5c999fd8167758cae27839f3b50848.zip
Structure updated and intqpipopt files added
Diffstat (limited to 'build/cpp')
-rw-r--r--build/cpp/cpp_intfminbnd.cpp172
-rw-r--r--build/cpp/cpp_intfmincon.cpp189
-rw-r--r--build/cpp/cpp_intfminunc.cpp174
-rw-r--r--build/cpp/minbndTMINLP.hpp114
-rw-r--r--build/cpp/minconTMINLP.hpp124
-rw-r--r--build/cpp/minuncTMINLP.hpp113
-rw-r--r--build/cpp/sci_iofunc.cpp333
-rw-r--r--build/cpp/sci_iofunc.hpp25
-rw-r--r--build/cpp/sci_minbndTMINLP.cpp218
-rw-r--r--build/cpp/sci_minconTMINLP.cpp324
-rw-r--r--build/cpp/sci_minconTMINLP.cpp~324
-rw-r--r--build/cpp/sci_minuncTMINLP.cpp237
12 files changed, 0 insertions, 2347 deletions
diff --git a/build/cpp/cpp_intfminbnd.cpp b/build/cpp/cpp_intfminbnd.cpp
deleted file mode 100644
index 4914111..0000000
--- a/build/cpp/cpp_intfminbnd.cpp
+++ /dev/null
@@ -1,172 +0,0 @@
-// 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
-// Organization: FOSSEE, IIT Bombay
-// Email: toolbox@scilab.in
-
-#include "CoinPragma.hpp"
-#include "CoinTime.hpp"
-#include "CoinError.hpp"
-
-#include "BonOsiTMINLPInterface.hpp"
-#include "BonIpoptSolver.hpp"
-#include "minbndTMINLP.hpp"
-#include "BonCbc.hpp"
-#include "BonBonminSetup.hpp"
-
-#include "BonOACutGenerator2.hpp"
-#include "BonEcpCuts.hpp"
-#include "BonOaNlpOptim.hpp"
-
-#include "sci_iofunc.hpp"
-extern "C"
-{
-#include "call_scilab.h"
-#include <api_scilab.h>
-#include <Scierror.h>
-#include <BOOL.h>
-#include <localization.h>
-#include <sciprint.h>
-
-int cpp_intfminbnd(char *fname)
-{
- using namespace Ipopt;
- using namespace Bonmin;
-
- CheckInputArgument(pvApiCtx, 8, 8);
- CheckOutputArgument(pvApiCtx, 3, 3);
-
- // Input arguments
- Number *integertolerance=NULL, *maxnodes=NULL, *allowablegap=NULL, *cputime=NULL,*max_iter=NULL, *lb = NULL, *ub = NULL;
- static unsigned int nVars = 0;
- unsigned int temp1 = 0,temp2 = 0, iret = 0;
- int x0_rows, x0_cols,intconSize;
- Number *intcon = NULL,*options=NULL, *ifval=NULL;
-
- // Output arguments
- Number *fX = NULL, ObjVal=0,iteration=0,cpuTime=0,fobj_eval=0;
- Number dual_inf, constr_viol, complementarity, kkt_error;
- int rstatus = 0;
-
- if(getDoubleMatrixFromScilab(4, &x0_rows, &x0_cols, &lb))
- {
- return 1;
- }
-
- if(getDoubleMatrixFromScilab(5, &x0_rows, &x0_cols, &ub))
- {
- return 1;
- }
-
- // Getting intcon
- if (getDoubleMatrixFromScilab(6,&intconSize,&temp2,&intcon))
- {
- return 1;
- }
-
- //Initialization of parameters
- nVars=x0_rows;
- temp1 = 1;
- temp2 = 1;
-
- //Getting parameters
- if (getFixedSizeDoubleMatrixInList(7,2,temp1,temp2,&integertolerance))
- {
- return 1;
- }
- if (getFixedSizeDoubleMatrixInList(7,4,temp1,temp2,&maxnodes))
- {
- return 1;
- }
- if (getFixedSizeDoubleMatrixInList(7,6,temp1,temp2,&cputime))
- {
- return 1;
- }
- if (getFixedSizeDoubleMatrixInList(7,8,temp1,temp2,&allowablegap))
- {
- return 1;
- }
- if (getFixedSizeDoubleMatrixInList(7,10,temp1,temp2,&max_iter))
- {
- return 1;
- }
-
- SmartPtr<minbndTMINLP> tminlp = new minbndTMINLP(nVars,lb,ub,intconSize,intcon);
-
- BonminSetup bonmin;
- bonmin.initializeOptionsAndJournalist();
-
- bonmin.options()->SetStringValue("mu_oracle","loqo");
- bonmin.options()->SetNumericValue("bonmin.integer_tolerance", *integertolerance);
- bonmin.options()->SetIntegerValue("bonmin.node_limit", (int)*maxnodes);
- bonmin.options()->SetNumericValue("bonmin.time_limit", *cputime);
- bonmin.options()->SetNumericValue("bonmin.allowable_gap", *allowablegap);
- bonmin.options()->SetIntegerValue("bonmin.iteration_limit", (int)*max_iter);
-
- //Now initialize from tminlp
- bonmin.initialize(GetRawPtr(tminlp));
-
- //Set up done, now let's branch and bound
- try {
- Bab bb;
- bb(bonmin);//process parameter file using Ipopt and do branch and bound using Cbc
- }
- catch(TNLPSolver::UnsolvedError *E) {
- Scierror(999, "\nIpopt has failed to solve the problem!\n");
- }
- catch(OsiTMINLPInterface::SimpleError &E) {
- Scierror(999, "\nFailed to solve a problem!\n");
- }
- catch(CoinError &E) {
- Scierror(999, "\nFailed to solve a problem!\n");
- }
- rstatus=tminlp->returnStatus();
-
- if(rstatus==0 ||rstatus== 3)
- {
- fX = tminlp->getX();
- ObjVal = tminlp->getObjVal();
- if (returnDoubleMatrixToScilab(1, nVars, 1, fX))
- {
- return 1;
- }
-
- if (returnDoubleMatrixToScilab(2, 1, 1, &ObjVal))
- {
- return 1;
- }
-
- if (returnIntegerMatrixToScilab(3, 1, 1, &rstatus))
- {
- return 1;
- }
-
- }
- else
- {
- if (returnDoubleMatrixToScilab(1, 0, 0, fX))
- {
- return 1;
- }
-
- if (returnDoubleMatrixToScilab(2, 1, 1, &ObjVal))
- {
- return 1;
- }
-
- if (returnIntegerMatrixToScilab(3, 1, 1, &rstatus))
- {
- return 1;
- }
-
- }
-
- return 0;
- }
-}
-
diff --git a/build/cpp/cpp_intfmincon.cpp b/build/cpp/cpp_intfmincon.cpp
deleted file mode 100644
index d921128..0000000
--- a/build/cpp/cpp_intfmincon.cpp
+++ /dev/null
@@ -1,189 +0,0 @@
-// 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
-// Organization: FOSSEE, IIT Bombay
-// Email: toolbox@scilab.in
-
-#include "CoinPragma.hpp"
-#include "CoinTime.hpp"
-#include "CoinError.hpp"
-
-#include "BonOsiTMINLPInterface.hpp"
-#include "BonIpoptSolver.hpp"
-#include "minconTMINLP.hpp"
-#include "BonCbc.hpp"
-#include "BonBonminSetup.hpp"
-
-#include "BonOACutGenerator2.hpp"
-#include "BonEcpCuts.hpp"
-#include "BonOaNlpOptim.hpp"
-
-#include "sci_iofunc.hpp"
-extern "C"
-{
-#include "call_scilab.h"
-#include <api_scilab.h>
-#include <Scierror.h>
-#include <BOOL.h>
-#include <localization.h>
-#include <sciprint.h>
-
-int cpp_intfmincon(char *fname)
-{
- using namespace Ipopt;
- using namespace Bonmin;
-
- CheckInputArgument(pvApiCtx, 13, 13);
- CheckOutputArgument(pvApiCtx, 3, 3);
-
- // Input arguments
- Number *integertolerance=NULL, *maxnodes=NULL, *allowablegap=NULL, *cputime=NULL,*max_iter=NULL;
- Number *x0 = NULL, *lb = NULL, *ub = NULL,*conLb = NULL, *conUb = NULL,*LC = NULL;
- static unsigned int nVars = 0,nCons = 0;
- unsigned int temp1 = 0,temp2 = 0, iret = 0;
- int x0_rows, x0_cols,intconSize;
- Number *intcon = NULL,*options=NULL, *ifval=NULL;
-
- // Output arguments
- Number *fX = NULL, ObjVal=0,iteration=0,cpuTime=0,fobj_eval=0;
- Number dual_inf, constr_viol, complementarity, kkt_error;
- int rstatus = 0;
-
- if(getDoubleMatrixFromScilab(6, &nVars, &x0_cols, &x0))
- {
- return 1;
- }
-
- if(getDoubleMatrixFromScilab(7, &x0_rows, &x0_cols, &lb))
- {
- return 1;
- }
-
- if(getDoubleMatrixFromScilab(8, &x0_rows, &x0_cols, &ub))
- {
- return 1;
- }
-
- if(getDoubleMatrixFromScilab(9, &nCons, &x0_cols, &conLb))
- {
- return 1;
- }
-
- if(getDoubleMatrixFromScilab(10, &x0_rows, &x0_cols, &conUb))
- {
- return 1;
- }
-
- // Getting intcon
- if (getDoubleMatrixFromScilab(11,&intconSize,&temp2,&intcon))
- {
- return 1;
- }
-
- if (getDoubleMatrixFromScilab(13,&temp1,&temp2,&LC))
- {
- return 1;
- }
-
- //Initialization of parameters
- temp1 = 1;
- temp2 = 1;
-
- //Getting parameters
- if (getFixedSizeDoubleMatrixInList(12,2,temp1,temp2,&integertolerance))
- {
- return 1;
- }
- if (getFixedSizeDoubleMatrixInList(12,4,temp1,temp2,&maxnodes))
- {
- return 1;
- }
- if (getFixedSizeDoubleMatrixInList(12,6,temp1,temp2,&cputime))
- {
- return 1;
- }
- if (getFixedSizeDoubleMatrixInList(12,8,temp1,temp2,&allowablegap))
- {
- return 1;
- }
- if (getFixedSizeDoubleMatrixInList(12,10,temp1,temp2,&max_iter))
- {
- return 1;
- }
-
- SmartPtr<minconTMINLP> tminlp = new minconTMINLP(nVars,x0,lb,ub,(unsigned int)LC,nCons,conLb,conUb,intconSize,intcon);
-
- BonminSetup bonmin;
- bonmin.initializeOptionsAndJournalist();
- bonmin.options()->SetStringValue("mu_oracle","loqo");
- bonmin.options()->SetIntegerValue("bonmin.print_level",5);
- bonmin.options()->SetNumericValue("bonmin.integer_tolerance", *integertolerance);
- bonmin.options()->SetIntegerValue("bonmin.node_limit", (int)*maxnodes);
- bonmin.options()->SetNumericValue("bonmin.time_limit", *cputime);
- bonmin.options()->SetNumericValue("bonmin.allowable_gap", *allowablegap);
- bonmin.options()->SetIntegerValue("bonmin.iteration_limit", (int)*max_iter);
-
- //Now initialize from tminlp
- bonmin.initialize(GetRawPtr(tminlp));
-
- //Set up done, now let's branch and bound
- try {
- Bab bb;
- bb(bonmin);//process parameter file using Ipopt and do branch and bound using Cbc
- }
- catch(TNLPSolver::UnsolvedError *E) {
- }
- catch(OsiTMINLPInterface::SimpleError &E) {
- }
- catch(CoinError &E) {
- }
- rstatus=tminlp->returnStatus();
-
- if(rstatus==0 ||rstatus== 3)
- {
- fX = tminlp->getX();
- ObjVal = tminlp->getObjVal();
- if (returnDoubleMatrixToScilab(1, nVars, 1, fX))
- {
- return 1;
- }
-
- if (returnDoubleMatrixToScilab(2, 1, 1, &ObjVal))
- {
- return 1;
- }
-
- if (returnIntegerMatrixToScilab(3, 1, 1, &rstatus))
- {
- return 1;
- }
-
- }
- else
- {
- if (returnDoubleMatrixToScilab(1, 0, 0, fX))
- {
- return 1;
- }
-
- if (returnDoubleMatrixToScilab(2, 1, 1, &ObjVal))
- {
- return 1;
- }
-
- if (returnIntegerMatrixToScilab(3, 1, 1, &rstatus))
- {
- return 1;
- }
-
- }
-
- return 0;
- }
-}
-
diff --git a/build/cpp/cpp_intfminunc.cpp b/build/cpp/cpp_intfminunc.cpp
deleted file mode 100644
index 233ead3..0000000
--- a/build/cpp/cpp_intfminunc.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-// 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 "CoinPragma.hpp"
-#include "CoinTime.hpp"
-#include "CoinError.hpp"
-
-#include "BonOsiTMINLPInterface.hpp"
-#include "BonIpoptSolver.hpp"
-#include "minuncTMINLP.hpp"
-#include "BonCbc.hpp"
-#include "BonBonminSetup.hpp"
-
-#include "BonOACutGenerator2.hpp"
-#include "BonEcpCuts.hpp"
-#include "BonOaNlpOptim.hpp"
-
-#include "sci_iofunc.hpp"
-extern "C"
-{
-#include "call_scilab.h"
-#include <api_scilab.h>
-#include <Scierror.h>
-#include <BOOL.h>
-#include <localization.h>
-#include <sciprint.h>
-
-int cpp_intfminunc(char *fname)
-{
- using namespace Ipopt;
- using namespace Bonmin;
-
- CheckInputArgument(pvApiCtx, 8, 8); // We need total 12 input arguments.
- CheckOutputArgument(pvApiCtx, 3, 3); // 3 output arguments
-
- //Function pointers, input matrix(Starting point) pointer, flag variable
- int* funptr=NULL;
- double* x0ptr=NULL;
-
- // Input arguments
- Number *integertolerance=NULL, *maxnodes=NULL, *allowablegap=NULL, *cputime=NULL,*max_iter=NULL;
- static unsigned int nVars = 0,nCons = 0;
- unsigned int temp1 = 0,temp2 = 0, iret = 0;
- int x0_rows, x0_cols;
- double *intcon = NULL,*options=NULL, *ifval=NULL;
- int intconSize;
-
- // Output arguments
- double *fX = NULL, ObjVal=0,iteration=0,cpuTime=0,fobj_eval=0;
- double dual_inf, constr_viol, complementarity, kkt_error;
- int rstatus = 0;
- int int_fobj_eval, int_constr_eval, int_fobj_grad_eval, int_constr_jac_eval, int_hess_eval;
-
- //x0(starting point) matrix from scilab
- if(getDoubleMatrixFromScilab(4, &x0_rows, &x0_cols, &x0ptr))
- {
- return 1;
- }
-
- nVars=x0_rows;
-
- // Getting intcon
- if (getDoubleMatrixFromScilab(5,&intconSize,&temp2,&intcon))
- {
- return 1;
- }
-
- temp1 = 1;
- temp2 = 1;
-
- //Getting parameters
- if (getFixedSizeDoubleMatrixInList(6,2,temp1,temp2,&integertolerance))
- {
- return 1;
- }
- if (getFixedSizeDoubleMatrixInList(6,4,temp1,temp2,&maxnodes))
- {
- return 1;
- }
- if (getFixedSizeDoubleMatrixInList(6,6,temp1,temp2,&cputime))
- {
- return 1;
- }
- if (getFixedSizeDoubleMatrixInList(6,8,temp1,temp2,&allowablegap))
- {
- return 1;
- }
- if (getFixedSizeDoubleMatrixInList(6,10,temp1,temp2,&max_iter))
- {
- return 1;
- }
-
- SmartPtr<minuncTMINLP> tminlp = new minuncTMINLP(nVars, x0ptr, intconSize, intcon);
-
- BonminSetup bonmin;
- bonmin.initializeOptionsAndJournalist();
-
- // Here we can change the default value of some Bonmin or Ipopt option
- bonmin.options()->SetStringValue("mu_oracle","loqo");
- bonmin.options()->SetNumericValue("bonmin.integer_tolerance", *integertolerance);
- bonmin.options()->SetIntegerValue("bonmin.node_limit", (int)*maxnodes);
- bonmin.options()->SetNumericValue("bonmin.time_limit", *cputime);
- bonmin.options()->SetNumericValue("bonmin.allowable_gap", *allowablegap);
- bonmin.options()->SetIntegerValue("bonmin.iteration_limit", (int)*max_iter);
-
- //Now initialize from tminlp
- bonmin.initialize(GetRawPtr(tminlp));
-
- //Set up done, now let's branch and bound
- try {
- Bab bb;
- bb(bonmin);//process parameter file using Ipopt and do branch and bound using Cbc
- }
- catch(TNLPSolver::UnsolvedError *E) {
- //There has been a failure to solve a problem with Ipopt.
- Scierror(999, "\nIpopt has failed to solve the problem!\n");
- }
- catch(OsiTMINLPInterface::SimpleError &E) {
- Scierror(999, "\nFailed to solve a problem!\n");
- }
- catch(CoinError &E) {
- Scierror(999, "\nFailed to solve a problem!\n");
- }
- rstatus=tminlp->returnStatus();
- if(rstatus==0 ||rstatus== 3)
- {
- fX = tminlp->getX();
- ObjVal = tminlp->getObjVal();
- if (returnDoubleMatrixToScilab(1, nVars, 1, fX))
- {
- return 1;
- }
-
- if (returnDoubleMatrixToScilab(2, 1, 1, &ObjVal))
- {
- return 1;
- }
-
- if (returnIntegerMatrixToScilab(3, 1, 1, &rstatus))
- {
- return 1;
- }
-
- }
- else
- {
- if (returnDoubleMatrixToScilab(1, 0, 0, fX))
- {
- return 1;
- }
-
- if (returnDoubleMatrixToScilab(2, 1, 1, &ObjVal))
- {
- return 1;
- }
-
- if (returnIntegerMatrixToScilab(3, 1, 1, &rstatus))
- {
- return 1;
- }
- }
-
- return 0;
- }
-}
-
diff --git a/build/cpp/minbndTMINLP.hpp b/build/cpp/minbndTMINLP.hpp
deleted file mode 100644
index 581d5ce..0000000
--- a/build/cpp/minbndTMINLP.hpp
+++ /dev/null
@@ -1,114 +0,0 @@
-// 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
-// Organization: FOSSEE, IIT Bombay
-// Email: toolbox@scilab.in
-
-#ifndef minbndTMINLP_HPP
-#define minbndTMINLP_HPP
-
-#include "BonTMINLP.hpp"
-#include "IpTNLP.hpp"
-#include "call_scilab.h"
-
-using namespace Ipopt;
-using namespace Bonmin;
-
-class minbndTMINLP : public TMINLP
-{
- private:
-
- Index numVars_; //Number of input variables
-
- Index intconSize_;
-
- Number *lb_= NULL; //lb_ is a pointer to a matrix of size of 1*numVars_ with lower bound of all variables.
-
- Number *ub_= NULL; //ub_ is a pointer to a matrix of size of 1*numVars_ with upper bound of all variables.
-
- Number *finalX_= NULL; //finalX_ is a pointer to a matrix of size of 1*numVars_ with final value for the primal variables.
-
- Number finalObjVal_; //finalObjVal_ is a scalar with the final value of the objective.
-
- Number *intcon_ = NULL;
-
- int status_; //Solver return status
- minbndTMINLP(const minbndTMINLP&);
- minbndTMINLP& operator=(const minbndTMINLP&);
-
-public:
- // Constructor
- minbndTMINLP(Index nV, Number *lb, Number *ub, Index intconSize, Number *intcon):numVars_(nV),lb_(lb),ub_(ub),intconSize_(intconSize),intcon_(intcon),finalX_(0),finalObjVal_(1e20){ }
-
- /** default destructor */
- virtual ~minbndTMINLP();
-
- virtual bool get_variables_types(Index n, VariableType* var_types);
-
- virtual bool get_variables_linearity(Index n, Ipopt::TNLP::LinearityType* var_types);
-
- virtual bool get_constraints_linearity(Index m, Ipopt::TNLP::LinearityType* const_types);
-
- /** Method to return some info about the nlp */
- virtual bool get_nlp_info(Index& n, Index& m, Index& nnz_jac_g,
- Index& nnz_h_lag, TNLP::IndexStyleEnum& index_style);
-
- /** Method to return the bounds for my problem */
- virtual bool get_bounds_info(Index n, Number* x_l, Number* x_u,
- Index m, Number* g_l, Number* g_u);
-
- /** Method to return the starting point for the algorithm */
- virtual bool get_starting_point(Index n, bool init_x, Number* x,
- bool init_z, Number* z_L, Number* z_U,
- Index m, bool init_lambda,
- Number* lambda);
-
- /** Method to return the objective value */
- virtual bool eval_f(Index n, const Number* x, bool new_x, Number& obj_value);
-
- /** Method to return the gradient of the objective */
- virtual bool eval_grad_f(Index n, const Number* x, bool new_x, Number* grad_f);
-
- /** Method to return the constraint residuals */
- virtual bool eval_g(Index n, const Number* x, bool new_x, Index m, Number* g);
-
- /** Method to return:
- * 1) The structure of the jacobian (if "values" is NULL)
- * 2) The values of the jacobian (if "values" is not NULL)
- */
- virtual bool eval_jac_g(Index n, const Number* x, bool new_x,Index m, Index nele_jac, Index* iRow, Index *jCol,Number* values);
-
- /** Method to return:
- * 1) The structure of the hessian of the lagrangian (if "values" is NULL)
- * 2) The values of the hessian of the lagrangian (if "values" is not NULL)
- */
- virtual bool eval_h(Index n, const Number* x, bool new_x,Number obj_factor, Index m, const Number* lambda,bool new_lambda, Index nele_hess, Index* iRow,Index* jCol, Number* values);
-
- /** This method is called when the algorithm is complete so the TNLP can store/write the solution */
- virtual void finalize_solution(SolverReturn status,Index n, const Number* x, Number obj_value);
-
- virtual const SosInfo * sosConstraints() const{return NULL;}
- virtual const BranchingInfo* branchingInfo() const{return NULL;}
-
- const double * getX(); //Returns a pointer to a matrix of size of 1*numVars_
- //with final value for the primal variables.
-
- const double * getGrad(); //Returns a pointer to a matrix of size of 1*numVars_
- //with final value of gradient for the primal variables.
-
- const double * getHess(); //Returns a pointer to a matrix of size of numVars_*numVars_
- //with final value of hessian for the primal variables.
-
- double getObjVal(); //Returns the output of the final value of the objective.
-
- double iterCount(); //Returns the iteration count
-
- int returnStatus(); //Returns the status count
-};
-
-#endif
diff --git a/build/cpp/minconTMINLP.hpp b/build/cpp/minconTMINLP.hpp
deleted file mode 100644
index 5b3006a..0000000
--- a/build/cpp/minconTMINLP.hpp
+++ /dev/null
@@ -1,124 +0,0 @@
-// 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
-
-#ifndef minconTMINLP_HPP
-#define minconTMINLP_HPP
-
-#include "BonTMINLP.hpp"
-#include "IpTNLP.hpp"
-#include "call_scilab.h"
-
-using namespace Ipopt;
-using namespace Bonmin;
-
-class minconTMINLP : public TMINLP
-{
- private:
-
- Index numVars_; //Number of variables
-
- Index numCons_; //Number of constraints
-
- Index numLC_; //Number of Linear constraints
-
- Index intconSize_;
-
- Number *x0_= NULL; //lb_ is a pointer to a matrix of size of 1*numVars_ with lower bound of all variables.
-
- Number *lb_= NULL; //lb_ is a pointer to a matrix of size of 1*numVars_ with lower bound of all variables.
-
- Number *ub_= NULL; //ub_ is a pointer to a matrix of size of 1*numVars_ with upper bound of all variables.
-
- Number *conLb_= NULL; //conLb_ is a pointer to a matrix of size of numCon_*1 with lower bound of all constraints.
-
- Number *conUb_= NULL; //conUb_ is a pointer to a matrix of size of numCon_*1 with upper bound of all constraints.
-
- Number *finalX_= NULL; //finalX_ is a pointer to a matrix of size of 1*numVars_ with final value for the primal variables.
-
- Number finalObjVal_; //finalObjVal_ is a scalar with the final value of the objective.
-
- Number *intcon_ = NULL;
-
- int status_; //Solver return status
- minconTMINLP(const minconTMINLP&);
- minconTMINLP& operator=(const minconTMINLP&);
-
-public:
- // Constructor
- minconTMINLP(Index nV, Number *x0, Number *lb, Number *ub, Index nLC, Index nCons, Number *conlb, Number *conub, Index intconSize, Number *intcon):numVars_(nV),x0_(x0),lb_(lb),ub_(ub),numLC_(nLC),numCons_(nCons),conLb_(conlb),conUb_(conub),intconSize_(intconSize),intcon_(intcon),finalX_(0),finalObjVal_(1e20){ }
-
- /** default destructor */
- virtual ~minconTMINLP();
-
- virtual bool get_variables_types(Index n, VariableType* var_types);
-
- virtual bool get_variables_linearity(Index n, Ipopt::TNLP::LinearityType* var_types);
-
- virtual bool get_constraints_linearity(Index m, Ipopt::TNLP::LinearityType* const_types);
-
- /** Method to return some info about the nlp */
- virtual bool get_nlp_info(Index& n, Index& m, Index& nnz_jac_g,
- Index& nnz_h_lag, TNLP::IndexStyleEnum& index_style);
-
- /** Method to return the bounds for my problem */
- virtual bool get_bounds_info(Index n, Number* x_l, Number* x_u,
- Index m, Number* g_l, Number* g_u);
-
- /** Method to return the starting point for the algorithm */
- virtual bool get_starting_point(Index n, bool init_x, Number* x,
- bool init_z, Number* z_L, Number* z_U,
- Index m, bool init_lambda,
- Number* lambda);
-
- /** Method to return the objective value */
- virtual bool eval_f(Index n, const Number* x, bool new_x, Number& obj_value);
-
- /** Method to return the gradient of the objective */
- virtual bool eval_grad_f(Index n, const Number* x, bool new_x, Number* grad_f);
-
- /** Method to return the constraint residuals */
- virtual bool eval_g(Index n, const Number* x, bool new_x, Index m, Number* g);
-
- /** Method to return:
- * 1) The structure of the jacobian (if "values" is NULL)
- * 2) The values of the jacobian (if "values" is not NULL)
- */
- virtual bool eval_jac_g(Index n, const Number* x, bool new_x,Index m, Index nele_jac, Index* iRow, Index *jCol,Number* values);
-
- /** Method to return:
- * 1) The structure of the hessian of the lagrangian (if "values" is NULL)
- * 2) The values of the hessian of the lagrangian (if "values" is not NULL)
- */
- virtual bool eval_h(Index n, const Number* x, bool new_x,Number obj_factor, Index m, const Number* lambda,bool new_lambda, Index nele_hess, Index* iRow,Index* jCol, Number* values);
-
- /** This method is called when the algorithm is complete so the TNLP can store/write the solution */
- virtual void finalize_solution(SolverReturn status,Index n, const Number* x, Number obj_value);
-
- virtual const SosInfo * sosConstraints() const{return NULL;}
- virtual const BranchingInfo* branchingInfo() const{return NULL;}
-
- const double * getX(); //Returns a pointer to a matrix of size of 1*numVars_
- //with final value for the primal variables.
-
- const double * getGrad(); //Returns a pointer to a matrix of size of 1*numVars_
- //with final value of gradient for the primal variables.
-
- const double * getHess(); //Returns a pointer to a matrix of size of numVars_*numVars_
- //with final value of hessian for the primal variables.
-
- double getObjVal(); //Returns the output of the final value of the objective.
-
- double iterCount(); //Returns the iteration count
-
- int returnStatus(); //Returns the status count
-};
-
-#endif
diff --git a/build/cpp/minuncTMINLP.hpp b/build/cpp/minuncTMINLP.hpp
deleted file mode 100644
index 2b6e954..0000000
--- a/build/cpp/minuncTMINLP.hpp
+++ /dev/null
@@ -1,113 +0,0 @@
-// 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
-
-#define __USE_DEPRECATED_STACK_FUNCTIONS__
-#ifndef minuncTMINLP_HPP
-#define minuncTMINLP_HPP
-
-#include "BonTMINLP.hpp"
-#include "IpTNLP.hpp"
-#include "call_scilab.h"
-
-using namespace Ipopt;
-using namespace Bonmin;
-
-class minuncTMINLP : public TMINLP
-{
- private:
-
- Index numVars_; //Number of input variables
-
- Index intconSize_;
-
- const Number *varGuess_= NULL; //varGuess_ is a pointer to a matrix of size of 1*numVars_ with initial guess of all variables.
-
- Number *finalX_= NULL; //finalX_ is a pointer to a matrix of size of 1*numVars_ with final value for the primal variables.
-
- Number finalObjVal_; //finalObjVal_ is a scalar with the final value of the objective.
-
- Number *intcon_ = NULL;
-
- int status_; //Solver return status
- minuncTMINLP(const minuncTMINLP&);
- minuncTMINLP& operator=(const minuncTMINLP&);
-
-public:
- // Constructor
- minuncTMINLP(Index nV, Number *x0, Index intconSize, Number *intcon):numVars_(nV),varGuess_(x0),intconSize_(intconSize),intcon_(intcon),finalX_(0),finalObjVal_(1e20){ }
-
- /** default destructor */
- virtual ~minuncTMINLP();
-
- virtual bool get_variables_types(Index n, VariableType* var_types);
-
- virtual bool get_variables_linearity(Index n, Ipopt::TNLP::LinearityType* var_types);
-
- virtual bool get_constraints_linearity(Index m, Ipopt::TNLP::LinearityType* const_types);
-
- /** Method to return some info about the nlp */
- virtual bool get_nlp_info(Index& n, Index& m, Index& nnz_jac_g,
- Index& nnz_h_lag, TNLP::IndexStyleEnum& index_style);
-
- /** Method to return the bounds for my problem */
- virtual bool get_bounds_info(Index n, Number* x_l, Number* x_u,
- Index m, Number* g_l, Number* g_u);
-
- /** Method to return the starting point for the algorithm */
- virtual bool get_starting_point(Index n, bool init_x, Number* x,
- bool init_z, Number* z_L, Number* z_U,
- Index m, bool init_lambda,
- Number* lambda);
-
- /** Method to return the objective value */
- virtual bool eval_f(Index n, const Number* x, bool new_x, Number& obj_value);
-
- /** Method to return the gradient of the objective */
- virtual bool eval_grad_f(Index n, const Number* x, bool new_x, Number* grad_f);
-
- /** Method to return the constraint residuals */
- virtual bool eval_g(Index n, const Number* x, bool new_x, Index m, Number* g);
-
- /** Method to return:
- * 1) The structure of the jacobian (if "values" is NULL)
- * 2) The values of the jacobian (if "values" is not NULL)
- */
- virtual bool eval_jac_g(Index n, const Number* x, bool new_x,Index m, Index nele_jac, Index* iRow, Index *jCol,Number* values);
-
- /** Method to return:
- * 1) The structure of the hessian of the lagrangian (if "values" is NULL)
- * 2) The values of the hessian of the lagrangian (if "values" is not NULL)
- */
- virtual bool eval_h(Index n, const Number* x, bool new_x,Number obj_factor, Index m, const Number* lambda,bool new_lambda, Index nele_hess, Index* iRow,Index* jCol, Number* values);
-
- /** This method is called when the algorithm is complete so the TNLP can store/write the solution */
- virtual void finalize_solution(SolverReturn status,Index n, const Number* x, Number obj_value);
-
- virtual const SosInfo * sosConstraints() const{return NULL;}
- virtual const BranchingInfo* branchingInfo() const{return NULL;}
-
- const double * getX(); //Returns a pointer to a matrix of size of 1*numVars_
- //with final value for the primal variables.
-
- const double * getGrad(); //Returns a pointer to a matrix of size of 1*numVars_
- //with final value of gradient for the primal variables.
-
- const double * getHess(); //Returns a pointer to a matrix of size of numVars_*numVars_
- //with final value of hessian for the primal variables.
-
- double getObjVal(); //Returns the output of the final value of the objective.
-
- double iterCount(); //Returns the iteration count
-
- int returnStatus(); //Returns the status count
-};
-
-#endif
diff --git a/build/cpp/sci_iofunc.cpp b/build/cpp/sci_iofunc.cpp
deleted file mode 100644
index f05839c..0000000
--- a/build/cpp/sci_iofunc.cpp
+++ /dev/null
@@ -1,333 +0,0 @@
-// Symphony Toolbox for Scilab
-// (Definition of) Functions for input and output from Scilab
-// By Keyur Joshi
-
-#include "api_scilab.h"
-#include "Scierror.h"
-#include "sciprint.h"
-#include "BOOL.h"
-#include <localization.h>
-#include "call_scilab.h"
-#include <string.h>
-
-
-using namespace std;
-
-int getDoubleFromScilab(int argNum, double *dest)
-{
- //data declarations
- SciErr sciErr;
- int iRet,*varAddress;
- const char errMsg[]="Wrong type for input argument #%d: A double is expected.\n";
- const int errNum=999;
- //get variable address
- sciErr = getVarAddressFromPosition(pvApiCtx, argNum, &varAddress);
- if (sciErr.iErr)
- {
- printError(&sciErr, 0);
- return 1;
- }
- //check that it is a non-complex double
- if ( !isDoubleType(pvApiCtx,varAddress) || isVarComplex(pvApiCtx,varAddress) )
- {
- Scierror(errNum,errMsg,argNum);
- return 1;
- }
- //retrieve and store
- iRet = getScalarDouble(pvApiCtx, varAddress, dest);
- if(iRet)
- {
- Scierror(errNum,errMsg,argNum);
- return 1;
- }
- return 0;
-}
-
-int getUIntFromScilab(int argNum, int *dest)
-{
- SciErr sciErr;
- int iRet,*varAddress;
- double inputDouble;
- const char errMsg[]="Wrong type for input argument #%d: A nonnegative integer is expected.\n";
- const int errNum=999;
- //same steps as above
- sciErr = getVarAddressFromPosition(pvApiCtx, argNum, &varAddress);
- if (sciErr.iErr)
- {
- printError(&sciErr, 0);
- return 1;
- }
- if ( !isDoubleType(pvApiCtx,varAddress) || isVarComplex(pvApiCtx,varAddress) )
- {
- Scierror(errNum,errMsg,argNum);
- return 1;
- }
- iRet = getScalarDouble(pvApiCtx, varAddress, &inputDouble);
- //check that an unsigned int is stored in the double by casting and recasting
- if(iRet || ((double)((unsigned int)inputDouble))!=inputDouble)
- {
- Scierror(errNum,errMsg,argNum);
- return 1;
- }
- *dest=(unsigned int)inputDouble;
- return 0;
-}
-
-int getIntFromScilab(int argNum, int *dest)
-{
- SciErr sciErr;
- int iRet,*varAddress;
- double inputDouble;
- const char errMsg[]="Wrong type for input argument #%d: An integer is expected.\n";
- const int errNum=999;
- //same steps as above
- sciErr = getVarAddressFromPosition(pvApiCtx, argNum, &varAddress);
- if (sciErr.iErr)
- {
- printError(&sciErr, 0);
- return 1;
- }
- if ( !isDoubleType(pvApiCtx,varAddress) || isVarComplex(pvApiCtx,varAddress) )
- {
- Scierror(errNum,errMsg,argNum);
- return 1;
- }
- iRet = getScalarDouble(pvApiCtx, varAddress, &inputDouble);
- //check that an int is stored in the double by casting and recasting
- if(iRet || ((double)((int)inputDouble))!=inputDouble)
- {
- Scierror(errNum,errMsg,argNum);
- return 1;
- }
- *dest=(int)inputDouble;
- return 0;
-}
-
-int getFixedSizeDoubleMatrixFromScilab(int argNum, int rows, int cols, double **dest)
-{
- int *varAddress,inputMatrixRows,inputMatrixCols;
- SciErr sciErr;
- const char errMsg[]="Wrong type for input argument #%d: A matrix of double of size %d by %d is expected.\n";
- const int errNum=999;
- //same steps as above
- sciErr = getVarAddressFromPosition(pvApiCtx, argNum, &varAddress);
- if (sciErr.iErr)
- {
- printError(&sciErr, 0);
- return 1;
- }
- if ( !isDoubleType(pvApiCtx,varAddress) || isVarComplex(pvApiCtx,varAddress) )
- {
- Scierror(errNum,errMsg,argNum,rows,cols);
- return 1;
- }
- sciErr = getMatrixOfDouble(pvApiCtx, varAddress, &inputMatrixRows, &inputMatrixCols,NULL);
- if (sciErr.iErr)
- {
- printError(&sciErr, 0);
- return 1;
- }
- //check that the matrix has the correct number of rows and columns
- if(inputMatrixRows!=rows || inputMatrixCols!=cols)
- {
- Scierror(errNum,errMsg,argNum,rows,cols);
- return 1;
- }
- getMatrixOfDouble(pvApiCtx, varAddress, &inputMatrixRows, &inputMatrixCols, dest);
- return 0;
-}
-
-int getDoubleMatrixFromScilab(int argNum, int *rows, int *cols, double **dest)
-{
- int *varAddress;
- SciErr sciErr;
- const char errMsg[]="Wrong type for input argument #%d: A matrix of double is expected.\n";
- const int errNum=999;
- //same steps as above
- sciErr = getVarAddressFromPosition(pvApiCtx, argNum, &varAddress);
- if (sciErr.iErr)
- {
- printError(&sciErr, 0);
- return 1;
- }
- if ( !isDoubleType(pvApiCtx,varAddress) || isVarComplex(pvApiCtx,varAddress) )
- {
- Scierror(errNum,errMsg,argNum);
- return 1;
- }
- getMatrixOfDouble(pvApiCtx, varAddress, rows, cols, dest);
- if (sciErr.iErr)
- {
- printError(&sciErr, 0);
- return 1;
- }
- return 0;
-}
-
-int getFixedSizeDoubleMatrixInList(int argNum, int itemPos, int rows, int cols, double **dest)
-{
- int *varAddress,inputMatrixRows,inputMatrixCols;
- SciErr sciErr;
- const char errMsg[]="Wrong type for input argument #%d: A matrix of double of size %d by %d is expected.\n";
- const int errNum=999;
- //same steps as above
- sciErr = getVarAddressFromPosition(pvApiCtx, argNum, &varAddress);
- if (sciErr.iErr)
- {
- printError(&sciErr, 0);
- return 1;
- }
-
- getMatrixOfDoubleInList(pvApiCtx, varAddress, itemPos, &rows, &cols, dest);
- if (sciErr.iErr)
- {
- printError(&sciErr, 0);
- return 1;
- }
- return 0;
-}
-
-int getStringFromScilab(int argNum,char **dest)
-{
- int *varAddress,inputMatrixRows,inputMatrixCols;
- SciErr sciErr;
- sciErr = getVarAddressFromPosition(pvApiCtx, argNum, &varAddress);
-
- //check whether there is an error or not.
- if (sciErr.iErr)
- {
- printError(&sciErr, 0);
- return 1;
- }
- if ( !isStringType(pvApiCtx,varAddress) )
- {
- Scierror(999,"Wrong type for input argument 1: A file name is expected.\n");
- return 1;
- }
- //read the value in that pointer pointing to file name
- getAllocatedSingleString(pvApiCtx, varAddress, dest);
-
-}
-
-bool getFunctionFromScilab(int n,char name[], double *x,int posFirstElementOnStackForSF,int nOfRhsOnSF,int nOfLhsOnSF, double **dest)
-{
- double check;
- createMatrixOfDouble(pvApiCtx, posFirstElementOnStackForSF, 1, n, x);
- C2F(scistring)(&posFirstElementOnStackForSF,name,&nOfLhsOnSF,&nOfRhsOnSF,(unsigned long)strlen(name));
-
- if(getDoubleFromScilab(posFirstElementOnStackForSF+1,&check))
- {
- return true;
- }
- if (check==1)
- {
- return true;
- }
- else
- {
- int x_rows, x_cols;
- if(getDoubleMatrixFromScilab(posFirstElementOnStackForSF, &x_rows, &x_cols, dest))
- {
- sciprint("No results ");
- return true;
-
- }
- }
- return 0;
-}
-
-bool getHessFromScilab(int n,int numConstr_,char name[], double *x,double *obj,double *lambda,int posFirstElementOnStackForSF,int nOfRhsOnSF,int nOfLhsOnSF, double **dest)
-{
- double check;
- createMatrixOfDouble(pvApiCtx, posFirstElementOnStackForSF, 1, n, x);
- createMatrixOfDouble(pvApiCtx, posFirstElementOnStackForSF+1, 1, 1, obj);
- createMatrixOfDouble(pvApiCtx, posFirstElementOnStackForSF+2, 1, numConstr_, lambda);
- C2F(scistring)(&posFirstElementOnStackForSF,name,&nOfLhsOnSF,&nOfRhsOnSF,(unsigned long)strlen(name));
-
- if(getDoubleFromScilab(posFirstElementOnStackForSF+1,&check))
- {
- return true;
- }
- if (check==1)
- {
- return true;
- }
- else
- {
- int x_rows, x_cols;
- if(getDoubleMatrixFromScilab(posFirstElementOnStackForSF, &x_rows, &x_cols, dest))
- {
- sciprint("No results ");
- return 1;
- }
- }
- return 0;
-}
-
-int return0toScilab()
-{
- int iRet;
- //create variable in scilab
- iRet = createScalarDouble(pvApiCtx, nbInputArgument(pvApiCtx)+1,0);
- if(iRet)
- {
- /* If error, no return variable */
- AssignOutputVariable(pvApiCtx, 1) = 0;
- return 1;
- }
- //make it the output variable
- AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx)+1;
- //return it to scilab
- //ReturnArguments(pvApiCtx);
- return 0;
-}
-
-int returnDoubleToScilab(double retVal)
-{
- int iRet;
- //same steps as above
- iRet = createScalarDouble(pvApiCtx, nbInputArgument(pvApiCtx)+1,retVal);
- if(iRet)
- {
- /* If error, no return variable */
- AssignOutputVariable(pvApiCtx, 1) = 0;
- return 1;
- }
- AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx)+1;
- //ReturnArguments(pvApiCtx);
- return 0;
-}
-
-int returnDoubleMatrixToScilab(int itemPos, int rows, int cols, double *dest)
-{
- SciErr sciErr;
- //same steps as above
- sciErr = createMatrixOfDouble(pvApiCtx, nbInputArgument(pvApiCtx) + itemPos, rows, cols, dest);
- if (sciErr.iErr)
- {
- printError(&sciErr, 0);
- return 1;
- }
-
- AssignOutputVariable(pvApiCtx, itemPos) = nbInputArgument(pvApiCtx)+itemPos;
-
- return 0;
-}
-
-int returnIntegerMatrixToScilab(int itemPos, int rows, int cols, int *dest)
-{
- SciErr sciErr;
- //same steps as above
- sciErr = createMatrixOfInteger32(pvApiCtx, nbInputArgument(pvApiCtx) + itemPos, rows, cols, dest);
- if (sciErr.iErr)
- {
- printError(&sciErr, 0);
- return 1;
- }
-
- AssignOutputVariable(pvApiCtx, itemPos) = nbInputArgument(pvApiCtx)+itemPos;
-
- return 0;
-}
-
-
diff --git a/build/cpp/sci_iofunc.hpp b/build/cpp/sci_iofunc.hpp
deleted file mode 100644
index 7e18951..0000000
--- a/build/cpp/sci_iofunc.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-// Symphony Toolbox for Scilab
-// (Declaration of) Functions for input and output from Scilab
-// By Keyur Joshi
-
-#ifndef SCI_IOFUNCHEADER
-#define SCI_IOFUNCHEADER
-
-//input
-int getDoubleFromScilab(int argNum, double *dest);
-int getUIntFromScilab(int argNum, int *dest);
-int getIntFromScilab(int argNum, int *dest);
-int getFixedSizeDoubleMatrixFromScilab(int argNum, int rows, int cols, double **dest);
-int getDoubleMatrixFromScilab(int argNum, int *rows, int *cols, double **dest);
-int getFixedSizeDoubleMatrixInList(int argNum, int itemPos, int rows, int cols, double **dest);
-int getStringFromScilab(int argNum,char** dest);
-bool getFunctionFromScilab(int n,char name[], double *x,int posFirstElementOnStackForSF,int nOfRhsOnSF,int nOfLhsOnSF, double **dest);
-bool getHessFromScilab(int n,int numConstr_,char name[], double *x,double *obj,double *lambda,int posFirstElementOnStackForSF,int nOfRhsOnSF,int nOfLhsOnSF, double **dest);
-
-//output
-int return0toScilab();
-int returnDoubleToScilab(double retVal);
-int returnDoubleMatrixToScilab(int itemPos, int rows, int cols, double *dest);
-int returnIntegerMatrixToScilab(int itemPos, int rows, int cols, int *dest);
-
-#endif //SCI_IOFUNCHEADER
diff --git a/build/cpp/sci_minbndTMINLP.cpp b/build/cpp/sci_minbndTMINLP.cpp
deleted file mode 100644
index f26c089..0000000
--- a/build/cpp/sci_minbndTMINLP.cpp
+++ /dev/null
@@ -1,218 +0,0 @@
-// Copyright (C) 2015 - IIT Bombay - FOSSEE
-//
-// Author: Harpreet Singh
-// Organization: FOSSEE, IIT Bombay
-// Email: toolbox@scilab.in
-// 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
-
-#include "minbndTMINLP.hpp"
-#include "sci_iofunc.hpp"
-
-extern "C"
-{
-#include "call_scilab.h"
-#include <api_scilab.h>
-#include <Scierror.h>
-#include <BOOL.h>
-#include <localization.h>
-#include <sciprint.h>
-#include <string.h>
-#include <assert.h>
-}
-
-using namespace Ipopt;
-using namespace Bonmin;
-
-minbndTMINLP::~minbndTMINLP()
-{
- if(finalX_) delete[] finalX_;
-}
-
-// Set the type of every variable - CONTINUOUS or INTEGER
-bool minbndTMINLP::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 minbndTMINLP::get_variables_linearity(Index n, Ipopt::TNLP::LinearityType* var_types)
-{ return true; }
-
-// The linearity of the constraints - LINEAR or NON_LINEAR
-bool minbndTMINLP::get_constraints_linearity(Index m, Ipopt::TNLP::LinearityType* const_types)
-{ return true;}
-
-//get NLP info such as number of variables,constraints,no.of elements in jacobian and hessian to allocate memory
-bool minbndTMINLP::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=0; // 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=TNLP::C_STYLE; // Index style of matrices
- return true;
-}
-
-//get variable and constraint bound info
-bool minbndTMINLP::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<n;i++)
- {
- x_l[i]=lb_[i]+0.0000001;
- x_u[i]=ub_[i]-0.0000001;
- }
-
- g_l=NULL;
- g_u=NULL;
- return true;
-}
-
-// return the value of the constraints: g(x)
-bool minbndTMINLP::eval_g(Index n, const Number* x, bool new_x, Index m, Number* g)
-{
- // return the value of the constraints: g(x)
- g=NULL;
- return true;
-}
-
-// return the structure or values of the jacobian
-bool minbndTMINLP::eval_jac_g(Index n, const Number* x, bool new_x,Index m, Index nele_jac, Index* iRow, Index *jCol,Number* values)
-{
- if (values == NULL)
- {
- // return the structure of the jacobian of the constraints
- iRow=NULL;
- jCol=NULL;
- }
- else
- {
- values=NULL;
- }
- return true;
-}
-
-//get value of objective function at vector x
-bool minbndTMINLP::eval_f(Index n, const Number* x, bool new_x, Number& obj_value)
-{
- char name[20]="_f";
- Number *obj;
- if (getFunctionFromScilab(n,name,x, 7, 1,2,&obj))
- {
- return false;
- }
- obj_value = *obj;
- return true;
-}
-
-//get value of gradient of objective function at vector x.
-bool minbndTMINLP::eval_grad_f(Index n, const Number* x, bool new_x, Number* grad_f)
-{
- char name[20]="_gradf";
- Number *resg;
- if (getFunctionFromScilab(n,name,x, 7, 1,2,&resg))
- {
- return false;
- }
-
- Index i;
- for(i=0;i<numVars_;i++)
- {
- grad_f[i]=resg[i];
- }
- return true;
-}
-
-// This method sets initial values for required vectors . For now we are assuming 0 to all values.
-bool minbndTMINLP::get_starting_point(Index n, bool init_x, Number* x,bool init_z, Number* z_L, Number* z_U,Index m, bool init_lambda,Number* lambda)
-{
- assert(init_x == true);
- assert(init_z == false);
- assert(init_lambda == false);
- if (init_x == true)
- { //we need to set initial values for vector x
- for (Index var=0;var<n;var++)
- {x[var]=0.0;}//initialize with 0.
- }
- return true;
-}
-
-/*
- * Return either the sparsity structure of the Hessian of the Lagrangian,
- * or the values of the Hessian of the Lagrangian for the given values for
- * x,lambda,obj_factor.
-*/
-
-bool minbndTMINLP::eval_h(Index n, const Number* x, bool new_x,Number obj_factor, Index m, const Number* lambda,bool new_lambda, Index nele_hess, Index* iRow,Index* jCol, Number* values)
-{
- double check;
- if (values==NULL)
- {
- Index idx=0;
- for (Index row = 0; row < numVars_; row++)
- {
- for (Index col = 0; col <= row; col++)
- { iRow[idx] = row;
- jCol[idx] = col;
- idx++;
- }
- }
- }
-
- else
- { char name[20]="_gradhess";
- Number *resh;
- if (getFunctionFromScilab(n,name,x, 7, 1,2,&resh))
- {
- return false;
- }
- Index index=0;
- for (Index row=0;row < numVars_ ;++row)
- {
- for (Index col=0; col <= row; ++col)
- {
- values[index++]=obj_factor*(resh[numVars_*row+col]);
- }
- }
- }
- return true;
-}
-
-void minbndTMINLP::finalize_solution(SolverReturn status,Index n, const Number* x, Number obj_value)
-{
- finalObjVal_ = obj_value;
- status_ = status;
- if(status==0 ||status== 3)
- {
- finalX_ = new double[n];
- for (Index i=0; i<numVars_; i++)
- {
- finalX_[i] = x[i];
- }
- }
-
-}
-
-const double * minbndTMINLP::getX()
-{
- return finalX_;
-}
-
-double minbndTMINLP::getObjVal()
-{
- return finalObjVal_;
-}
-
-int minbndTMINLP::returnStatus()
-{
- return status_;
-}
diff --git a/build/cpp/sci_minconTMINLP.cpp b/build/cpp/sci_minconTMINLP.cpp
deleted file mode 100644
index 350594d..0000000
--- a/build/cpp/sci_minconTMINLP.cpp
+++ /dev/null
@@ -1,324 +0,0 @@
-// Copyright (C) 2015 - IIT Bombay - FOSSEE
-//
-// Author: Harpreet Singh, Pranav Deshpande and Akshay Miterani
-// Organization: FOSSEE, IIT Bombay
-// Email: toolbox@scilab.in
-// 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
-
-#include "minconTMINLP.hpp"
-#include "sci_iofunc.hpp"
-
-extern "C"
-{
-#include "call_scilab.h"
-#include <api_scilab.h>
-#include <Scierror.h>
-#include <BOOL.h>
-#include <localization.h>
-#include <sciprint.h>
-#include <string.h>
-#include <assert.h>
-}
-
-using namespace Ipopt;
-using namespace Bonmin;
-
-//#define DEBUG 0
-
-minconTMINLP::~minconTMINLP()
-{
- if(finalX_) delete[] finalX_;
-}
-
-// Set the type of every variable - CONTINUOUS or INTEGER
-bool minconTMINLP::get_variables_types(Index n, VariableType* var_types)
-{
- #ifdef DEBUG
- sciprint("Code is in get_variables_types\n");
- #endif
- 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 minconTMINLP::get_variables_linearity(Index n, Ipopt::TNLP::LinearityType* var_types)
-{
- #ifdef DEBUG
- sciprint("Code is in get_variables_linearity\n");
- #endif
- for(int i=0;i<n;i++)
- {
- var_types[i] = Ipopt::TNLP::NON_LINEAR;
- }
- return true; }
-
-// The linearity of the constraints - LINEAR or NON_LINEAR
-bool minconTMINLP::get_constraints_linearity(Index m, Ipopt::TNLP::LinearityType* const_types)
-{
-
- #ifdef DEBUG
- sciprint("Code is in get_constraints_linearity\n");
- #endif
- for(int i=0;i<numLC_;i++)
- {
- const_types[i] = Ipopt::TNLP::LINEAR;
- }
-
- for(int i=numLC_;i<m;i++)
- {
- const_types[i] = Ipopt::TNLP::NON_LINEAR;
- }
- return true;}
-
-//get NLP info such as number of variables,constraints,no.of elements in jacobian and hessian to allocate memory
-bool minconTMINLP::get_nlp_info(Index& n, Index& m, Index& nnz_jac_g, Index& nnz_h_lag, TNLP::IndexStyleEnum& index_style)
-{
- #ifdef DEBUG
- sciprint("Code is in get_nlp_info\n");
- #endif
- 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; // No. of elements in Hessian of the Lagrangian.
- index_style=TNLP::C_STYLE; // Index style of matrices
- return true;
-}
-
-//get variable and constraint bound info
-bool minconTMINLP::get_bounds_info(Index n, Number* x_l, Number* x_u, Index m, Number* g_l, Number* g_u)
-{
- #ifdef DEBUG
- sciprint("Code is in get_bounds_info\n");
- #endif
- unsigned int i;
- for(i=0;i<n;i++)
- {
- x_l[i]=lb_[i];
- x_u[i]=ub_[i];
- }
- for(i=0;i<m;i++)
- {
- g_l[i]=conLb_[i];
- g_u[i]=conUb_[i];
- }
- return true;
-}
-
-// This method sets initial values for required vectors . For now we are assuming 0 to all values.
-bool minconTMINLP::get_starting_point(Index n, bool init_x, Number* x,bool init_z, Number* z_L, Number* z_U,Index m, bool init_lambda,Number* lambda)
-{
- assert(init_x == true);
- assert(init_z == false);
- assert(init_lambda == false);
- if (init_x == true)
- { //we need to set initial values for vector x
- for (Index var=0;var<n;var++)
- {x[var]=x0_[var];}//initialize with 0.
- }
- return true;
-}
-
-//get value of objective function at vector x
-bool minconTMINLP::eval_f(Index n, const Number* x, bool new_x, Number& obj_value)
-{
- #ifdef DEBUG
- sciprint("Code is eval_f\n");
- #endif
- char name[20]="_f";
- Number *obj;
- if (getFunctionFromScilab(n,name,x, 7, 1,2,&obj))
- {
- return false;
- }
- obj_value = *obj;
- return true;
-}
-
-//get value of gradient of objective function at vector x.
-bool minconTMINLP::eval_grad_f(Index n, const Number* x, bool new_x, Number* grad_f)
-{
- #ifdef DEBUG
- sciprint("Code is in eval_grad_f\n");
- #endif
- char name[20]="_gradf";
- Number *resg;
- if (getFunctionFromScilab(n,name,x, 7, 1,2,&resg))
- {
- return false;
- }
-
- Index i;
- for(i=0;i<numVars_;i++)
- {
- grad_f[i]=resg[i];
- }
- return true;
-}
-
-// return the value of the constraints: g(x)
-bool minconTMINLP::eval_g(Index n, const Number* x, bool new_x, Index m, Number* g)
-{
- #ifdef DEBUG
- sciprint("Code is in eval_g\n");
- #endif
- // return the value of the constraints: g(x)
- if(m==0)
- {
- g=NULL;
- }
- else
- {
- char name[20]="_addnlc";
- Number *con;
- if (getFunctionFromScilab(n,name,x, 7, 1,2,&con))
- {
- return false;
- }
-
- Index i;
- for(i=0;i<m;i++)
- {
- g[i]=con[i];
- }
- }
-
- return true;
-}
-
-// return the structure or values of the jacobian
-bool minconTMINLP::eval_jac_g(Index n, const Number* x, bool new_x,Index m, Index nele_jac, Index* iRow, Index *jCol,Number* values)
-{
- #ifdef DEBUG
- sciprint("Code is in eval_jac_g\n");
- #endif
- if (values == NULL)
- {
- if(m==0)// return the structure of the jacobian of the constraints
- {
- iRow=NULL;
- jCol=NULL;
- }
- else
- {
- unsigned int i,j,idx=0;
- for(i=0;i<m;i++)
- for(j=0;j<n;j++)
- {
- iRow[idx]=i;
- jCol[idx]=j;
- idx++;
- }
- }
- }
- else
- {
- if(m==0)
- {
- values=NULL;
- }
- else
- {
- double* resj;
- char name[20]="_gradnlc";
- if (getFunctionFromScilab(n,name,x, 7, 1,2,&resj))
- {
- return false;
- }
- int c = 0;
- for(int i=0;i<m;i++)
- {
- for(int j=0;j<n;j++)
- {
- values[c] = resj[j*(int)m+i];
- c++;
- }
- }
- }
- }
- return true;
-}
-
-/*
- * Return either the sparsity structure of the Hessian of the Lagrangian,
- * or the values of the Hessian of the Lagrangian for the given values for
- * x,lambda,obj_factor.
-*/
-
-bool minconTMINLP::eval_h(Index n, const Number* x, bool new_x,Number obj_factor, Index m, const Number* lambda,bool new_lambda, Index nele_hess, Index* iRow,Index* jCol, Number* values)
-{
- #ifdef DEBUG
- sciprint("Code is in eval_h\n");
- #endif
- double check;
- if (values==NULL)
- {
- Index idx=0;
- for (Index row = 0; row < numVars_; row++)
- {
- for (Index col = 0; col < numVars_; col++)
- {
- iRow[idx] = row;
- jCol[idx] = col;
- idx++;
- }
- }
- }
- else
- { char name[20]="_gradhess";
- Number *resCh;
- if (getHessFromScilab(n,m,name,x, &obj_factor, lambda, 7, 3,2,&resCh))
- {
- return false;
- }
- Index index=0;
- for (Index row=0;row < numVars_ ;++row)
- {
- for (Index col=0; col < numVars_; ++col)
- {
- values[index++]=resCh[numVars_*row+col];
- }
- }
- }
- return true;
-}
-
-void minconTMINLP::finalize_solution(SolverReturn status,Index n, const Number* x, Number obj_value)
-{
- #ifdef DEBUG
- sciprint("Code is in finalize_solution\n");
- sciprint("%d",status);
- #endif
- finalObjVal_ = obj_value;
- status_ = status;
- if(status==0 ||status== 3)
- {
- finalX_ = new double[n];
- for (Index i=0; i<numVars_; i++)
- {
- finalX_[i] = x[i];
- }
- }
-}
-
-const double * minconTMINLP::getX()
-{
- return finalX_;
-}
-
-double minconTMINLP::getObjVal()
-{
- return finalObjVal_;
-}
-
-int minconTMINLP::returnStatus()
-{
- return status_;
-}
diff --git a/build/cpp/sci_minconTMINLP.cpp~ b/build/cpp/sci_minconTMINLP.cpp~
deleted file mode 100644
index 9d4ccd3..0000000
--- a/build/cpp/sci_minconTMINLP.cpp~
+++ /dev/null
@@ -1,324 +0,0 @@
-// Copyright (C) 2015 - IIT Bombay - FOSSEE
-//
-// Author: Harpreet Singh, Pranav Deshpande and Akshay Miterani
-// Organization: FOSSEE, IIT Bombay
-// Email: toolbox@scilab.in
-// 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
-
-#include "minconTMINLP.hpp"
-#include "sci_iofunc.hpp"
-
-extern "C"
-{
-#include "call_scilab.h"
-#include <api_scilab.h>
-#include <Scierror.h>
-#include <BOOL.h>
-#include <localization.h>
-#include <sciprint.h>
-#include <string.h>
-#include <assert.h>
-}
-
-using namespace Ipopt;
-using namespace Bonmin;
-
-#define DEBUG 0
-
-minconTMINLP::~minconTMINLP()
-{
- if(finalX_) delete[] finalX_;
-}
-
-// Set the type of every variable - CONTINUOUS or INTEGER
-bool minconTMINLP::get_variables_types(Index n, VariableType* var_types)
-{
- #ifdef DEBUG
- sciprint("Code is in get_variables_types\n");
- #endif
- 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 minconTMINLP::get_variables_linearity(Index n, Ipopt::TNLP::LinearityType* var_types)
-{
- #ifdef DEBUG
- sciprint("Code is in get_variables_linearity\n");
- #endif
- for(int i=0;i<n;i++)
- {
- var_types[i] = Ipopt::TNLP::NON_LINEAR;
- }
- return true; }
-
-// The linearity of the constraints - LINEAR or NON_LINEAR
-bool minconTMINLP::get_constraints_linearity(Index m, Ipopt::TNLP::LinearityType* const_types)
-{
-
- #ifdef DEBUG
- sciprint("Code is in get_constraints_linearity\n");
- #endif
- for(int i=0;i<numLC_;i++)
- {
- const_types[i] = Ipopt::TNLP::LINEAR;
- }
-
- for(int i=numLC_;i<m;i++)
- {
- const_types[i] = Ipopt::TNLP::NON_LINEAR;
- }
- return true;}
-
-//get NLP info such as number of variables,constraints,no.of elements in jacobian and hessian to allocate memory
-bool minconTMINLP::get_nlp_info(Index& n, Index& m, Index& nnz_jac_g, Index& nnz_h_lag, TNLP::IndexStyleEnum& index_style)
-{
- #ifdef DEBUG
- sciprint("Code is in get_nlp_info\n");
- #endif
- 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; // No. of elements in Hessian of the Lagrangian.
- index_style=TNLP::C_STYLE; // Index style of matrices
- return true;
-}
-
-//get variable and constraint bound info
-bool minconTMINLP::get_bounds_info(Index n, Number* x_l, Number* x_u, Index m, Number* g_l, Number* g_u)
-{
- #ifdef DEBUG
- sciprint("Code is in get_bounds_info\n");
- #endif
- unsigned int i;
- for(i=0;i<n;i++)
- {
- x_l[i]=lb_[i];
- x_u[i]=ub_[i];
- }
- for(i=0;i<m;i++)
- {
- g_l[i]=conLb_[i];
- g_u[i]=conUb_[i];
- }
- return true;
-}
-
-// This method sets initial values for required vectors . For now we are assuming 0 to all values.
-bool minconTMINLP::get_starting_point(Index n, bool init_x, Number* x,bool init_z, Number* z_L, Number* z_U,Index m, bool init_lambda,Number* lambda)
-{
- assert(init_x == true);
- assert(init_z == false);
- assert(init_lambda == false);
- if (init_x == true)
- { //we need to set initial values for vector x
- for (Index var=0;var<n;var++)
- {x[var]=x0_[var];}//initialize with 0.
- }
- return true;
-}
-
-//get value of objective function at vector x
-bool minconTMINLP::eval_f(Index n, const Number* x, bool new_x, Number& obj_value)
-{
- #ifdef DEBUG
- sciprint("Code is eval_f\n");
- #endif
- char name[20]="_f";
- Number *obj;
- if (getFunctionFromScilab(n,name,x, 7, 1,2,&obj))
- {
- return false;
- }
- obj_value = *obj;
- return true;
-}
-
-//get value of gradient of objective function at vector x.
-bool minconTMINLP::eval_grad_f(Index n, const Number* x, bool new_x, Number* grad_f)
-{
- #ifdef DEBUG
- sciprint("Code is in eval_grad_f\n");
- #endif
- char name[20]="_gradf";
- Number *resg;
- if (getFunctionFromScilab(n,name,x, 7, 1,2,&resg))
- {
- return false;
- }
-
- Index i;
- for(i=0;i<numVars_;i++)
- {
- grad_f[i]=resg[i];
- }
- return true;
-}
-
-// return the value of the constraints: g(x)
-bool minconTMINLP::eval_g(Index n, const Number* x, bool new_x, Index m, Number* g)
-{
- #ifdef DEBUG
- sciprint("Code is in eval_g\n");
- #endif
- // return the value of the constraints: g(x)
- if(m==0)
- {
- g=NULL;
- }
- else
- {
- char name[20]="_addnlc";
- Number *con;
- if (getFunctionFromScilab(n,name,x, 7, 1,2,&con))
- {
- return false;
- }
-
- Index i;
- for(i=0;i<m;i++)
- {
- g[i]=con[i];
- }
- }
-
- return true;
-}
-
-// return the structure or values of the jacobian
-bool minconTMINLP::eval_jac_g(Index n, const Number* x, bool new_x,Index m, Index nele_jac, Index* iRow, Index *jCol,Number* values)
-{
- #ifdef DEBUG
- sciprint("Code is in eval_jac_g\n");
- #endif
- if (values == NULL)
- {
- if(m==0)// return the structure of the jacobian of the constraints
- {
- iRow=NULL;
- jCol=NULL;
- }
- else
- {
- unsigned int i,j,idx=0;
- for(i=0;i<m;i++)
- for(j=0;j<n;j++)
- {
- iRow[idx]=i;
- jCol[idx]=j;
- idx++;
- }
- }
- }
- else
- {
- if(m==0)
- {
- values=NULL;
- }
- else
- {
- double* resj;
- char name[20]="_gradnlc";
- if (getFunctionFromScilab(n,name,x, 7, 1,2,&resj))
- {
- return false;
- }
- int c = 0;
- for(int i=0;i<m;i++)
- {
- for(int j=0;j<n;j++)
- {
- values[c] = resj[j*(int)m+i];
- c++;
- }
- }
- }
- }
- return true;
-}
-
-/*
- * Return either the sparsity structure of the Hessian of the Lagrangian,
- * or the values of the Hessian of the Lagrangian for the given values for
- * x,lambda,obj_factor.
-*/
-
-bool minconTMINLP::eval_h(Index n, const Number* x, bool new_x,Number obj_factor, Index m, const Number* lambda,bool new_lambda, Index nele_hess, Index* iRow,Index* jCol, Number* values)
-{
- #ifdef DEBUG
- sciprint("Code is in eval_h\n");
- #endif
- double check;
- if (values==NULL)
- {
- Index idx=0;
- for (Index row = 0; row < numVars_; row++)
- {
- for (Index col = 0; col < numVars_; col++)
- {
- iRow[idx] = row;
- jCol[idx] = col;
- idx++;
- }
- }
- }
- else
- { char name[20]="_gradhess";
- Number *resCh;
- if (getHessFromScilab(n,m,name,x, &obj_factor, lambda, 7, 3,2,&resCh))
- {
- return false;
- }
- Index index=0;
- for (Index row=0;row < numVars_ ;++row)
- {
- for (Index col=0; col < numVars_; ++col)
- {
- values[index++]=resCh[numVars_*row+col];
- }
- }
- }
- return true;
-}
-
-void minconTMINLP::finalize_solution(SolverReturn status,Index n, const Number* x, Number obj_value)
-{
- #ifdef DEBUG
- sciprint("Code is in finalize_solution\n");
- sciprint("%d",status);
- #endif
- finalObjVal_ = obj_value;
- status_ = status;
- if(status==0 ||status== 3)
- {
- finalX_ = new double[n];
- for (Index i=0; i<numVars_; i++)
- {
- finalX_[i] = x[i];
- }
- }
-}
-
-const double * minconTMINLP::getX()
-{
- return finalX_;
-}
-
-double minconTMINLP::getObjVal()
-{
- return finalObjVal_;
-}
-
-int minconTMINLP::returnStatus()
-{
- return status_;
-}
diff --git a/build/cpp/sci_minuncTMINLP.cpp b/build/cpp/sci_minuncTMINLP.cpp
deleted file mode 100644
index 696c5ef..0000000
--- a/build/cpp/sci_minuncTMINLP.cpp
+++ /dev/null
@@ -1,237 +0,0 @@
-// Copyright (C) 2015 - IIT Bombay - FOSSEE
-//
-// Author: Harpreet Singh, Pranav Deshpande and Akshay Miterani
-// Organization: FOSSEE, IIT Bombay
-// Email: toolbox@scilab.in
-// 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
-
-#include "minuncTMINLP.hpp"
-#include "sci_iofunc.hpp"
-
-extern "C"
-{
-#include "call_scilab.h"
-#include <api_scilab.h>
-#include <Scierror.h>
-#include <BOOL.h>
-#include <localization.h>
-#include <sciprint.h>
-#include <string.h>
-#include <assert.h>
-}
-
-using namespace std;
-using namespace Ipopt;
-using namespace Bonmin;
-
-minuncTMINLP::~minuncTMINLP()
-{
- if(finalX_) delete[] finalX_;
-}
-
-// Set the type of every variable - CONTINUOUS or INTEGER
-bool minuncTMINLP::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 minuncTMINLP::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 minuncTMINLP::get_constraints_linearity(Index m, Ipopt::TNLP::LinearityType* const_types)
-{
- /* m = numConstr_;
- for(int i = 0; i < m; i++)
- const_types[i] = Ipopt::TNLP::LINEAR;
- */
- return true;
-}
-
-//get NLP info such as number of variables,constraints,no.of elements in jacobian and hessian to allocate memory
-bool minuncTMINLP::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=0; // 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=TNLP::C_STYLE; // Index style of matrices
- return true;
-}
-
-//get variable and constraint bound info
-bool minuncTMINLP::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<n;i++)
- {
- x_l[i]=-1.0e19;
- x_u[i]=1.0e19;
- }
-
- g_l=NULL;
- g_u=NULL;
- return true;
-}
-
-// return the value of the constraints: g(x)
-bool minuncTMINLP::eval_g(Index n, const Number* x, bool new_x, Index m, Number* g)
-{
- // return the value of the constraints: g(x)
- g=NULL;
- return true;
-}
-
-// return the structure or values of the jacobian
-bool minuncTMINLP::eval_jac_g(Index n, const Number* x, bool new_x,Index m, Index nele_jac, Index* iRow, Index *jCol,Number* values)
-{
- if (values == NULL)
- {
- // return the structure of the jacobian of the constraints
- iRow=NULL;
- jCol=NULL;
- }
- else
- {
- values=NULL;
- }
-
- return true;
-}
-
-//get value of objective function at vector x
-bool minuncTMINLP::eval_f(Index n, const Number* x, bool new_x, Number& obj_value)
-{
- char name[20]="_f";
- Number *obj;
- if (getFunctionFromScilab(n,name,x, 7, 1,2,&obj))
- {
- return false;
- }
- obj_value = *obj;
- return true;
-}
-
-//get value of gradient of objective function at vector x.
-bool minuncTMINLP::eval_grad_f(Index n, const Number* x, bool new_x, Number* grad_f)
-{
- char name[20]="_gradf";
- Number *resg;
- if (getFunctionFromScilab(n,name,x, 7, 1, 2, &resg))
- {
- return false;
- }
-
- Index i;
- for(i=0;i<numVars_;i++)
- {
- grad_f[i]=resg[i];
- }
- return true;
-}
-
-// This method sets initial values for required vectors . For now we are assuming 0 to all values.
-bool minuncTMINLP::get_starting_point(Index n, bool init_x, Number* x,bool init_z, Number* z_L, Number* z_U,Index m, bool init_lambda,Number* lambda)
-{
- assert(init_x == true);
- assert(init_z == false);
- assert(init_lambda == false);
- if (init_x == true)
- { //we need to set initial values for vector x
- for (Index var=0;var<n;var++)
- x[var]=varGuess_[var];//initialize with 0 or we can change.
- }
-
- return true;
-}
-
-/*
- * Return either the sparsity structure of the Hessian of the Lagrangian,
- * or the values of the Hessian of the Lagrangian for the given values for
- * x,lambda,obj_factor.
-*/
-
-bool minuncTMINLP::eval_h(Index n, const Number* x, bool new_x,Number obj_factor, Index m, const Number* lambda,bool new_lambda, Index nele_hess, Index* iRow,Index* jCol, Number* values)
-{
- double check;
- if (values==NULL)
- {
- Index idx=0;
- for (Index row = 0; row < numVars_; row++)
- {
- for (Index col = 0; col <= row; col++)
- {
- iRow[idx] = row;
- jCol[idx] = col;
- idx++;
- }
- }
- }
-
- else
- {
- char name[20]="_gradhess";
- Number *resh;
- if (getFunctionFromScilab(n,name,x, 7, 1,2,&resh))
- {
- return false;
- }
- Index index=0;
- for (Index row=0;row < numVars_ ;++row)
- {
- for (Index col=0; col <= row; ++col)
- {
- values[index++]=obj_factor*(resh[numVars_*row+col]);
- }
- }
- return true;
- }
-}
-
-
-void minuncTMINLP::finalize_solution(SolverReturn status,Index n, const Number* x, Number obj_value)
-{
- finalObjVal_ = obj_value;
- status_ = status;
- if(status==0 ||status== 3)
- {
- finalX_ = new double[n];
- for (Index i=0; i<numVars_; i++)
- {
- finalX_[i] = x[i];
- }
- }
-
-}
-
-const double * minuncTMINLP::getX()
-{
- return finalX_;
-}
-
-double minuncTMINLP::getObjVal()
-{
- return finalObjVal_;
-}
-
-int minuncTMINLP::returnStatus()
-{
- return status_;
-}