[Ipopt] ipopt - Multiple calls

Suresh Pamujula suresh.pamujula at gmail.com
Tue Apr 21 21:33:09 EDT 2009


More on multiple calls to IpoptSolve(...)

I get following error when the function is invoked second time.

EXIT: Converged to a point of local infeasibility. Problem may be
infeasible.


Attached is the code for your quick reference.



Here is code snippet ......

.................
.................
  Index j;                             /* generic counter */

  for (j=0;j<10;j++) {  /* Basically want to execute IpoptSolve 10 times
with different values on constraints */

    /* Number of nonzeros in the Jacobian of the constraints */
    Index nele_jac = 6;
    /* Number of nonzeros in the Hessian of the Lagrangian (lower or
     upper triangual part only) */
    Index nele_hess = 6;
    /* indexing style for matrices */
    Index index_style = 0; /* C-style; start counting of rows and column
                            indices at 0 */

    /* set the number of variables and allocate space for the bounds */
    n=3;
    x_L = (Number*)malloc(sizeof(Number)*n);
    x_U = (Number*)malloc(sizeof(Number)*n);
    /* set the values for the variable bounds */
    for (i=0; i<n; i++) {
      x_L[i] = 0.0;
      x_U[i] = 1.0;
    }

    /* set the number of constraints and allocate space for the bounds */
    m=2;
    g_L = (Number*)malloc(sizeof(Number)*m);
    g_U = (Number*)malloc(sizeof(Number)*m);

    /* set the values of the constraint bounds */
    g_L[0] = 0.065 + j*0.05;  /* increment return by 5% */
    g_U[0] = 2e19;
    g_L[1] = 1;
    g_U[1] = 1;

    /* create the IpoptProblem */
    nlp = CreateIpoptProblem(n, x_L, x_U, m, g_L, g_U, nele_jac, nele_hess,
                           index_style, &eval_f, &eval_g, &eval_grad_f,
                           &eval_jac_g, &eval_h);

    /* We can free the memory now - the values for the bounds have been
     copied internally in CreateIpoptProblem */
    free(x_L);
    free(x_U);
    free(g_L);
    free(g_U);

    /* Set some options.  Note the following ones are only examples,
     they might not be suitable for your problem. */
    AddIpoptNumOption(nlp, "tol", 1e-7);
    AddIpoptStrOption(nlp, "mu_strategy", "adaptive");
    AddIpoptStrOption(nlp, "output_file", "ipopt.out");

    /* allocate space for the initial point and set the values */
    x = (Number*)malloc(sizeof(Number)*n);
    x[0] = 0.2;
    x[1] = 0.4;
    x[2] = 0.4;

    /* allocate space to store the bound multipliers at the solution */
    mult_x_L = (Number*)malloc(sizeof(Number)*n);
    mult_x_U = (Number*)malloc(sizeof(Number)*n);

    /* solve the problem */
    status = IpoptSolve(nlp, x, NULL, &obj, NULL, mult_x_L, mult_x_U, NULL);

    if (status == Solve_Succeeded) {
    printf("\n\nSolution of the primal variables, x\n");
    for (i=0; i<n; i++) {
      printf("x[%d] = %e\n", i, x[i]);
    }

    printf("\n\nSolution of the bound multipliers, z_L and z_U\n");
    for (i=0; i<n; i++) {
      printf("z_L[%d] = %e\n", i, mult_x_L[i]);
    }
    for (i=0; i<n; i++) {
      printf("z_U[%d] = %e\n", i, mult_x_U[i]);
    }

    printf("\n\nObjective value\n");
    printf("f(x*) = %e\n", obj);
    }

    /* free allocated memory */
    FreeIpoptProblem(nlp);
    free(x);
    free(mult_x_L);
    free(mult_x_U);
  }

...........................
...........................
..........................


On Tue, Apr 21, 2009 at 11:57 AM, Suresh Pamujula <suresh.pamujula at gmail.com
> wrote:

> On 4/20/09, Suresh Pamujula <suresh.pamujula at gmail.com> wrote:
> > Hello -
> >
> > I want to inquire if there is a way to invoke functions
> >
> > CreateIpoptProblem(....)
> > and
> > IpoptSolve(...)
> >
> > multiple times with different lower bound on one of the constraints.
> >
> >
> >
> > I tried to call within a for loop, but it gives me "infeasible solution"
> > when it
> > is invoked second time.
> >
> >
> > Any help is truly appreciated.
> >
> >
> >
> > suresh
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://list.coin-or.org/pipermail/ipopt/attachments/20090421/b917c048/attachment.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hs071_c.c
Type: text/x-csrc
Size: 7639 bytes
Desc: not available
Url : http://list.coin-or.org/pipermail/ipopt/attachments/20090421/b917c048/attachment.bin 


More information about the Ipopt mailing list