octave-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Octave-bug-tracker] [bug #32717] sqp returns an error when the local qp


From: Gabriele Pannocchia
Subject: [Octave-bug-tracker] [bug #32717] sqp returns an error when the local qp is infeasible
Date: Tue, 08 Mar 2011 16:31:48 +0000
User-agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-us) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4

URL:
  <http://savannah.gnu.org/bugs/?32717>

                 Summary: sqp returns an error when the local qp is infeasible
                 Project: GNU Octave
            Submitted by: gpannocchia
            Submitted on: Tue 08 Mar 2011 05:31:47 PM CET
                Category: None
                Severity: 3 - Normal
                Priority: 5 - Normal
              Item Group: Crash
                  Status: None
             Assigned to: None
         Originator Name: 
        Originator Email: 
             Open/Closed: Open
         Discussion Lock: Any
                 Release: 3.2.4
        Operating System: Mac OS

    _______________________________________________________

Details:

Dear Octave Developers,

The nonlinear optimization routine "sqp" seems to not deal properly with the
case where the qp subproblem turns out to be infeasible (either because the
actual nonlinear program is infeasible or because the local constraint
linearization gave rise to an infeasible problem).

To show the error, you may execute the following lines of code (to which I am
attaching two necessary .m files, which defines the equality constraints and
the objective function).

x0 = zeros(2,1);
xmin = [-1;-1];
xmax = [ 0;0];

[xopt, obj, info, iter] = sqp (x0, "objfun", "eqcon", [], xmin, xmax);

Specifically, the chosen example is infeasible. The routine sqp returns an
error at the following lines:

      if (! isempty (A))
        t = ((A_new - A)'*lambda);
        y -= t;
      endif

because lambda is an empty vector due to the fact the qp subproblem was
infeasible.

I briefly skimmed the relevant chapter of Nocedal and Wright optimization
book, which maybe was used as a reference for writing the code, and the
solution does not seem trivial and may involve using slack variables and large
linear penalties to ensure that the qp sub-problems are always feasible at
each iteration. 

I may try to explore this path if the Team thinks it is useful. In the short
term I would suggest adding a check, right after the qp call, to detect if it
was infeasible and in such case exist sqp and return a code for infeasible
problem.

Thanks and please let me know if I can be of any help with this.

Gabriele Pannocchia






    _______________________________________________________

File Attachments:


-------------------------------------------------------
Date: Tue 08 Mar 2011 05:31:47 PM CET  Name: objfun.m  Size: 58B   By:
gpannocchia

<http://savannah.gnu.org/bugs/download.php?file_id=22857>
-------------------------------------------------------
Date: Tue 08 Mar 2011 05:31:47 PM CET  Name: eqcon.m  Size: 81B   By:
gpannocchia

<http://savannah.gnu.org/bugs/download.php?file_id=22858>

    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?32717>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]