If the user codes evalf and evalc or if he/she codes a unique
subroutine evalfc, the ALGENCAN algorithmic options will be the same
(the same sequence of point will be generated by the algorithm).
On the other hand, in a general way, the algorithmic available choices
will depend on the user-supplied subroutines. For example, the
acceleration step needs second-derivatives to be provided by the user
(The acceleration step is a new feature of ALGENCAN 2.0. See E. G.
Birgin and J. M. Martínez, "Improving ultimate convergence of an
Augmented Lagrangian method", Optimization Methods and Software 23,
pp. 177-195, 2008, for details). So, if second derivatives are not
provided, the acceleration-step option (PERFORM-ACCELERATION-STEP in
the specification file algencan.dat) will not be available.
I probably mentioned in the past that ALGENCAN does not evaluate
constraints that are very satisfied at the current point. In this
sense, to provide subroutine evalc to compute individual constraints
may be more efficient than providing subroutine evalfc to compute the
objective function and all the constraints at once. In the case of
evalfc being provided by the user, the unnecessary constraints values
will be ignored by ALGENCAN. However, in particular situations, some
users prefer to code evalfc instead of evalc.
Concluding, more information about the problem to be solved means more
available algorithmic options. Note that information means first
derivatives and, if possible, second-derivatives too. Regarding
objective function and constraints evaluation (and their derivatives):
1) to provide evalf and evalc or to provide evalfc;
2) to provide evalg and evaljac or to provide evalgjac;
depends on the user preference. To provide one or the other will allow
the user to make the same algorithmic choices, being the difference
related to performance. Which one is preferable may be problem-
dependent.
Ernesto.