[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