# ex003-SUM.mod # Original AMPL coding by Sven Leyffer, Argonne National Laboratory # # MPEC formulation of multi-objective ex003 problem. # Aim is to find a good description of the Pareto set. # # Formulation SUM (find convex sum representation) # # A simple multi-objective optimization problem due to # Ravindra V. Tappeta and John E. Renaud, Dept. Aerospace & Mech. Engng. # University of Notre Dame, "Interactive multiobjective optimization # procedure with local preferences", Proceedings of the 3rd WCSMO, 1999. # # Add bounds x >= 0; otherwise, eta -> \infty; MPEC is unbounded !!! # ... sets & parameters set I := 1..2; # ... dimension of the problem set J := 1..2; # ... number of objectives param nK # ... number of efficient points integer, >= 0, default 10; set K := 1..nK; # ... index to efficient points set KxK within K cross K; # ... pairs for cross distances # ... variables var x{I,K}; # ... original problem variables var l{1..2,K}; # ... multipliers var w{J,K} >= 0; # ... multi-objective weights var eta; var f{j in J,k in K} # ... original problem objectives = if (j == 1) then (x[1,k] + x[2,k] - 7.5)^2 + 0.25*(x[2,k] - x[1,k] + 3)^2 else 0.25*(x[1,k] - 1)^2 + 0.5*(x[2,k] - 4)^2; maximize min_dist: eta; subject to # ... convex combination constraint of weights conv_comb {k in K}: sum{j in J} w[j,k] = 1; # ... order constraints: avoid coalescing weights order {k in K diff {nK}}: w[1,k] <= w[1,k+1]; # ... definition of eta (all cross distances in objective space) ubd_eta {(k1,k2) in KxK}: eta <= sum{j in J}(f[j,k1] - f[j,k2])^2; # ... original constraints (plus slackness condition) g1{k in K}: 0 <= l[1,k] complements 2.5 - 0.5*(x[1,k] - 2)^3 - x[2,k] >= 0; g2{k in K}: 0 <= l[2,k] complements 3.85 + 8*(x[2,k] - x[1,k] + 0.65)^2 - x[2,k] - x[1,k] >= 0; # ... KKT 1st order conditions KKT_1{k in K}: 0 <= w[1,k]*(2*(x[1,k] + x[2,k] - 7.5) - 0.5*(x[2,k] - x[1,k] + 3)) + w[2,k]*(0.5*(x[1,k] - 1)) - l[1,k]*(-1.5*(x[1,k] - 2)^2) - l[2,k]*(-16*(x[2,k] - x[1,k] + 0.65) - 1) complements x[1,k] >= 0; KKT_2{k in K}: 0 <= w[1,k]*(2*(x[1,k] + x[2,k] - 7.5) + 0.5*(x[2,k] - x[1,k] + 3)) + w[2,k]*(x[2,k] - 4) - l[1,k]*(-1) - l[2,k]*(16*(x[2,k] - x[1,k] + 0.65) - 1) complements x[2,k] >= 0; # ... data statement & start points data; let nK := 10; # ... definition of cross distance indices let KxK := { }; for {k1 in {2..nK}}{ let {k2 in {1..k1-1}} KxK := KxK union { (k1,k2) }; }; display KxK; # ... generate uniform distribution of weights let {k in K} w[1,k] := (2*k-1)/2/nK * 0.275; let {k in K} w[2,k] := 1-w[1,k]; display w; # ... NCP model problem NCP: x, l, # variables g1, g2, KKT_1, KKT_2; # constraints # ... MPCC model problem MPCC: min_dist, # objective x, l, f, eta, w, # variables g1, g2, KKT_1, KKT_2, # constraints conv_comb, ubd_eta, order;