On Tue, Jul 31, 2012 at 5:38 AM, Todd Munson <tmunson at mcs.anl.gov> wrote:
> Knowing the constraint structure and forming the augmented system is fine > and can be > helpful information to know when determining the active set. I would > concentrate on > linear constraints and inequalities though; they are nicer to deal with > and you do > not have to be concerned with constraint qualifications. > > Nonlinear constraints are possible, but you need to satisfy a constraint > qualification > and you need second derivatives of the constraints for the augmented > system. (In > optimization terms, the Hessian of the Lagrangian.) > I would be in favor of making the interface support this more general form. I'm not wild about having the user add a bunch of extra variables because then they have to explain enough about that reformulation to decompose it again for an efficient multigrid solver. > > > There are some reformulations for polyhedral constraints, but they are, > in my opinion, > > a bit unwieldy. > > > > Why unwieldy? > > The standard semismooth formulation using the Fischer-Burmeister function > and its > cousins works only for bound constraints. Designing a semismooth > reformulation > for general polyhedral constraints is difficult. It can be done, but its > really not easy. You can define the normal map using projections, but > then you need to be able to do the projections onto the constraint > set. > > Of course, the augmented system results in a box constrained problem and > the > standard formulations work. > I'm not at all opposed to having the library use the augmented system internally, I just don't like making the user reformulate because it's more intrusive to their code and because it locks the library into solving the problem that way. > > One thing we should try is adding slacks in the semismooth algorithm for > box > constraints and then applying the reformulation to the redefined system. > There is some evidence that this will work better. > If you have a reference for a version that you like, I'll implement it when I start messing with that code. > > > Note that changing the size of the constrained size is also important, > and box constraints strike me as even more confusing in that context. > > I do not follow this at all. Are you talking about something like a time > dependent > problem and the constraints in the VI are a function of time? That > becomes a > somewhat odd problem and I'd have to see an example. Normally the > constraint set is fixed for all time and just the activities > change. > Suppose we are doing unstructured elastic contact. Any surface point could end up in contact with any other. If we reformulate with bound contstraints, we end up adding N^2 auxiliary variables. If we can use nonlinear constraints where the number of constraints can change each iteration, then we only need to deal with the O(N) viable contact possibilities. I'm happy to differentiate the constraint functions, but I certainly want the flexibility. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20120801/a2eed25b/attachment.html>
