##### sprandqp.mod ##### ##### Model for a sparse random quadratic programming problem. ##### ##### David M. Gay, 19971231 -- declarative form of a script by ##### Hans Mittelmann. param n integer > 0; # number of variables param m integer in [0,n); # number of equality constraints param p integer >= 0; # number of inequality constraints param sl in (0,1]; # sparsity of L param sa in (0,1]; # sparsity of A param pf in (0,1]; # fraction of tight inequalities set P := {i in 1..n, j in 1..n: i == j || Uniform01() < sl}; param L{(i,j) in P} := Uniform(if i == j then 1 else -10, 10); set Pa := {1..m+p, 1..n: Uniform01() < sa}; param A{Pa} := Uniform(-10,10); param y{1..m} # Lagrange multipliers for equalities := Normal01(); param z{1..p} # Lagrange multipliers for inequalities := if Uniform01() < pf then Uniform(0,10); param xstar{i in 1..n} := Normal01(); param ltx{i in 1..n} := sum{(i,j) in P} L[i,j]*xstar[j]; param g {j in 1..n} := sum{(i,j) in Pa} A[i,j] * (if i <= m then y[i] else z[i-m]) - sum{(i,j) in P} L[i,j] * ltx[i]; param b{i in 1..m+p} := sum{(i,j) in Pa} A[i,j]*xstar[j] + if i > m && z[i-m] == 0 then Uniform(-10,0); # xstar should solve var x{1..n}; minimize f: 0.5*sum{i in 1..n} (sum{(i,j) in P} L[i,j]*x[j])^2 + sum{i in 1..n} g[i]*x[i]; s.t. eq{i in 1..m}: sum{(i,j) in Pa} A[i,j]*x[j] == b[i]; s.t. ineq{i in 1..p}: (sum{(i+m,j) in Pa} A[i+m,j]*x[j]) >= b[i+m];