<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Omid,</p>
    <p>We've also done large problems, 25M variables and 10M
      constraints, and with the limited memory Hessian, no second
      derivatives, and MKL Pardiso. The first thing is to get your first
      derivatives right. Smooth, continuous and make sure they're not
      zero, this kills the linear solver.</p>
    <p>Second, IPOPT is a good optimiser but it's a weak nonlinear
      equation solver. If you solve a straight NxN sparse nonlinear
      problem, a standard Newton solver will be much faster than IPOPT.
      If you can give IPOPT a decent starting point, like a converged
      but not optimised system, you'll be much more likely to succeed.
      When I say converged but not optimised, I mean the basic physics,
      such as the equality constraints are all converged but the
      inequalities aren't. This is what we do, a basic solve of the
      physics (material, momentum and energy balance in our case) with a
      Newton solver and then load the model with the optimisation
      structure into IPOPT. One other advantage of this is that you can
      see if you've posed the physics correctly before you try and
      optimise.</p>
    <p>Damien<br>
    </p>
    <div class="moz-cite-prefix">On 2020-12-16 6:11 a.m., Seth Watts
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAFg5f7NT4qJJ-pKCDmYrsEOv4XTVrf+8esH_+0er62ARwq0awQ@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div>
        <div dir="auto">Hi Omid -</div>
        <div dir="auto"><br>
        </div>
        <div dir="auto">I often use Ipopt to solve problems at the same
          order of your large problem, although in my case the physics
          is solid mechanics solved with FEA. Even for linear physics,
          the runtime is dominated by the physics rather than the Ipopt
          functions. I haven’t checked lately, but my recollection is
          that 95+% of the runtime is spent evaluating f, g, df, and dg,
          rather than solving for an update (for which I use the HSL
          solvers). </div>
        <div dir="auto"><br>
        </div>
        <div dir="auto">I would therefore start by trying to accelerate
          your response function evaluations. How do you evaluate their
          derivatives? An adjoint sensitivity analysis is almost
          certainly the best choice. Can you reduce the number of times
          you need to solve your physics by saving the solution fields
          for each update (rather than the naive approach of solving
          them each time you need to evaluate a response function)? <span
            style="color:rgb(0,0,0)">Can you parallelize your physics to
            reduce walltime? </span>How many constraint functions do you
          have? It might be possible to reformulate them to reduce the
          number, which would reduce time spent solving for an update as
          well as time spent evaluating constraint derivatives. </div>
        <div dir="auto"><br>
        </div>
        <div dir="auto">- Seth </div>
        <div><br>
        </div>
      </div>
      <div>
        <div>
          <div class="gmail_quote">
            <div dir="ltr" class="gmail_attr">On Wed, Dec 16, 2020 at
              5:43 AM Omid Bidar <<a
                href="mailto:obidar1@sheffield.ac.uk" target="_blank"
                moz-do-not-send="true">obidar1@sheffield.ac.uk</a>>
              wrote:<br>
            </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
              <div dir="ltr">
                <div>Dear all, <br>
                </div>
                <div><br>
                </div>
                <div>I'm a new user of IPOPT, trying to solve an
                  optimisation problem in a CFD context. The number of
                  design variables in the problem is the same as the
                  number of mesh cells, which are at least 10k but could
                  be up to 500k for the problems we are working on. So
                  the problem at hand is very nonlinear and highly
                  dimensional. <br>
                </div>
                <div><br>
                </div>
                <div>A colleague has run the optimisation for a toy
                  problem we're working on using SNOPT successfully, but
                  it requires a user license. We're looking into using
                  IPOPT as a free alternative. We've managed to use
                  IPOPT with a small number of design variables with
                  MUMPS as the linear solver, but the same setup for
                  large design variables currently takes too long to
                  compute (we've had to terminate the computation after
                  running it overnight to solve the problem).</div>
                <div><br>
                </div>
                <div>Having looked on the internet I know that people
                  have implemented IPOPT for very large problems, but I
                  haven't managed to really find any good resource on
                  how to go about setting up the problem. Can someone
                  please advise?</div>
                <div><br>
                </div>
                <div>For brevity's sake I've not included a lot of
                  details about the problem but can share more details
                  should this be required.<br>
                </div>
                <div><br>
                </div>
                <div>Cheers,</div>
                <div>Omid<br>
                </div>
              </div>
              <br>
              <br>
              _______________________________________________<br>
              <br>
              Ipopt mailing list<br>
              <br>
              <a href="mailto:Ipopt@list.coin-or.org" target="_blank"
                moz-do-not-send="true">Ipopt@list.coin-or.org</a><br>
              <br>
              <a href="https://list.coin-or.org/mailman/listinfo/ipopt"
                rel="noreferrer" target="_blank" moz-do-not-send="true">https://list.coin-or.org/mailman/listinfo/ipopt</a><br>
              <br>
            </blockquote>
          </div>
        </div>
        <br>
        <br>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
Ipopt mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Ipopt@list.coin-or.org">Ipopt@list.coin-or.org</a>
<a class="moz-txt-link-freetext" href="https://list.coin-or.org/mailman/listinfo/ipopt">https://list.coin-or.org/mailman/listinfo/ipopt</a>
</pre>
    </blockquote>
  </body>
</html>