int main(int argv, char* argc[]) { // Create a new instance of your nlp // (use a SmartPtr, not raw) SmartPtr<TNLP> mynlp = new HS071_NLP(); // Create a new instance of IpoptApplication // (use a SmartPtr, not raw) // We are using the factory, since this allows us to compile this // example with an Ipopt Windows DLL SmartPtr<IpoptApplication> app = IpoptApplicationFactory(); app->RethrowNonIpoptException(true); // Change some options // Note: The following choices are only examples, they might not be // suitable for your optimization problem. app->Options()->SetNumericValue("tol", 1e-7); app->Options()->SetStringValue("mu_strategy", "adaptive"); app->Options()->SetStringValue("output_file", "ipopt.out"); // The following overwrites the default name (ipopt.opt) of the // options file // app->Options()->SetStringValue("option_file_name", "hs071.opt"); // Initialize the IpoptApplication and process the options ApplicationReturnStatus status; status = app->Initialize(); if (status != Solve_Succeeded) { std::cout << std::endl << std::endl << "*** Error during initialization!" << std::endl; return (int) status; } // Ask Ipopt to solve the problem status = app->OptimizeTNLP(mynlp); if (status == Solve_Succeeded) { std::cout << std::endl << std::endl << "*** The problem solved!" << std::endl; } else { std::cout << std::endl << std::endl << "*** The problem FAILED!" << std::endl; } // As the SmartPtrs go out of scope, the reference count // will be decremented and the objects will automatically // be deleted. return (int) status; }
int loadProblem(char *fname,unsigned long len ){ CheckInputArgument(pvApiCtx, 9, 9); // We need total 9 input arguments. CheckOutputArgument(pvApiCtx, 1, 1); // Return value will be termination status (0 for no-errors and 1/non-zero for errors) double *QItems=NULL,*PItems=NULL,*ConItems=NULL,*conUB=NULL,*conLB=NULL,*varUB=NULL,*varLB=NULL; unsigned int nVars,nCons; unsigned int arg = 1,temp1,temp2; if ( !getIntFromScilab(arg,&nVars) && arg++ && !getIntFromScilab(arg,&nCons) && arg++ && !getDoubleMatrixFromScilab(arg,&temp1,&temp2,&QItems) && temp1 == nVars && temp2 == nVars && arg++ && !getDoubleMatrixFromScilab(arg,&temp1,&temp2,&PItems) && temp2 == nVars && arg++ && !getDoubleMatrixFromScilab(arg,&temp1,&temp2,&ConItems) && temp1 == nCons &&((nCons !=0 && temp2 == nVars)||(temp2==0)) && arg++ && !getDoubleMatrixFromScilab(arg,&temp1,&temp2,&conLB) && temp2 == nCons && arg++ && !getDoubleMatrixFromScilab(arg,&temp1,&temp2,&conUB) && temp2 == nCons && arg++ && !getDoubleMatrixFromScilab(arg,&temp1,&temp2,&varLB) && temp2 == nVars && arg++ && !getDoubleMatrixFromScilab(arg,&temp1,&temp2,&varUB) && temp2 == nVars){ using namespace Ipopt; SmartPtr<TNLP> Prob = new QuadNLP(nVars,nCons,QItems,PItems,ConItems,conUB,conLB,varUB,varLB); SmartPtr<IpoptApplication> app = IpoptApplicationFactory(); app->RethrowNonIpoptException(true); // Change some options // Note: The following choices are only examples, they might not be // suitable for your optimization problem. app->Options()->SetNumericValue("tol", 1e-7); app->Options()->SetStringValue("mu_strategy", "adaptive"); app->Options()->SetStringValue("output_file", "ipopt.out"); // Indicates whether all equality constraints are linear app->Options()->SetStringValue("jac_c_constant", "yes"); // Indicates whether all inequality constraints are linear app->Options()->SetStringValue("jac_d_constant", "yes"); // Indicates whether the problem is a quadratic problem app->Options()->SetStringValue("hessian_constant", "yes"); // The following overwrites the default name (ipopt.opt) of the // options file // app->Options()->SetStringValue("option_file_name", "hs071.opt"); // Initialize the IpoptApplication and process the options ApplicationReturnStatus status; status = app->Initialize(); if (status != Solve_Succeeded) { sciprint("\n*** Error during initialization!\n"); return0toScilab(); return (int) status; } // Ask Ipopt to solve the problem status = app->OptimizeTNLP(Prob); if (status == Solve_Succeeded) { sciprint("\n*** The problem solved!\n"); } else { sciprint( "\n*** The problem FAILED!\n"); } // As the SmartPtrs go out of scope, the reference count // will be decremented and the objects will automatically // be deleted. } else { sciprint("\nError:: check argument %d\n",arg); return0toScilab(); return 1; } return0toScilab(); }
int main(int argc, char**args) { using namespace Ipopt; SmartPtr<IpoptApplication> app = IpoptApplicationFactory(); app->RethrowNonIpoptException(false); // Check if executable is run only to print out options documentation if (argc == 2) { bool print_options = false; bool print_latex_options = false; if (!strcmp(args[1],"--print-options")) { print_options = true; } else if (!strcmp(args[1],"--print-latex-options")) { print_options = true; print_latex_options = true; } if (print_options) { SmartPtr<OptionsList> options = app->Options(); options->SetStringValue("print_options_documentation", "yes"); if (print_latex_options) { options->SetStringValue("print_options_latex_mode", "yes"); } app->Initialize(""); return 0; } } // Call Initialize the first time to create a journalist, but ignore // any options file ApplicationReturnStatus retval; retval = app->Initialize(""); if (retval != Solve_Succeeded) { printf("ampl_ipopt.cpp: Error in first Initialize!!!!\n"); exit(-100); } // Add the suffix handler for scaling SmartPtr<AmplSuffixHandler> suffix_handler = new AmplSuffixHandler(); suffix_handler->AddAvailableSuffix("scaling_factor", AmplSuffixHandler::Variable_Source, AmplSuffixHandler::Number_Type); suffix_handler->AddAvailableSuffix("scaling_factor", AmplSuffixHandler::Constraint_Source, AmplSuffixHandler::Number_Type); suffix_handler->AddAvailableSuffix("scaling_factor", AmplSuffixHandler::Objective_Source, AmplSuffixHandler::Number_Type); // Modified for warm-start from AMPL suffix_handler->AddAvailableSuffix("ipopt_zL_out", AmplSuffixHandler::Variable_Source, AmplSuffixHandler::Number_Type); suffix_handler->AddAvailableSuffix("ipopt_zU_out", AmplSuffixHandler::Variable_Source, AmplSuffixHandler::Number_Type); suffix_handler->AddAvailableSuffix("ipopt_zL_in", AmplSuffixHandler::Variable_Source, AmplSuffixHandler::Number_Type); suffix_handler->AddAvailableSuffix("ipopt_zU_in", AmplSuffixHandler::Variable_Source, AmplSuffixHandler::Number_Type); SmartPtr<TNLP> ampl_tnlp = new AmplTNLP(ConstPtr(app->Jnlst()), app->Options(), args, suffix_handler); // Call Initialize again to process output related options retval = app->Initialize(); if (retval != Solve_Succeeded) { printf("ampl_ipopt.cpp: Error in second Initialize!!!!\n"); exit(-101); } const int n_loops = 1; // make larger for profiling for (Index i=0; i<n_loops; i++) { retval = app->OptimizeTNLP(ampl_tnlp); } // finalize_solution method in AmplTNLP writes the solution file return 0; }