<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>