From 03241d180c9d65fa1e75ceac4c257df44438a1ce Mon Sep 17 00:00:00 2001 From: Harpreet Date: Wed, 24 Feb 2016 16:22:06 +0530 Subject: fmincon examples added --- sci_gateway/cpp/cleaner.sce | 22 + sci_gateway/cpp/libFOSSEE_Optimization_Toolbox.c | 156 +++++++ sci_gateway/cpp/libFOSSEE_Optimization_Toolbox.so | Bin 0 -> 194948 bytes sci_gateway/cpp/loader.sce | 84 ++++ sci_gateway/cpp/minconNLP.hpp | 8 +- sci_gateway/cpp/sci_ipoptfmincon.cpp | 70 +-- sci_gateway/cpp/sci_minconNLP.cpp | 491 +++++++--------------- 7 files changed, 425 insertions(+), 406 deletions(-) create mode 100644 sci_gateway/cpp/cleaner.sce create mode 100644 sci_gateway/cpp/libFOSSEE_Optimization_Toolbox.c create mode 100755 sci_gateway/cpp/libFOSSEE_Optimization_Toolbox.so create mode 100644 sci_gateway/cpp/loader.sce (limited to 'sci_gateway/cpp') diff --git a/sci_gateway/cpp/cleaner.sce b/sci_gateway/cpp/cleaner.sce new file mode 100644 index 0000000..333775c --- /dev/null +++ b/sci_gateway/cpp/cleaner.sce @@ -0,0 +1,22 @@ +// This file is released under the 3-clause BSD license. See COPYING-BSD. +// Generated by builder.sce : Please, do not edit this file +// cleaner.sce +// ------------------------------------------------------ +curdir = pwd(); +cleaner_path = get_file_path('cleaner.sce'); +chdir(cleaner_path); +// ------------------------------------------------------ +if fileinfo('loader.sce') <> [] then + mdelete('loader.sce'); +end +// ------------------------------------------------------ +if fileinfo('libFOSSEE_Optimization_Toolbox.so') <> [] then + mdelete('libFOSSEE_Optimization_Toolbox.so'); +end +// ------------------------------------------------------ +if fileinfo('libFOSSEE_Optimization_Toolbox.c') <> [] then + mdelete('libFOSSEE_Optimization_Toolbox.c'); +end +// ------------------------------------------------------ +chdir(curdir); +// ------------------------------------------------------ diff --git a/sci_gateway/cpp/libFOSSEE_Optimization_Toolbox.c b/sci_gateway/cpp/libFOSSEE_Optimization_Toolbox.c new file mode 100644 index 0000000..cd53066 --- /dev/null +++ b/sci_gateway/cpp/libFOSSEE_Optimization_Toolbox.c @@ -0,0 +1,156 @@ +#ifdef __cplusplus +extern "C" { +#endif +#include +#include +#include +#include +static int direct_gateway(char *fname,void F(void)) { F();return 0;}; +extern Gatefunc sci_sym_open; +extern Gatefunc sci_sym_close; +extern Gatefunc sci_sym_isEnvActive; +extern Gatefunc sci_sym_set_defaults; +extern Gatefunc sci_sym_set_int_param; +extern Gatefunc sci_sym_get_int_param; +extern Gatefunc sci_sym_set_dbl_param; +extern Gatefunc sci_sym_get_dbl_param; +extern Gatefunc sci_sym_set_str_param; +extern Gatefunc sci_sym_get_str_param; +extern Gatefunc sci_sym_getInfinity; +extern Gatefunc sci_sym_loadProblemBasic; +extern Gatefunc sci_sym_loadProblem; +extern Gatefunc sci_sym_load_mps; +extern Gatefunc sci_sym_get_num_int; +extern Gatefunc sci_sym_get_num_int; +extern Gatefunc sci_sym_get_num_int; +extern Gatefunc sci_sym_isContinuous; +extern Gatefunc sci_sym_isBinary; +extern Gatefunc sci_sym_isInteger; +extern Gatefunc sci_sym_set_continuous; +extern Gatefunc sci_sym_set_integer; +extern Gatefunc sci_sym_get_dbl_arr; +extern Gatefunc sci_sym_get_dbl_arr; +extern Gatefunc sci_sym_setVarBound; +extern Gatefunc sci_sym_setVarBound; +extern Gatefunc sci_sym_get_dbl_arr; +extern Gatefunc sci_sym_setObjCoeff; +extern Gatefunc sci_sym_getObjSense; +extern Gatefunc sci_sym_setObjSense; +extern Gatefunc sci_sym_get_dbl_arr; +extern Gatefunc sci_sym_get_dbl_arr; +extern Gatefunc sci_sym_get_dbl_arr; +extern Gatefunc sci_sym_get_dbl_arr; +extern Gatefunc sci_sym_setConstrBound; +extern Gatefunc sci_sym_setConstrBound; +extern Gatefunc sci_sym_setConstrType; +extern Gatefunc sci_sym_get_matrix; +extern Gatefunc sci_sym_get_row_sense; +extern Gatefunc sci_sym_addConstr; +extern Gatefunc sci_sym_addVar; +extern Gatefunc sci_sym_delete_cols; +extern Gatefunc sci_sym_delete_rows; +extern Gatefunc sci_sym_getPrimalBound; +extern Gatefunc sci_sym_setPrimalBound; +extern Gatefunc sci_sym_setColSoln; +extern Gatefunc sci_sym_solve; +extern Gatefunc sci_sym_get_status; +extern Gatefunc sci_sym_get_solver_status; +extern Gatefunc sci_sym_get_solver_status; +extern Gatefunc sci_sym_get_solver_status; +extern Gatefunc sci_sym_get_solver_status; +extern Gatefunc sci_sym_get_solver_status; +extern Gatefunc sci_sym_get_solver_status; +extern Gatefunc sci_sym_getVarSoln; +extern Gatefunc sci_sym_getObjVal; +extern Gatefunc sci_sym_get_iteration_count; +extern Gatefunc sci_sym_getRowActivity; +extern Gatefunc sci_linearprog; +extern Gatefunc sci_rmps; +extern Gatefunc sci_solveqp; +extern Gatefunc sci_solveminuncp; +extern Gatefunc sci_solveminbndp; +extern Gatefunc sci_solveminconp; +static GenericTable Tab[]={ + {(Myinterfun)sci_gateway,sci_sym_open,"sym_open"}, + {(Myinterfun)sci_gateway,sci_sym_close,"sym_close"}, + {(Myinterfun)sci_gateway,sci_sym_isEnvActive,"sym_isEnvActive"}, + {(Myinterfun)sci_gateway,sci_sym_set_defaults,"sym_resetParams"}, + {(Myinterfun)sci_gateway,sci_sym_set_int_param,"sym_setIntParam"}, + {(Myinterfun)sci_gateway,sci_sym_get_int_param,"sym_getIntParam"}, + {(Myinterfun)sci_gateway,sci_sym_set_dbl_param,"sym_setDblParam"}, + {(Myinterfun)sci_gateway,sci_sym_get_dbl_param,"sym_getDblParam"}, + {(Myinterfun)sci_gateway,sci_sym_set_str_param,"sym_setStrParam"}, + {(Myinterfun)sci_gateway,sci_sym_get_str_param,"sym_getStrParam"}, + {(Myinterfun)sci_gateway,sci_sym_getInfinity,"sym_getInfinity"}, + {(Myinterfun)sci_gateway,sci_sym_loadProblemBasic,"sym_loadProblemBasic"}, + {(Myinterfun)sci_gateway,sci_sym_loadProblem,"sym_loadProblem"}, + {(Myinterfun)sci_gateway,sci_sym_load_mps,"sym_loadMPS"}, + {(Myinterfun)sci_gateway,sci_sym_get_num_int,"sym_getNumConstr"}, + {(Myinterfun)sci_gateway,sci_sym_get_num_int,"sym_getNumVar"}, + {(Myinterfun)sci_gateway,sci_sym_get_num_int,"sym_getNumElements"}, + {(Myinterfun)sci_gateway,sci_sym_isContinuous,"sym_isContinuous"}, + {(Myinterfun)sci_gateway,sci_sym_isBinary,"sym_isBinary"}, + {(Myinterfun)sci_gateway,sci_sym_isInteger,"sym_isInteger"}, + {(Myinterfun)sci_gateway,sci_sym_set_continuous,"sym_setContinuous"}, + {(Myinterfun)sci_gateway,sci_sym_set_integer,"sym_setInteger"}, + {(Myinterfun)sci_gateway,sci_sym_get_dbl_arr,"sym_getVarLower"}, + {(Myinterfun)sci_gateway,sci_sym_get_dbl_arr,"sym_getVarUpper"}, + {(Myinterfun)sci_gateway,sci_sym_setVarBound,"sym_setVarLower"}, + {(Myinterfun)sci_gateway,sci_sym_setVarBound,"sym_setVarUpper"}, + {(Myinterfun)sci_gateway,sci_sym_get_dbl_arr,"sym_getObjCoeff"}, + {(Myinterfun)sci_gateway,sci_sym_setObjCoeff,"sym_setObjCoeff"}, + {(Myinterfun)sci_gateway,sci_sym_getObjSense,"sym_getObjSense"}, + {(Myinterfun)sci_gateway,sci_sym_setObjSense,"sym_setObjSense"}, + {(Myinterfun)sci_gateway,sci_sym_get_dbl_arr,"sym_getRhs"}, + {(Myinterfun)sci_gateway,sci_sym_get_dbl_arr,"sym_getConstrRange"}, + {(Myinterfun)sci_gateway,sci_sym_get_dbl_arr,"sym_getConstrLower"}, + {(Myinterfun)sci_gateway,sci_sym_get_dbl_arr,"sym_getConstrUpper"}, + {(Myinterfun)sci_gateway,sci_sym_setConstrBound,"sym_setConstrLower"}, + {(Myinterfun)sci_gateway,sci_sym_setConstrBound,"sym_setConstrUpper"}, + {(Myinterfun)sci_gateway,sci_sym_setConstrType,"sym_setConstrType"}, + {(Myinterfun)sci_gateway,sci_sym_get_matrix,"sym_getMatrix"}, + {(Myinterfun)sci_gateway,sci_sym_get_row_sense,"sym_getConstrSense"}, + {(Myinterfun)sci_gateway,sci_sym_addConstr,"sym_addConstr"}, + {(Myinterfun)sci_gateway,sci_sym_addVar,"sym_addVar"}, + {(Myinterfun)sci_gateway,sci_sym_delete_cols,"sym_deleteVars"}, + {(Myinterfun)sci_gateway,sci_sym_delete_rows,"sym_deleteConstrs"}, + {(Myinterfun)sci_gateway,sci_sym_getPrimalBound,"sym_getPrimalBound"}, + {(Myinterfun)sci_gateway,sci_sym_setPrimalBound,"sym_setPrimalBound"}, + {(Myinterfun)sci_gateway,sci_sym_setColSoln,"sym_setVarSoln"}, + {(Myinterfun)sci_gateway,sci_sym_solve,"sym_solve"}, + {(Myinterfun)sci_gateway,sci_sym_get_status,"sym_getStatus"}, + {(Myinterfun)sci_gateway,sci_sym_get_solver_status,"sym_isOptimal"}, + {(Myinterfun)sci_gateway,sci_sym_get_solver_status,"sym_isInfeasible"}, + {(Myinterfun)sci_gateway,sci_sym_get_solver_status,"sym_isAbandoned"}, + {(Myinterfun)sci_gateway,sci_sym_get_solver_status,"sym_isIterLimitReached"}, + {(Myinterfun)sci_gateway,sci_sym_get_solver_status,"sym_isTimeLimitReached"}, + {(Myinterfun)sci_gateway,sci_sym_get_solver_status,"sym_isTargetGapAchieved"}, + {(Myinterfun)sci_gateway,sci_sym_getVarSoln,"sym_getVarSoln"}, + {(Myinterfun)sci_gateway,sci_sym_getObjVal,"sym_getObjVal"}, + {(Myinterfun)sci_gateway,sci_sym_get_iteration_count,"sym_getIterCount"}, + {(Myinterfun)sci_gateway,sci_sym_getRowActivity,"sym_getConstrActivity"}, + {(Myinterfun)sci_gateway,sci_linearprog,"linearprog"}, + {(Myinterfun)sci_gateway,sci_rmps,"rmps"}, + {(Myinterfun)sci_gateway,sci_solveqp,"solveqp"}, + {(Myinterfun)sci_gateway,sci_solveminuncp,"solveminuncp"}, + {(Myinterfun)sci_gateway,sci_solveminbndp,"solveminbndp"}, + {(Myinterfun)sci_gateway,sci_solveminconp,"solveminconp"}, +}; + +int C2F(libFOSSEE_Optimization_Toolbox)() +{ + Rhs = Max(0, Rhs); + if (*(Tab[Fin-1].f) != NULL) + { + if(pvApiCtx == NULL) + { + pvApiCtx = (StrCtx*)MALLOC(sizeof(StrCtx)); + } + pvApiCtx->pstName = (char*)Tab[Fin-1].name; + (*(Tab[Fin-1].f))(Tab[Fin-1].name,Tab[Fin-1].F); + } + return 0; +} +#ifdef __cplusplus +} +#endif diff --git a/sci_gateway/cpp/libFOSSEE_Optimization_Toolbox.so b/sci_gateway/cpp/libFOSSEE_Optimization_Toolbox.so new file mode 100755 index 0000000..9a4caf4 Binary files /dev/null and b/sci_gateway/cpp/libFOSSEE_Optimization_Toolbox.so differ diff --git a/sci_gateway/cpp/loader.sce b/sci_gateway/cpp/loader.sce new file mode 100644 index 0000000..1ec953f --- /dev/null +++ b/sci_gateway/cpp/loader.sce @@ -0,0 +1,84 @@ +// This file is released under the 3-clause BSD license. See COPYING-BSD. +// Generated by builder.sce : Please, do not edit this file +// ---------------------------------------------------------------------------- +// +libFOSSEE_Optimizat_path = get_absolute_file_path('loader.sce'); +// +// ulink previous function with same name +[bOK, ilib] = c_link('libFOSSEE_Optimization_Toolbox'); +if bOK then + ulink(ilib); +end +// +list_functions = [ 'sym_open'; + 'sym_close'; + 'sym_isEnvActive'; + 'sym_resetParams'; + 'sym_setIntParam'; + 'sym_getIntParam'; + 'sym_setDblParam'; + 'sym_getDblParam'; + 'sym_setStrParam'; + 'sym_getStrParam'; + 'sym_getInfinity'; + 'sym_loadProblemBasic'; + 'sym_loadProblem'; + 'sym_loadMPS'; + 'sym_getNumConstr'; + 'sym_getNumVar'; + 'sym_getNumElements'; + 'sym_isContinuous'; + 'sym_isBinary'; + 'sym_isInteger'; + 'sym_setContinuous'; + 'sym_setInteger'; + 'sym_getVarLower'; + 'sym_getVarUpper'; + 'sym_setVarLower'; + 'sym_setVarUpper'; + 'sym_getObjCoeff'; + 'sym_setObjCoeff'; + 'sym_getObjSense'; + 'sym_setObjSense'; + 'sym_getRhs'; + 'sym_getConstrRange'; + 'sym_getConstrLower'; + 'sym_getConstrUpper'; + 'sym_setConstrLower'; + 'sym_setConstrUpper'; + 'sym_setConstrType'; + 'sym_getMatrix'; + 'sym_getConstrSense'; + 'sym_addConstr'; + 'sym_addVar'; + 'sym_deleteVars'; + 'sym_deleteConstrs'; + 'sym_getPrimalBound'; + 'sym_setPrimalBound'; + 'sym_setVarSoln'; + 'sym_solve'; + 'sym_getStatus'; + 'sym_isOptimal'; + 'sym_isInfeasible'; + 'sym_isAbandoned'; + 'sym_isIterLimitReached'; + 'sym_isTimeLimitReached'; + 'sym_isTargetGapAchieved'; + 'sym_getVarSoln'; + 'sym_getObjVal'; + 'sym_getIterCount'; + 'sym_getConstrActivity'; + 'linearprog'; + 'rmps'; + 'solveqp'; + 'solveminuncp'; + 'solveminbndp'; + 'solveminconp'; +]; +addinter(libFOSSEE_Optimizat_path + filesep() + 'libFOSSEE_Optimization_Toolbox' + getdynlibext(), 'libFOSSEE_Optimization_Toolbox', list_functions); +// remove temp. variables on stack +clear libFOSSEE_Optimizat_path; +clear bOK; +clear ilib; +clear list_functions; +// ---------------------------------------------------------------------------- diff --git a/sci_gateway/cpp/minconNLP.hpp b/sci_gateway/cpp/minconNLP.hpp index df496ce..0dcaf26 100644 --- a/sci_gateway/cpp/minconNLP.hpp +++ b/sci_gateway/cpp/minconNLP.hpp @@ -24,12 +24,6 @@ class minconNLP : public TNLP Index numConstr_; //Number of constraints - Number flag1_; //Gradient of objective ON or OFF - - Number flag2_; //Hessian of objective ON or OFF - - Number flag3_; //Jacobian of constraints ON or OFF - Number nonlinCon_; //Number of non-linear constraints Number nonlinIneqCon_; //Number of non-linear inequality constraints @@ -101,7 +95,7 @@ class minconNLP : public TNLP public: /** user defined constructor */ - minconNLP(Index nV, Index nC, Number *x0 ,Number *A, Number *b, Number* Aeq, Number *beq, Index Arows, Index Acols, Index brows, Index bcols, Index Aeqrows, Index Aeqcols, Index beqrows, Index beqcols, Number* LB, Number* UB, Number nlC, Number nlIC, Number f1, Number f2, Number f3) : numVars_(nV), numConstr_(nC), varGuess_(x0), A_(A), b_(b), Aeq_(Aeq), beq_(beq), Arows_(Arows), Acols_(Acols), brows_(brows), bcols_(bcols), Aeqrows_(Aeqrows), Aeqcols_(Aeqcols), beqrows_(beqrows), beqcols_(beqcols), varLB_(LB), varUB_(UB), nonlinCon_(nlC), nonlinIneqCon_(nlIC), flag1_(f1), flag2_(f2), flag3_(f3), finalX_(0), finalZl_(0), finalZu_(0), finalGradient_(0), finalHessian_(0), finalObjVal_(1e20){ } + minconNLP(Index nV, Index nC, Number *x0 ,Number *A, Number *b, Number* Aeq, Number *beq, Index Arows, Index Acols, Index brows, Index bcols, Index Aeqrows, Index Aeqcols, Index beqrows, Index beqcols, Number* LB, Number* UB, Number nlC, Number nlIC) : numVars_(nV), numConstr_(nC), varGuess_(x0), A_(A), b_(b), Aeq_(Aeq), beq_(beq), Arows_(Arows), Acols_(Acols), brows_(brows), bcols_(bcols), Aeqrows_(Aeqrows), Aeqcols_(Aeqcols), beqrows_(beqrows), beqcols_(beqcols), varLB_(LB), varUB_(UB), nonlinCon_(nlC), nonlinIneqCon_(nlIC), finalX_(0), finalZl_(0), finalZu_(0), finalGradient_(0), finalHessian_(0), finalObjVal_(1e20){ } /** default destructor */ virtual ~minconNLP(); diff --git a/sci_gateway/cpp/sci_ipoptfmincon.cpp b/sci_gateway/cpp/sci_ipoptfmincon.cpp index 551af41..18218a5 100644 --- a/sci_gateway/cpp/sci_ipoptfmincon.cpp +++ b/sci_gateway/cpp/sci_ipoptfmincon.cpp @@ -30,17 +30,15 @@ int sci_solveminconp(char *fname) { using namespace Ipopt; - CheckInputArgument(pvApiCtx, 20, 20); + CheckInputArgument(pvApiCtx, 16, 16); CheckOutputArgument(pvApiCtx, 12, 12); // Error management variable SciErr sciErr; //Function pointers, input matrix(Starting point) pointer, flag variable - int* funptr=NULL; - int* gradhesptr=NULL; double *x0ptr=NULL, *lbptr=NULL, *ubptr=NULL,*Aptr=NULL, *bptr=NULL, *Aeqptr=NULL, *beqptr=NULL; - double flag1=0,flag2=0,flag3=0,nonlinCon=0,nonlinIneqCon=0; + double nonlinCon=0,nonlinIneqCon=0; // Input arguments @@ -49,7 +47,7 @@ int sci_solveminconp(char *fname) unsigned int temp1 = 0,temp2 = 0, iret = 0; int x0_rows=0, x0_cols=0, lb_rows=0, lb_cols=0, ub_rows=0, ub_cols=0, A_rows=0, A_cols=0, b_rows=0, b_cols=0, Aeq_rows=0, Aeq_cols=0, beq_rows=0, beq_cols=0; - // Output arguments + // Output arguments double *fX = NULL, ObjVal=0,iteration=0,cpuTime=0,fobj_eval=0; double dual_inf, constr_viol, complementarity, kkt_error; double *fGrad = NULL; @@ -61,98 +59,70 @@ int sci_solveminconp(char *fname) int int_fobj_eval, int_constr_eval, int_fobj_grad_eval, int_constr_jac_eval, int_hess_eval; ////////// Manage the input argument ////////// - - //Objective Function - if(getFunctionFromScilab(1,&funptr)) - { - return 1; - } - - //Function for gradient and hessian - if(getFunctionFromScilab(2,&gradhesptr)) - { - return 1; - } - - //x0(starting point) matrix from scilab - if(getDoubleMatrixFromScilab(18, &x0_rows, &x0_cols, &x0ptr)) - { - return 1; - } - - //Getting number of iterations - if(getFixedSizeDoubleMatrixInList(19,2,temp1,temp2,&max_iter)) - { - return 1; - } - - //Getting Cpu Time - if(getFixedSizeDoubleMatrixInList(19,4,temp1,temp2,&cpu_time)) - { - return 1; - } + //Getting matrix representing linear inequality constraints - if(getDoubleMatrixFromScilab(3, &A_rows, &A_cols, &Aptr)) + if(getDoubleMatrixFromScilab(2, &A_rows, &A_cols, &Aptr)) { return 1; } //Getting matrix representing bounds of linear inequality constraints - if(getDoubleMatrixFromScilab(4, &b_rows, &b_cols, &bptr)) + if(getDoubleMatrixFromScilab(3, &b_rows, &b_cols, &bptr)) { return 1; } //Getting matrix representing linear equality constraints - if(getDoubleMatrixFromScilab(5, &Aeq_rows, &Aeq_cols, &Aeqptr)) + if(getDoubleMatrixFromScilab(4, &Aeq_rows, &Aeq_cols, &Aeqptr)) { return 1; } //Getting matrix representing bounds of linear inequality constraints - if(getDoubleMatrixFromScilab(6, &beq_rows, &beq_cols, &beqptr)) + if(getDoubleMatrixFromScilab(5, &beq_rows, &beq_cols, &beqptr)) { return 1; } //Getting matrix representing linear inequality constraints - if(getDoubleMatrixFromScilab(7, &lb_rows, &lb_cols, &lbptr)) + if(getDoubleMatrixFromScilab(6, &lb_rows, &lb_cols, &lbptr)) { return 1; } //Getting matrix representing linear inequality constraints - if(getDoubleMatrixFromScilab(8, &ub_rows, &ub_cols, &ubptr)) + if(getDoubleMatrixFromScilab(7, &ub_rows, &ub_cols, &ubptr)) { return 1; } //Number of non-linear constraints - if(getDoubleFromScilab(9, &nonlinCon)) + if(getDoubleFromScilab(8, &nonlinCon)) { return 1; } //Number of non-linear inequality constraints - if(getDoubleFromScilab(10, &nonlinIneqCon)) + if(getDoubleFromScilab(9, &nonlinIneqCon)) { return 1; } - - //Getting the required flag variables - - if(getDoubleFromScilab(12, &flag1)) + + //x0(starting point) matrix from scilab + if(getDoubleMatrixFromScilab(14, &x0_rows, &x0_cols, &x0ptr)) { return 1; } - if(getDoubleFromScilab(14, &flag2)) + //Getting number of iterations + if(getFixedSizeDoubleMatrixInList(15,2,temp1,temp2,&max_iter)) { return 1; } - if(getDoubleFromScilab(16, &flag3)) + //Getting Cpu Time + if(getFixedSizeDoubleMatrixInList(15,4,temp1,temp2,&cpu_time)) { return 1; } @@ -164,7 +134,7 @@ int sci_solveminconp(char *fname) // Starting Ipopt - SmartPtr Prob = new minconNLP(nVars, nCons, x0ptr, Aptr, bptr, Aeqptr, beqptr, A_rows, A_cols, b_rows, b_cols, Aeq_rows, Aeq_cols, beq_rows, beq_cols, lbptr, ubptr, nonlinCon, nonlinIneqCon, flag1, flag2, flag3); + SmartPtr Prob = new minconNLP(nVars, nCons, x0ptr, Aptr, bptr, Aeqptr, beqptr, A_rows, A_cols, b_rows, b_cols, Aeq_rows, Aeq_cols, beq_rows, beq_cols, lbptr, ubptr, nonlinCon, nonlinIneqCon); SmartPtr app = IpoptApplicationFactory(); app->RethrowNonIpoptException(true); diff --git a/sci_gateway/cpp/sci_minconNLP.cpp b/sci_gateway/cpp/sci_minconNLP.cpp index 2c6d6af..600aed6 100644 --- a/sci_gateway/cpp/sci_minconNLP.cpp +++ b/sci_gateway/cpp/sci_minconNLP.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2015 - IIT Bombay - FOSSEE +// Copyright (C) 1815 - IIT Bombay - FOSSEE // // Author: R.Vidyadhar & Vignesh Kannan // Organization: FOSSEE, IIT Bombay @@ -49,7 +49,7 @@ bool minconNLP::get_nlp_info(Index& n, Index& m, Index& nnz_jac_g, Index& nnz_h_ m=numConstr_; // 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. + nnz_h_lag = n*n; // No. of elements in lower traingle of Hessian of the Lagrangian. index_style=C_STYLE; // Index style of matrices return true; @@ -80,7 +80,7 @@ bool minconNLP::get_bounds_info(Index n, Number* x_l, Number* x_u, Index m, Numb //bounds of non-linear inequality constraints for(i=0;i