[Coin-ipopt] Influencing the dual variable

Oliveira, Ivan B ivan.b.oliveira at intel.com
Wed Nov 2 12:16:41 EST 2005


Hi Carl,

	right now it always sets the 
	init_lambda flag to false

Quite right - I noticed this in the code but did know if I had
misinterpreted the meaning of the init_lambda flag.  I think we're on
the same wavelength.

As long as I understand that this is the case I feel comfortable
temporarily changing my version to allow me to do this.  But it would be
a nice feature to be implemented in the release once you have the time.

As for influencing (note I prefer this weaker statement than 'changing'
:) the dual variables *during* iterations - I take it from you answer
there is no plan to support such a thing?

Thanks,  (You guys are doing a great job!)

--Ivan.
 
----------------------------
Ivan B. Oliveira
SC12-205
(408)765-0584
 
-----Original Message-----
From: Carl Damon Laird [mailto:claird at andrew.cmu.edu] 
Sent: Tuesday, November 01, 2005 9:16 PM
To: Oliveira, Ivan B
Cc: coin-ipopt at list.coin-or.org
Subject: Re: [Coin-ipopt] Influencing the dual variable

Hi Ivan,

First, I will assume that you are using the TNLP interface class (there 
are others, but this is the "standard" one). The interface does allow
you 
to set initial values for the multipliers (but never to "change" them 
during the iterations).

You will notice that the get_starting_point method:

     virtual bool get_starting_point(Index n, bool init_x, Number* x,
                                     bool init_z, Number* z_L, Number*
z_U,
                                     Index m, bool init_lambda,
                                     Number* lambda)=0;

If the options are such that your NLP needs to provide initial values
for 
the equality multipliers (lambda), then init_lambda will be true and you

can put the values into the lambda vector (likewise for the bound 
multipliers z_L and z_U).

That was the intent of the design. Now, having said that, I looked
through 
the code and I do not see any option that you can set that will actually

cause IPOPT to ask for the multipliers, right now it always sets the 
init_lambda flag to false (other than a bleeding edge warm start
feature). 
I apologize for this oversight.

I don't see any reason why it would not be easy for us to add the 
option(s) to allow user initialized lambda, and z_L and z_U values. I
will 
be out of town until early next week, but I can implement these options 
then. Again, sorry for the oversight, we should have had this in place.

Any additional comments Andreas?

Thanks for the post,

Carl Laird.

On Tue, 1 Nov 2005, Oliveira, Ivan B wrote:

> Hi guys,
>
>
>
> It doesn't seem possible to either initialize or change the value of
> dual variables during the optimization in the C++ implementation of
> IPOPT.  Seems all the callbacks have a const in the signature, and the
> code does not seem to provide hooks to influence the iterations
between
> evaluations.  Is this correct?  Are there any workarounds you can
> suggest?
>
>
>
> Thanks,
>
>
>
> --Ivan.
>
>
>
> ----------------------------
>
> Ivan B. Oliveira
>
> SC12-205
>
> (408)765-0584
>
>
>
>




More information about the Coin-ipopt mailing list