t1000.gms : LGO Test t1000_10

**Description**

This test problem is due to J Pinter. A Drud has pointed out that solvers using derivatives will have a hard time with this model. There is a primal solution but the dual does not exist and the global solution does not satisfy the Kuhn-Tucker conditions. sqr(x) = 0 implies x = 0, but the marginal on this constraint is usually infinite and the solution depends wildly on any finite tolerance. This model can be reformulated as shown by Drud. His reformulation is given below. The global solutions is x(i) = 0.

**Reference**

- Pinter, J D, LGO - A Model Development System for Continuous Global Optimization, User's Guide, Revised edition, Pinter Consulting Services, Halifax, NS, Canada, 2003.

**Large Model of Type :** NLP

**Category :** GAMS Model library

**Main file :** t1000.gms **includes :** t1000d.inc

```
$title LGO Test t1000_10 (T1000,SEQ=266)
$onText
This test problem is due to J Pinter. A Drud has pointed out that
solvers using derivatives will have a hard time with this model.
There is a primal solution but the dual does not exist and the global
solution does not satisfy the Kuhn-Tucker conditions. sqr(x) = 0
implies x = 0, but the marginal on this constraint is usually infinite and the
solution depends wildly on any finite tolerance. This model can be
reformulated as shown by Drud. His reformulation is given below.
The global solutions is x(i) = 0.
Janos Pinter, LGO - Users Guide, Pinter Consulting Services, Halifax,
Canada, 2003.
needs include file t1000d.inc
Keywords: nonlinear programming
$offText
Set
i / 1*1000 /
i10(i) / 2*10 /;
Variable
objf
sum_sq
sum_noise
x(i);
Equation
objdef
defsq
defnoise
con0
con1
con2
con3
con4
con5
con6
con7
con8
con9;
Parameter
scal
tol;
scal = 100;
tol = 0.001;
objdef.. objf =e= sum_sq + scal*sum_noise;
defsq.. sum_sq =e= sum(i, sqr(x(i)));
defnoise.. sum_noise =e= sum(i, sqr(sin(sqr(x(i)))));
con0.. sqr(sum(i10(i), (x(i)-x(i-1))*(x(i+1)-x(i-1)))) =l= tol;
con1.. sqr(x('111')+x('122')-x('133')-x('144')-x('155')+x('166')-x('177')+x('188')) =l= tol;
con2.. sqr(x('199')-x('203')*x('215')-x('227')*x('239')-x('242')*x('254')+x('266')) =l= tol;
con3.. sqr(x('279')-x('283')*x('295')-x('7')*x('23')-x('42')*x('54')+x('66')) =l= tol;
con4.. sqr(x('311')+x('322')-x('333')-x('344')-x('355')+x('366')-x('377')+x('388')) =e= 0;
con5.. sqr(x('599')-x('603')*x('615')-x('627')*x('539')-x('542')*x('654')+x('666')) =l= tol;
con6.. sqr(x('679')-x('783')*x('795')-x('7')*x('23')-x('742')*x('754')+x('666')) =l= tol;
con7.. sqr(x('811')+x('322')-x('833')-x('344')-x('855')+x('366')-x('387')+x('888')) =e= 0;
con8.. sqr(x('899')-x('903')*x('915')-x('627')*x('939')-x('942')*x('654')+x('966')) =e= 0;
con9.. sqr(x('679')-x('783')*x('795')-x('7')*x('23')-x('742')*x('754')+x('666')) =e= 0;
Model t1000 / all /;
$include t1000d.inc
x.lo(i) = xinit(i,'lower');
x.up(i) = xinit(i,'upper');
x.l (i) = xinit(i,'level');
option limCol = 0, limRow = 0, solPrint = off;
solve t1000 min objf using nlp;
Parameter report(i,*) 'summary report showing non optimal variables';
report(i,'t1000')$(abs(x.l(i)) > 1e-5) = x.l(i);
* The following is an alternative formulation that produces
* a proper dual at the optimal point (suggested by A Drud).
Equation
con0a
con1a
con2a
con3a
con4a
con5a
con6a
con7a
con8a
con9a
con0b
con1b
con2b
con3b
con5b
con6b;
con0a.. (sum(i10(i), (x(i)-x(i-1))*(x(i+1)-x(i-1)))) =l= sqrt(tol);
con0b.. (sum(i10(i), (x(i)-x(i-1))*(x(i+1)-x(i-1)))) =g= -sqrt(tol);
con1a.. (x('111')+x('122')-x('133')-x('144')-x('155')+x('166')-x('177')+x('188')) =l= sqrt(tol);
con1b.. (x('111')+x('122')-x('133')-x('144')-x('155')+x('166')-x('177')+x('188')) =g= -sqrt(tol);
con2a.. (x('199')-x('203')*x('215')-x('227')*x('239')-x('242')*x('254')+x('266')) =l= sqrt(tol);
con2b.. (x('199')-x('203')*x('215')-x('227')*x('239')-x('242')*x('254')+x('266')) =g= -sqrt(tol);
con3a.. (x('279')-x('283')*x('295')-x('7')*x('23')-x('42')*x('54')+x('66')) =l= sqrt(tol);
con3b.. (x('279')-x('283')*x('295')-x('7')*x('23')-x('42')*x('54')+x('66')) =g= -sqrt(tol);
con4a.. (x('311')+x('322')-x('333')-x('344')-x('355')+x('366')-x('377')+x('388')) =e= 0;
con5a.. (x('599')-x('603')*x('615')-x('627')*x('539')-x('542')*x('654')+x('666')) =l= sqrt(tol);
con5b.. (x('599')-x('603')*x('615')-x('627')*x('539')-x('542')*x('654')+x('666')) =g= -sqrt(tol);
con6a.. (x('679')-x('783')*x('795')-x('7')*x('23')-x('742')*x('754')+x('666')) =l= sqrt(tol);
con6b.. (x('679')-x('783')*x('795')-x('7')*x('23')-x('742')*x('754')+x('666')) =g= -sqrt(tol);
con7a.. (x('811')+x('322')-x('833')-x('344')-x('855')+x('366')-x('387')+x('888')) =e= 0;
con8a.. (x('899')-x('903')*x('915')-x('627')*x('939')-x('942')*x('654')+x('966')) =e= 0;
con9a.. (x('679')-x('783')*x('795')-x('7')*x('23')-x('742')*x('754')+x('666')) =e= 0;
Model t1000a / objdef, defsq, defnoise
con0a, con1a, con2a, con3a, con4a, con5a, con6a, con7a, con8a, con9a
con0b, con1b, con2b, con3b, con5b, con6b /;
x.l(i) = xinit(i,'level');
solve t1000a min objf using nlp;
report(i,'t1000a')$(abs(x.l(i)) > 1e-5) = x.l(i);
display report;
```