Skip to content

Commit

Permalink
- changed default values for ipopt
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@19100 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
Vitalij Ruge committed Feb 13, 2014
1 parent 706b552 commit 33f62ec
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 2 deletions.
16 changes: 15 additions & 1 deletion SimulationRuntime/c/optimization/constraints/evalfG.c
Expand Up @@ -62,8 +62,10 @@ static int num_diff_symColoredODE(double *v, double t, IPOPT_DATA_ *iData, doubl
Bool evalfG(Index n, double * v, Bool new_x, int m, Number *g, void * useData)
{
IPOPT_DATA_ *iData;
//int i,k,j;
int i,k;
double *x0;
//double inf_p = 0;

iData = (IPOPT_DATA_ *) useData;
for(i=0, k=0, x0=v; i<1; ++i, x0=iData->x3){
Expand All @@ -79,16 +81,22 @@ Bool evalfG(Index n, double * v, Bool new_x, int m, Number *g, void * useData)
functionODE_(x0, x0 + iData->nx, iData->time[0], iData->dotx0, iData);
functionODE_(iData->x1, iData->u1, iData->time[1], iData->dotx1, iData);
evalG21(g + k, iData, x0, i);
//for(j = 0; j<(int)iData->nJ; ++j)
// inf_p = fmax(fabs(g[j]),inf_p);
k += iData->nJ;

/*2*/
functionODE_(iData->x2, iData->u2, iData->time[2], iData->dotx2, iData);
evalG22(g + k, iData, x0, i);
//for(j = 0; j<(int)iData->nJ; ++j)
// inf_p = fmax(fabs(g[j]),inf_p);
k += iData->nJ;

/*3*/
functionODE_(iData->x3, iData->u3, iData->time[3], iData->dotx3, iData);
evalG23(g + k, iData, x0, i);
//for(j = 0; j<(int)iData->nJ; ++j)
// inf_p = fmax(fabs(g[j]),inf_p);
k += iData->nJ;
}

Expand All @@ -104,19 +112,25 @@ Bool evalfG(Index n, double * v, Bool new_x, int m, Number *g, void * useData)
/*1*/
functionODE_(iData->x1, iData->u1, iData->time[i*iData->deg + 1], iData->dotx1, iData);
evalG11(g + k, iData, x0, i);
//for(j = 0; j<(int)iData->nJ; ++j)
// inf_p = fmax(fabs(g[j]),inf_p);
k += iData->nJ;

/*2*/
functionODE_(iData->x2, iData->u2, iData->time[i*iData->deg + 2], iData->dotx2, iData);
evalG12(g + k, iData, x0, i);
//for(j = 0; j<(int)iData->nJ; ++j)
// inf_p = fmax(fabs(g[j]),inf_p);
k += iData->nJ;

/*3*/
functionODE_(iData->x3, iData->u3, iData->time[i*iData->deg + 3], iData->dotx3, iData);
evalG13(g + k, iData, x0, i);
//for(j = 0; j<(int)iData->nJ; ++j)
// inf_p = fmax(fabs(g[j]),inf_p);
k += iData->nJ;
}

//printf("\ninf_p = %g\n",inf_p);
return TRUE;
}

Expand Down
14 changes: 13 additions & 1 deletion SimulationRuntime/c/optimization/mainOptimizer/ipoptODE.c
Expand Up @@ -260,7 +260,19 @@ static int set_optimizer_flags(IPOPT_DATA_ *iData, IpoptProblem *nlp)
AddIpoptStrOption(*nlp, "linear_solver", "mumps");

AddIpoptStrOption(*nlp,"nlp_scaling_method","gradient-based");
AddIpoptNumOption(*nlp,"mu_init",1e-6);
AddIpoptStrOption(*nlp,"linear_system_scaling","slack-based");
AddIpoptStrOption(*nlp,"dependency_detection_with_rhs","yes");

AddIpoptNumOption(*nlp,"bound_mult_init_val",1e-3);
AddIpoptNumOption(*nlp,"mu_init",1e-3);
AddIpoptNumOption(*nlp,"nu_init",1e-9);
//AddIpoptStrOption(*nlp,"bound_mult_init_method","constant");
//AddIpoptStrOption(*nlp,"print_options_documentation","yes");
AddIpoptStrOption(*nlp,"bound_mult_init_method","mu-based");
AddIpoptNumOption(*nlp,"eta_phi",1e-010);

//dependency_detection_with_rhs


if(ACTIVE_STREAM(LOG_IPOPT_JAC) && ACTIVE_STREAM(LOG_IPOPT_HESSE)){
AddIpoptIntOption(*nlp, "print_level", 4);
Expand Down

0 comments on commit 33f62ec

Please sign in to comment.