54#include "worhp/worhp.h"
56#if WORHP_MAJOR < 2 && WORHP_MINOR < 10
57#error "Require at least Worhp 1.10"
60#define NLPI_DESC "Worhp interface"
61#define NLPI_PRIORITY_IP 0
62#define NLPI_PRIORITY_SQP -2000
64#define DEFAULT_VERBLEVEL 0
65#define DEFAULT_SCALEDKKT TRUE
66#define DEFAULT_RANDSEED 107
68#define MAXPERTURB 0.01
149 switch( problem->
cnt->status )
184 SCIPdebugMsg(
scip,
"Worhp failed because of a NaN value in an evaluation!\n");
192 case MinimumStepsize:
194 case LinearSolverFailed:
197 SCIPdebugMsg(
scip,
"Worhp failed because of a numerical error during optimization!\n");
208 SCIPdebugMsg(
scip,
"Worhp failed because maximal number of calls or iterations is reached!\n");
225 case DivergingPrimal:
237 case LocalInfeasOptimal:
240 SCIPdebugMsg(
scip,
"Worhp failed because of convergence against infeasible stationary point!\n");
250 SCIPdebugMsg(
scip,
"Worhp failed because of convergence against infeasible stationary point!\n");
257 case RegularizationFailed:
260 SCIPdebugMsg(
scip,
"Worhp failed because of regularization of Hessian matrix failed!\n");
267 case OptimalSolution:
276 case OptimalSolutionConstantF:
279 SCIPdebugMsg(
scip,
"Worhp terminated successfully with a feasible point but KKT are not met!\n");
285 case AcceptableSolutionSKKT:
286 case AcceptableSolutionScaled:
287 case AcceptablePreviousScaled:
290 SCIPdebugMsg(
scip,
"Worhp terminated successfully with a feasible point but KKT are violated in unscaled space!\n");
296 case LowPassFilterOptimal:
299 SCIPdebugMsg(
scip,
"Worhp terminated at feasible solution without further progress!\n");
305 case FeasibleSolution:
308 SCIPdebugMsg(
scip,
"Worhp terminated at feasible solution, optimality was not required!\n");
314 case AcceptableSolution:
315 case AcceptableSolutionConstantF:
318 SCIPdebugMsg(
scip,
"Worhp terminated at acceptable solution due to limit or error!\n");
324 case AcceptablePrevious:
325 case AcceptablePreviousConstantF:
328 SCIPdebugMsg(
scip,
"Worhp previously found acceptable solution but terminated due to limit or error!\n");
334 case LowPassFilterAcceptable:
337 SCIPdebugMsg(
scip,
"Worhp found acceptable solution but terminated due no further progress!\n");
343 case SearchDirectionZero:
344 case SearchDirectionSmall:
347 SCIPdebugMsg(
scip,
"Worhp found acceptable solution but search direction is small or zero!\n");
358 SCIPdebugMsg(
scip,
"Worhp found acceptable solution but terminated perhaps due to nondifferentiability, unboundedness or at Fritz John point!\n");
366 SCIPerrorMessage(
"Worhp returned with unknown solution status %d\n", problem->
cnt->status);
376 if( problem->
opt->m > 0 )
382 if( problem->
opt->n > 0 )
400 for(
i = 0;
i < problem->
opt->n; ++
i )
402 if( problem->
opt->Lambda[
i] <= 0.0 )
441#ifdef SCIP_DEBUG_USERF
446 for(
i = 0;
i < problem->
opt->n; ++
i )
447 printf(
" x[%d] = %g\n",
i, problem->
opt->X[
i]);
448 printf(
" obj = %g\n", problem->
opt->F);
471#ifdef SCIP_DEBUG_USERG
476 for(
i = 0;
i < problem->
opt->n; ++
i )
477 printf(
" x[%d] = %g\n",
i, problem->
opt->X[
i]);
479 for(
i = 0;
i < problem->
opt->m; ++
i )
480 printf(
" cons[%d] = %g\n",
i, problem->
opt->G[
i]);
505 problem->
wsp->DF.val) );
508 if( problem->
wsp->ScaleObj != 1.0 )
511 for(
i = 0;
i < problem->
opt->n; ++
i )
512 problem->
wsp->DF.val[
i] *= problem->
wsp->ScaleObj;
515#ifdef SCIP_DEBUG_USERDF
519 printf(
"userDF()\n");
520 for(
i = 0;
i < problem->
opt->n; ++
i )
521 printf(
" x[%d] = %g\n",
i, problem->
opt->X[
i]);
523 for(
i = 0;
i < problem->
opt->n; ++
i )
524 printf(
" DF[%d] = %g\n",
i, problem->
wsp->DF.val[
i]);
556 for(
i = 0;
i < problem->
wsp->DG.nnz; ++
i )
558 problem->
wsp->DG.val[
i] = jacvals[ problem->
wsp->DG.perm[
i]-1 ];
561#ifdef SCIP_DEBUG_USERDG
562 printf(
"userDG()\n");
563 for(
i = 0;
i < problem->
opt->n; ++
i )
564 printf(
" x[%d] = %g\n",
i, problem->
opt->X[
i]);
565 for(
i = 0;
i < problem->
wsp->DG.nnz; ++
i )
566 printf(
" DG[%d] = %g\n",
i, problem->
wsp->DG.val[
i]);
597 nnonz = offset[problem->
opt->n];
602 problem->
opt->Mu, hessianvals,
FALSE);
609 for(
i = 0;
i < problem->
wsp->HM.nnz; ++
i )
612 if( problem->
wsp->HM.perm[
i] - 1 >= nnonz )
613 problem->
wsp->HM.val[
i] = 0.0;
615 problem->
wsp->HM.val[
i] = hessianvals[ problem->
wsp->HM.perm[
i] - 1 ];
619 printf(
"userHM()\n");
620 for(
i = 0;
i < problem->
opt->n; ++
i )
621 printf(
" x[%d] = %g\n",
i, problem->
opt->X[
i]);
622 for(
i = 0;
i < problem->
wsp->HM.nnz; ++
i )
623 printf(
" HM[%d] = %g\n",
i, problem->
wsp->HM.val[
i]);
675 WorhpPreInit(opt, wsp, par, cnt);
683 wsp->DF.nnz = opt->n;
687 wsp->DG.nnz = offset[opt->m];
698 for(
i = 0;
i < opt->n; ++
i )
704 for( ; j < offset[
i+1]; ++j )
713 assert(offset[opt->n] <= wsp->HM.nnz);
717 WorhpInit(opt, wsp, par, cnt);
718 if (cnt->status != FirstCall)
732 for(
i = 0;
i < opt->n; ++
i )
739 for(
i = 0;
i < opt->m; ++
i )
759 for(
i = 0;
i < opt->n; ++
i )
761 wsp->DF.row[
i] =
i + 1;
773 assert(offset[opt->m] == wsp->DG.nnz);
777 for(
i = 0;
i < opt->m; ++
i )
779 for( ; j < offset[
i+1]; ++j )
781 wsp->DG.row[nnonz] =
i + 1;
782 wsp->DG.col[nnonz] = cols[j] + 1;
786 assert(nnonz == wsp->DG.nnz);
789 SortWorhpMatrix(&wsp->DG);
793 if( problem->
par->UserHM || problem->
par->FidifHM || problem->
par->BFGSmethod > 1 )
799 assert(offset[opt->n] <= wsp->HM.nnz);
804 for(
i = 0;
i < opt->n; ++
i )
808 for( ; j < offset[
i+1]; ++j )
810 problem->
wsp->HM.row[nnonz] =
i + 1;
811 problem->
wsp->HM.col[nnonz] = cols[j] + 1;
821 problem->
wsp->HM.row[k] =
i + 1;
822 problem->
wsp->HM.col[k] =
i + 1;
826 assert(nnonz == offset[opt->n]);
830 SortWorhpMatrix(&wsp->HM);
834 for(
i = 0;
i < wsp->HM.nnz; ++
i )
863 WorhpRestart(problem->
opt, problem->
wsp, problem->
par, problem->
cnt);
868 for(
i = 0;
i < problem->
opt->n; ++
i )
870 problem->
opt->XL[
i] = lbs[
i];
871 problem->
opt->XU[
i] = ubs[
i];
875 for(
i = 0;
i < problem->
opt->m; ++
i )
896 if( problem->
opt->initialised )
897 WorhpFree(problem->
opt, problem->
wsp, problem->
par, problem->
cnt);
919 par->Algorithm = nlpidata->useip ? 2 : 1;
926 SCIPdebugMsg(
scip,
"warmstart parameter not supported by Worhp interface yet. Ignored.\n");
936 SCIPdebugMsg(
scip,
"fastfail parameter not supported by Worhp interface yet. Ignored.\n");
939 par->TolFeas = nlpparam.
feastol;
940 par->TolOpti = nlpparam.
opttol;
941 par->TolComp = nlpparam.
opttol;
948 par->CheckValuesDF =
TRUE;
949 par->CheckValuesDG =
TRUE;
950 par->CheckValuesHM =
TRUE;
1001 (*problem)->firstrun =
TRUE;
1010 WorhpPreInit((*problem)->opt, (*problem)->wsp, (*problem)->par, (*problem)->cnt);
1026 if( (*problem)->opt !=
NULL )
1043 if( (*problem)->oracle !=
NULL )
1068 problem->firstrun =
TRUE;
1084 nlininds, lininds, linvals,
1088 problem->firstrun =
TRUE;
1107 problem->firstrun =
TRUE;
1110 constant, nlins, lininds, linvals, expr) );
1121#ifdef SCIP_DISABLED_CODE
1131#ifdef SCIP_DISABLED_CODE
1138 int index = indices[
i];
1139 SCIPdebugMsg(
scip,
"change bounds of %d from [%g,%g] -> [%g,%g]\n", index, oldlbs[index], oldubs[index],
1142 if(
REALABS(lbs[
i] - ubs[
i]) <= problem->feastol )
1143 problem->firstrun =
TRUE;
1145 if(
REALABS(oldlbs[index] - oldubs[index]) <= problem->feastol )
1146 problem->firstrun =
TRUE;
1171 for(
i = 0;
i < nconss; ++
i )
1173 int index = indices[
i];
1176 SCIPdebugMsg(
scip,
"change constraint side of %d from [%g,%g] -> [%g,%g]\n", index, oldlhs, oldrhs, lhss[
i], rhss[
i]);
1201 problem->firstrun =
TRUE;
1217 problem->firstrun =
TRUE;
1233 problem->firstrun =
TRUE;
1249 problem->firstrun =
TRUE;
1275 if( primalvalues !=
NULL )
1277 if( !problem->initguess )
1298 Workspace* wsp = problem->wsp;
1299 Control* cnt = problem->cnt;
1300 OptVar* opt = problem->opt;
1301 Params* par = problem->par;
1309 if( param.timelimit == 0.0 )
1312 problem->lastniter = 0;
1313 problem->lasttime = 0.0;
1320 problem->lastniter = -1;
1321 problem->lasttime = -1.0;
1323 if( param.verblevel == 0 )
1332 SetWorhpPrint(WorhpDefaultPrintFunction);
1336 if( problem->firstrun )
1340 problem->firstrun =
FALSE;
1348 InitParams(&status, par);
1360 if( problem->initguess !=
NULL )
1370 SCIPdebugMsg(
scip,
"Worhp started without initial primal values; make up starting guess by projecting 0 onto variable bounds\n");
1372 for(
i = 0;
i < problem->opt->n; ++
i )
1389 for(
i = 0;
i < problem->opt->n; ++
i )
1409 if( GetUserAction(cnt, callWorhp) )
1411 Worhp(opt, wsp, par, cnt);
1419 if( GetUserAction(cnt, iterOutput) )
1421 IterationOutput(opt, wsp, par, cnt);
1422 DoneUserAction(cnt, iterOutput);
1429 if( GetUserAction(cnt, evalF) )
1433 DoneUserAction(cnt, evalF);
1440 if( GetUserAction(cnt, evalG) )
1444 DoneUserAction(cnt, evalG);
1451 if( GetUserAction(cnt, evalDF) )
1455 DoneUserAction(cnt, evalDF);
1462 if( GetUserAction(cnt, evalDG) )
1466 DoneUserAction(cnt, evalDG);
1473 if( GetUserAction(cnt, evalHM) )
1477 DoneUserAction(cnt, evalHM);
1484 if( GetUserAction(cnt, fidif) )
1486 WorhpFidif(opt, wsp, par, cnt);
1497 else if( cnt->status < TerminateSuccess && cnt->status > TerminateError )
1509 StatusMsg(opt, wsp, par, cnt);
1512 problem->lastniter = wsp->MajorIter;
1513 problem->lasttime = GetTimerCont(&cnt->Timer);
1525 return problem->lastsolstat;
1535 return problem->lasttermstat;
1544 if( primalvalues !=
NULL )
1545 *primalvalues = problem->lastprimal;
1547 if( consdualvalues !=
NULL )
1548 *consdualvalues = problem->lastdualcons;
1550 if( varlbdualvalues !=
NULL )
1551 *varlbdualvalues = problem->lastduallb;
1553 if( varubdualvalues !=
NULL )
1554 *varubdualvalues = problem->lastdualub;
1558 if( problem->lastprimal !=
NULL )
1578 statistics->niterations = problem->lastniter;
1579 statistics->totaltime = problem->lasttime;
1581 statistics->consviol = problem->wsp->FeasOrigMax;
1582 statistics->boundviol = 0.0;
1603 nlpidata->useip = useip;
1606 (void) setenv(
"WORHP_DISABLE_KEYBOARD_HANDLER",
"1", 0);
1608#if DEFAULT_VERBLEVEL == 0
1630 nlpiCopyWorhp, nlpiFreeWorhp,
NULL,
1631 nlpiCreateProblemWorhp, nlpiFreeProblemWorhp,
NULL,
1632 nlpiAddVarsWorhp, nlpiAddConstraintsWorhp, nlpiSetObjectiveWorhp,
1633 nlpiChgVarBoundsWorhp, nlpiChgConsSidesWorhp, nlpiDelVarSetWorhp, nlpiDelConstraintSetWorhp,
1634 nlpiChgLinearCoefsWorhp, nlpiChgExprWorhp,
1635 nlpiChgObjConstantWorhp, nlpiSetInitialGuessWorhp, nlpiSolveWorhp, nlpiGetSolstatWorhp, nlpiGetTermstatWorhp,
1636 nlpiGetSolutionWorhp, nlpiGetStatisticsWorhp,
1653 return "WORHP " WORHP_VERSION;
1655 static char solvername[20];
1656 sprintf(solvername,
"WORHP %d.%d." WORHP_PATCH, WORHP_MAJOR, WORHP_MINOR);
1666 return "Nonlinear programming solver developed at Research Institute Steinbeis (www.worhp.de)";
methods to interpret (evaluate) an expression "fast"
void SCIPwarningMessage(SCIP *scip, const char *formatstr,...)
SCIP_RETCODE SCIPincludeNlpSolverWorhp(SCIP *scip, SCIP_Bool useip)
SCIP_RETCODE SCIPnlpiOracleEvalObjectiveValue(SCIP *scip, SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Real *objval)
SCIP_RETCODE SCIPnlpiOracleChgLinearCoefs(SCIP *scip, SCIP_NLPIORACLE *oracle, int considx, int nentries, const int *varidxs, const SCIP_Real *newcoefs)
SCIP_RETCODE SCIPnlpiOracleGetJacobianRowSparsity(SCIP *scip, SCIP_NLPIORACLE *oracle, const int **rowoffsets, const int **cols, const SCIP_Bool **colnlflags, int *nnlnz)
SCIP_RETCODE SCIPnlpiOracleGetHessianLagSparsity(SCIP *scip, SCIP_NLPIORACLE *oracle, const int **offset, const int **allnz, SCIP_Bool colwise)
SCIP_RETCODE SCIPnlpiOracleChgVarBounds(SCIP *scip, SCIP_NLPIORACLE *oracle, int nvars, const int *indices, const SCIP_Real *lbs, const SCIP_Real *ubs)
SCIP_RETCODE SCIPnlpiOracleAddConstraints(SCIP *scip, SCIP_NLPIORACLE *oracle, int nconss, const SCIP_Real *lhss, const SCIP_Real *rhss, const int *nlininds, int *const *lininds, SCIP_Real *const *linvals, SCIP_EXPR **exprs, const char **consnames)
SCIP_Bool SCIPnlpiOracleIsConstraintNonlinear(SCIP_NLPIORACLE *oracle, int considx)
SCIP_RETCODE SCIPnlpiOracleDelVarSet(SCIP *scip, SCIP_NLPIORACLE *oracle, int *delstats)
SCIP_RETCODE SCIPnlpiOracleEvalConstraintValues(SCIP *scip, SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Real *convals)
SCIP_RETCODE SCIPnlpiOracleCreate(SCIP *scip, SCIP_NLPIORACLE **oracle)
SCIP_RETCODE SCIPnlpiOracleEvalObjectiveGradient(SCIP *scip, SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Bool isnewx, SCIP_Real *objval, SCIP_Real *objgrad)
SCIP_RETCODE SCIPnlpiOracleResetEvalTime(SCIP *scip, SCIP_NLPIORACLE *oracle)
SCIP_RETCODE SCIPnlpiOraclePrintProblem(SCIP *scip, SCIP_NLPIORACLE *oracle, FILE *file)
SCIP_RETCODE SCIPnlpiOracleSetObjective(SCIP *scip, SCIP_NLPIORACLE *oracle, const SCIP_Real constant, int nlin, const int *lininds, const SCIP_Real *linvals, SCIP_EXPR *expr)
SCIP_Real SCIPnlpiOracleGetConstraintRhs(SCIP_NLPIORACLE *oracle, int considx)
SCIP_Real SCIPnlpiOracleGetEvalTime(SCIP *scip, SCIP_NLPIORACLE *oracle)
SCIP_RETCODE SCIPnlpiOracleChgConsSides(SCIP *scip, SCIP_NLPIORACLE *oracle, int nconss, const int *indices, const SCIP_Real *lhss, const SCIP_Real *rhss)
SCIP_Real SCIPnlpiOracleGetConstraintLhs(SCIP_NLPIORACLE *oracle, int considx)
SCIP_RETCODE SCIPnlpiOracleAddVars(SCIP *scip, SCIP_NLPIORACLE *oracle, int nvars, const SCIP_Real *lbs, const SCIP_Real *ubs, const char **varnames)
SCIP_RETCODE SCIPnlpiOracleEvalHessianLag(SCIP *scip, SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Bool isnewx_obj, SCIP_Bool isnewx_cons, SCIP_Real objfactor, const SCIP_Real *lambda, SCIP_Real *hessian, SCIP_Bool colwise)
int SCIPnlpiOracleGetNVars(SCIP_NLPIORACLE *oracle)
int SCIPnlpiOracleGetNConstraints(SCIP_NLPIORACLE *oracle)
SCIP_RETCODE SCIPnlpiOracleEvalJacobian(SCIP *scip, SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Bool isnewx, SCIP_Real *convals, SCIP_Real *jacobi)
SCIP_RETCODE SCIPnlpiOracleDelConsSet(SCIP *scip, SCIP_NLPIORACLE *oracle, int *delstats)
SCIP_RETCODE SCIPnlpiOracleSetProblemName(SCIP *scip, SCIP_NLPIORACLE *oracle, const char *name)
SCIP_RETCODE SCIPnlpiOracleChgObjConstant(SCIP *scip, SCIP_NLPIORACLE *oracle, SCIP_Real objconstant)
const SCIP_Real * SCIPnlpiOracleGetVarLbs(SCIP_NLPIORACLE *oracle)
const SCIP_Real * SCIPnlpiOracleGetVarUbs(SCIP_NLPIORACLE *oracle)
SCIP_RETCODE SCIPnlpiOracleFree(SCIP *scip, SCIP_NLPIORACLE **oracle)
struct SCIP_NlpiOracle SCIP_NLPIORACLE
SCIP_RETCODE SCIPnlpiOracleChgExpr(SCIP *scip, SCIP_NLPIORACLE *oracle, int considx, SCIP_EXPR *expr)
const char * SCIPgetSolverNameWorhp(void)
const char * SCIPgetSolverDescWorhp(void)
SCIP_Bool SCIPisWorhpAvailableWorhp(void)
SCIP_RETCODE SCIPincludeExternalCodeInformation(SCIP *scip, const char *name, const char *description)
#define SCIPfreeMemoryArrayNull(scip, ptr)
#define SCIPfreeBlockMemoryArray(scip, ptr, num)
#define SCIPallocClearBlockMemory(scip, ptr)
#define SCIPduplicateMemoryArray(scip, ptr, source, num)
#define SCIPallocBlockMemoryArray(scip, ptr, num)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPfreeBlockMemoryArrayNull(scip, ptr, num)
#define SCIPallocBlockMemory(scip, ptr)
#define SCIPduplicateBlockMemoryArray(scip, ptr, source, num)
SCIP_RETCODE SCIPincludeNlpi(SCIP *scip, const char *name, const char *description, int priority, SCIP_DECL_NLPICOPY((*nlpicopy)), SCIP_DECL_NLPIFREE((*nlpifree)), SCIP_DECL_NLPIGETSOLVERPOINTER((*nlpigetsolverpointer)), SCIP_DECL_NLPICREATEPROBLEM((*nlpicreateproblem)), SCIP_DECL_NLPIFREEPROBLEM((*nlpifreeproblem)), SCIP_DECL_NLPIGETPROBLEMPOINTER((*nlpigetproblempointer)), SCIP_DECL_NLPIADDVARS((*nlpiaddvars)), SCIP_DECL_NLPIADDCONSTRAINTS((*nlpiaddconstraints)), SCIP_DECL_NLPISETOBJECTIVE((*nlpisetobjective)), SCIP_DECL_NLPICHGVARBOUNDS((*nlpichgvarbounds)), SCIP_DECL_NLPICHGCONSSIDES((*nlpichgconssides)), SCIP_DECL_NLPIDELVARSET((*nlpidelvarset)), SCIP_DECL_NLPIDELCONSSET((*nlpidelconsset)), SCIP_DECL_NLPICHGLINEARCOEFS((*nlpichglinearcoefs)), SCIP_DECL_NLPICHGEXPR((*nlpichgexpr)), SCIP_DECL_NLPICHGOBJCONSTANT((*nlpichgobjconstant)), SCIP_DECL_NLPISETINITIALGUESS((*nlpisetinitialguess)), SCIP_DECL_NLPISOLVE((*nlpisolve)), SCIP_DECL_NLPIGETSOLSTAT((*nlpigetsolstat)), SCIP_DECL_NLPIGETTERMSTAT((*nlpigettermstat)), SCIP_DECL_NLPIGETSOLUTION((*nlpigetsolution)), SCIP_DECL_NLPIGETSTATISTICS((*nlpigetstatistics)), SCIP_NLPIDATA *nlpidata)
SCIP_NLPIDATA * SCIPnlpiGetData(SCIP_NLPI *nlpi)
SCIP_Bool SCIPisSolveInterrupted(SCIP *scip)
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPrandomGetReal(SCIP_RANDNUMGEN *randnumgen, SCIP_Real minrandval, SCIP_Real maxrandval)
int SCIPsnprintf(char *t, int len, const char *s,...)
SCIPfreeRandom(scip, &heurdata->randnumgen)
SCIPcreateRandom(scip, &heurdata->randnumgen, DEFAULT_RANDSEED, TRUE))
assert(minobj< SCIPgetCutoffbound(scip))
methods for catching the user CTRL-C interrupt
#define BMScopyMemoryArray(ptr, source, num)
static SCIP_RETCODE userG(SCIP *scip, SCIP_NLPIPROBLEM *problem)
static void noprint(int mode, const char s[])
static SCIP_RETCODE userDG(SCIP *scip, SCIP_NLPIPROBLEM *problem)
static SCIP_RETCODE userDF(SCIP *scip, SCIP_NLPIPROBLEM *problem)
static SCIP_RETCODE userHM(SCIP *scip, SCIP_NLPIPROBLEM *problem)
#define NLPI_PRIORITY_SQP
static SCIP_RETCODE userF(SCIP *scip, SCIP_NLPIPROBLEM *problem)
static SCIP_RETCODE initWorhp(SCIP *scip, SCIP_NLPI *nlpi, SCIP_NLPIPROBLEM *problem)
static SCIP_RETCODE updateWorhp(SCIP_NLPIPROBLEM *problem)
static void invalidateSolution(SCIP *scip, SCIP_NLPIPROBLEM *problem)
static SCIP_RETCODE freeWorhp(SCIP_NLPIPROBLEM *problem)
static SCIP_RETCODE handleNlpParam(SCIP *scip, SCIP_NLPI *nlpi, Params *par, const SCIP_NLPPARAM nlpparam)
#define DEFAULT_SCALEDKKT
static SCIP_RETCODE evaluateWorhpRun(SCIP *scip, SCIP_NLPIPROBLEM *problem)
methods to store an NLP and request function, gradient, and Hessian values
public methods for message output
public data structures and miscellaneous methods
public methods for memory management
public methods for message handling
public methods for NLPI solver interfaces
public methods for numerical tolerances
public methods for random numbers
SCIP_NLPPARAM_FASTFAIL fastfail
SCIP_RANDNUMGEN * randnumgen
SCIP_NLPTERMSTAT lasttermstat
SCIP_NLPSOLSTAT lastsolstat
struct SCIP_RandNumGen SCIP_RANDNUMGEN
#define SCIP_DECL_NLPISOLVE(x)
struct SCIP_NlpiProblem SCIP_NLPIPROBLEM
#define SCIP_DECL_NLPICHGLINEARCOEFS(x)
#define SCIP_DECL_NLPICHGOBJCONSTANT(x)
#define SCIP_NLPPARAM_PRINT(param)
#define SCIP_DECL_NLPIGETSOLUTION(x)
#define SCIP_DECL_NLPISETOBJECTIVE(x)
#define SCIP_DECL_NLPICREATEPROBLEM(x)
#define SCIP_DECL_NLPIGETSTATISTICS(x)
#define SCIP_DECL_NLPIDELCONSSET(x)
#define SCIP_DECL_NLPICHGCONSSIDES(x)
struct SCIP_Nlpi SCIP_NLPI
#define SCIP_DECL_NLPIDELVARSET(x)
#define SCIP_DECL_NLPICHGEXPR(x)
#define SCIP_DECL_NLPIADDVARS(x)
enum SCIP_NlpSolStat SCIP_NLPSOLSTAT
#define SCIP_DECL_NLPISETINITIALGUESS(x)
#define SCIP_DECL_NLPIFREEPROBLEM(x)
@ SCIP_NLPTERMSTAT_TIMELIMIT
@ SCIP_NLPTERMSTAT_NUMERICERROR
@ SCIP_NLPTERMSTAT_EVALERROR
@ SCIP_NLPTERMSTAT_LICENSEERROR
@ SCIP_NLPTERMSTAT_ITERLIMIT
@ SCIP_NLPTERMSTAT_OUTOFMEMORY
@ SCIP_NLPTERMSTAT_INTERRUPT
#define SCIP_DECL_NLPICOPY(x)
#define SCIP_DECL_NLPIGETSOLSTAT(x)
#define SCIP_DECL_NLPICHGVARBOUNDS(x)
#define SCIP_DECL_NLPIFREE(x)
#define SCIP_DECL_NLPIADDCONSTRAINTS(x)
@ SCIP_NLPSOLSTAT_UNBOUNDED
@ SCIP_NLPSOLSTAT_GLOBINFEASIBLE
@ SCIP_NLPSOLSTAT_LOCINFEASIBLE
@ SCIP_NLPSOLSTAT_FEASIBLE
@ SCIP_NLPSOLSTAT_UNKNOWN
#define SCIP_DECL_NLPIGETTERMSTAT(x)
struct SCIP_NlpParam SCIP_NLPPARAM
enum SCIP_NlpTermStat SCIP_NLPTERMSTAT
struct SCIP_NlpiData SCIP_NLPIDATA
enum SCIP_Retcode SCIP_RETCODE