On Tue, Jul 31, 2012 at 5:38 AM, Todd Munson <tmunson@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.