# liswetm-GOALe.mod # AMPL coding by Sven Leyffer, Argonne National Laboratory # # MPEC formulation of multi-objective ex005 problem. # Aim is to find a good description of the Pareto set. # # Formulation GOAL (from GOAL programming) # # A simple multi-objective optimization problem (MOOP) # constructed from models liswet1 &liswet4 # of Bob Vanderbei's cute-ampl collection. # Source: # W. Li and J. Swetits, # "A Newton method for convex regression, data smoothing and # quadratic programming with bounded constraints", # SIAM J. Optimization 3 (3) pp 466-488, 1993. # ... sets & parameters param m integer, >= 1, default 5; # ... number of c/s param k integer, >= 1, default 2; param n := m+k; # ... number of variables set K := 0..k; set M := 1..m; set N := 1..n; param B{i in K} := if (i=0) then 1 else B[i-1]*i; param C{i in K} := if (i=0) then 1 else (-1)^i*B[k]/(B[i]*B[k-i]); param T{i in N} := (i-1)/(n+k-1); # ... multi-objective stuff param nP # ... number of efficient points integer, >= 0, default 10; set P := 1..nP; # ... index to efficient points set PxP within P cross P; # ... pairs for cross distances set J := 1..2; # ... objectives # Payoff matrix # f1 f2 # -3.39238 2.98454 # -1.5057 -0.749978 param lz := -0.749978; # ... objective bounds on f1 from pay-off matrix param uz := 2.98454; # ... variables var x{N,P} := 0; var y{M,P}; var z{P} >= lz, <= uz; # ... objective GOALs var u{P}; # ... objective GOAL multipliers var eta; var f{j in J, p in P} # ... objective functions = if (j==1) then sum {i in N} -(sqrt(T[i])+0.1*sin(i))*x[i,p] + sum {i in N} 0.25*x[i,p]^2 else sum {i in N} -(T[i]^3+0.1*sin(i))*x[i,p] + sum {i in N} 0.5*x[i,p]^2; maximize min_dist: eta; subject to # ... definition of eta (all cross distances in objective space) ubd_eta { (p1,p2) in PxP}: eta <= sum{j in J} (f[j,p1] - f[j,p2])^2; # ... feasibility c{j in M, p in P}: 0 <= y[j,p] complements sum{i in K} C[i]*x[j+k-i,p] >= 0; # ... KKT conditions KKT{i in N, p in P}: x[i,p] complements (0.5*x[i,p]-(sqrt(T[i])+0.1*sin(i))) + u[p]*(x[i,p]-(T[i]^3+0.1*sin(i))) - sum{j in max(i-k,1)..min(i,m)} y[j,p]*( C[j+k-i] ) = 0; GOAL {p in P}: 0 <= u[p] complements f[2,p] <= z[p]; # ... data statement & start points data; # ... definition of cross distance indices let PxP := { }; for {p1 in {1..nP}}{ let {p2 in {1..nP}: p1 <> p2} PxP := PxP union { (p1,p2) }; }; display PxP; # ... distribute the payoff levels let {p in P} z[p] := lz + (p-1)/(nP-1)*(uz-lz) + Uniform01(); display z; # ... NCP model problem NCP: y, x, u, # variables c, KKT, GOAL; # constraints #unfix {p in P} z[p]; # ... MPCC model problem MPCC: min_dist, # objective x, y, f, eta, u, z, # variables c, KKT, GOAL, # constraints ubd_eta;