[Coin-ipopt] Ipopt with Automatic Differentiation

Kipp Martin kipp.martin at chicagogsb.edu
Sat Apr 28 16:07:30 EDT 2007


I am using the Ipopt callback functions and hooking them to the Coin 
Automatic Differentiation project CppAD.  I think an efficient way  to 
calculate the Hessian of the Lagrangian function is to:

1. Do a zero order forward sweep (this will give the objective function 
values and constraint values at the current iterate and provide the 
necessary information for eval_f and eval_g).

2. Loop over each primal variable x_{i} and do a first order forward 
sweep. This will give column i of the Jacobian.

3. Inside the same loop over each primal variable do a second order 
reverse sweep immediately after the first order forward sweep and get 
row (column) i of the Hessian of the Lagrangian. However, in order to do 
this I need to know the value of the Lagrange multipliers. These values 
are not available eval_grad, they are only available in eval_h after the 
Jacobian has been calculated, but I would like to do both operations at 
the same time.

Is there a way to get access to the Lagrange multiplier vector lambda at 
each iteration?


Kipp Martin
Professor of Operations Research
	and Computing Technology
University of Chicago
Graduate School of Business
5807 South Woodlawn Avenue
Chicago IL 60637

More information about the Coin-ipopt mailing list