trilinos / Trilinos

Primary repository for the Trilinos Project
https://trilinos.org/
Other
1.21k stars 565 forks source link

ROL: Constraint Projection Methods #11985

Closed Adrian-Diaz closed 3 months ago

Adrian-Diaz commented 1 year ago

Greetings,

Recently I was trying to perform topology optimization with the constraint projection methods in ROL, however when I try to have more than one inertial constraint (mass and moment of inertia) it seems I get an error for the Dai-Fletcher algorithm saying the range must be one dimensional. Is this algorithm intended for use with one constraint? if so, which one would be recommended for multiple?

Thanks for any help, Adrian Diaz

cgcgcg commented 1 year ago

@trilinos/rol

dridzal commented 1 year ago

@Adrian-Diaz : Yes, the Dai-Fletcher method is for singly linearly constrained problems, see

https://doi.org/10.1007/s10107-005-0595-2

For multiple linear constraints, you can set the Polyhedral Projection to Semismooth Newton, for instance

<ParameterList name="Polyhedral Projection">
  <Parameter name="Type"               type="string" value="Semismooth Newton" />
  <Parameter name="Iteration Limit"    type="int"    value="100"               />
</ParameterList>

under the 'General' parameter list. You may need to set the projection parameters for your ROL::Problem object, similar to this code fragment:

    if (mul->dimension() == 1)
      list.sublist("General").sublist("Polyhedral Projection").set("Type","Dai-Fletcher");
    else
      list.sublist("General").sublist("Polyhedral Projection").set("Type","Semismooth Newton");
    problem = ROL::makePtr<ROL::Problem<RealT>>(obj,sol);
    problem->addBoundConstraint(bnd);
    problem->addLinearConstraint("LEC",con,mul);
    problem->setProjectionAlgorithm(list);
Adrian-Diaz commented 1 year ago

That seems to have run, however after about 15 minutes it gives me an answer that's about 7 times more (53 vs 7.2) the compliance objective I got with Augmented Lagrangian and Trust region SPG (with about 4% mass constraint error and 1% MOI error). I guess its possible the mesh is still too coarse and that's the answer, but with 400-500k elements I would have expected it could find something closer to what I got with AL-TR-SPG. Any idea what might be going on there?

github-actions[bot] commented 4 months ago

This issue has had no activity for 365 days and is marked for closure. It will be closed after an additional 30 days of inactivity. If you would like to keep this issue open please add a comment and/or remove the MARKED_FOR_CLOSURE label. If this issue should be kept open even with no activity beyond the time limits you can add the label DO_NOT_AUTOCLOSE. If it is ok for this issue to be closed, feel free to go ahead and close it. Please do not add any comments or change any labels or otherwise touch this issue unless your intention is to reset the inactivity counter for an additional year.

github-actions[bot] commented 3 months ago

This issue was closed due to inactivity for 395 days.