Download LINDO API USER MANUAL

Transcript
366
CHAPTER 7
code[ikod++]= EP_MULTIPLY;
/* Length of constraint 5 */
cons_length[icon] = ikod - cons_beg[icon];
/* Total number of items in the instruction list */
lsize = ikod;
/* Set linearization level, before a call to LSloadInstruct.
* If not specified, the solver will decide */
nLinearz = 1;
nErrorCode = LSsetModelIntParameter (pModel,
LS_IPARAM_NLP_LINEARZ, nLinearz);
APIERRORCHECK;
/* Set up automatic differentiation, before a call to
* LSloadInstruct. If not specified, the numerical derivative
* will be applied */
nAutoDeriv = 1;
nErrorCode = LSsetModelIntParameter (pModel,
LS_IPARAM_NLP_AUTODERIV, nAutoDeriv);
APIERRORCHECK;
/* Pass the instruction list to problem structure
* by a call to LSloadInstruct() */
nErrorCode = LSloadInstruct (pModel, ncons, nobjs, nvars,
nnums,
objsense, ctype, vtype, code, lsize, varndx,
numval, varval, objs_beg, objs_length, cons_beg,
cons_length, lwrbnd, uprbnd);
APIERRORCHECK;
}
/*
* >>> Step 5 <<< Perform the optimization using the MIP solver
*/
nErrorCode = LSsolveMIP(pModel, NULL);
APIERRORCHECK;
{
int nLinearity;
double objval=0.0, primal[100];
/* Get the optimization result */
LSgetInfo(pModel, LS_DINFO_MIP_OBJ, &objval);
APIERRORCHECK;
LSgetMIPPrimalSolution( pModel, primal) ;
APIERRORCHECK;
printf("\n\nObjective = %f \n",objval);
printf("x[0] = %f \n",primal[0]);
printf("x[1] = %f \n",primal[1]);
/* Get the linearity of the solved model */
nErrorCode = LSgetModelIntParameter (pModel,
LS_IPARAM_NLP_LINEARITY, &nLinearity);
APIERRORCHECK;
/* Report the status of solution */
if (nLinearity)
printf("\nModel has been completely linearized.\
\nSolution Status: Globally Optimal\n");
else
printf("\nModel is nonlinear.\
\nSolution Status: Locally Optimal\n\n");