[Coin-ipopt] Problem with constraint scaling
Andreas Waechter
andreasw at watson.ibm.com
Thu May 3 12:15:24 EDT 2007
Hi Fabian,
> I do topology optimization. In the simple mechanic case I have a
> density of [0.001,1] for each FEM element. These are my 50 ... 5000
> design variables.
>
> My objective is compliace and in the magnitude of 1e-9, therefore
> I scale with 1e9
My guess is that what matters is the size of the elements in the gradient
- those values should be typically in the order of to -10. Does your
scaling of 1e9 do that? (The VALUE of the function does not matter that
much)
> One constraint is the volume, that is the average of all design variables
> has to be 0.5. The gradient is constant and the volume fraction.
>
> This works fine but I have quite up to 5 step searches per iteration.
>
> Whenn I add another constraint: the greyness, (1*x)*x and want it to
> be < 0.1 the results become very bad but I almost have one linesearch per
> iteration.
I don't know how that looks like in the discretized version, but it is
probably just a convex constraint(?). So, it should not really be that
difficult.
> I checked the constraint multipliers and get:
>
> Case: 1
> Volume constraint: 0.5 (upperBound)
> f=6.34774e-10 + 3.08881e-10*0.499955
> (scaled) (unscaled)
> Objective...............: 6.3477397510265762e-04 6.3477397510265766e-10
> Dual infeasibility......: 2.8413439257233452e-06 2.8413439257233451e-12
> Constraint violation....: 0.0000000000000000e+00 0.0000000000000000e+00
> Complementarity.........: 1.3947929198517462e-08 1.3947929198517461e-14
> Overall NLP error.......: 2.8413439257233452e-06 2.8413439257233451e-12
>
> -> The volume constraint holds and the function value is quite good!
Yes, it seems that the problem was solved up to the tolerance.
>
> Case: 2
> --------
> Volume constraint: 0.5 (upperBound)
> Greyness constraint: 0.1 (upperBound)
> f=5.1626e-06 + 6.47958e-10*0.0298598 + 4.19506e-06*0.0997833
> (scaled) (unscaled)
> Objective...............: 5.1625958460710324e+00 5.1625958460710321e-06
> Dual infeasibility......: 1.4826429092196935e+00 1.4826429092196936e-06
> Constraint violation....: 0.0000000000000000e+00 0.0000000000000000e+00
> Complementarity.........: 5.8225581174734123e-03 5.8225581174734121e-09
> Overall NLP error.......: 1.4826429092196935e+00 1.4826429092196936e-06
>
> The greyness constraint dominates the objective and the volume constraint
Since you are scaling the objective function so much, the "scaled" errors
are still very large, and this might not be what you want to have. I
assume that Ipopt terminated with "Solved To Acceptable Level"? This
means that the usual termination criterion is not met (looking at the
large errors in the "scaled" problem, i.e., the one that Ipopt sees), but
that some relaxed tolerance have been met for 15 iterations or so. I
sugsest you run this problem again, but set the tolerance (including the
"acceptable" tolerance") so that Ipopt continues further. One way to do
that is to set acceptable_iter to a integer (100000).
However, you might want to consider to do the problem scaling directly in
your problem formulation, instead of using obj_scaling_factor.
Actually, looking the output, it seems to me that you are using
obj_scaling_factor 1e6...? (Or is there some additional scaling going on?
What happens if you set nlp_scaling_method=none?)
> ---------------
> I found no way to control the lagrange multipliers. Do I have to manually
> combine the constraint to the function?
I don't understand that question. You cannot control the multipliers,
since they are determined by the solution ("dual feasibility"). I also
don't understand what you mean by "ombine the constraint to the
function"... which particular constraint to which function?
Regards,
Andreas
More information about the Coin-ipopt
mailing list