$title Test evList matching in model statement with multiple matchings (MCP19, SEQ=983) $ontext Test evList matching in model statement with multiple evList matchings. Contributor: Steven Dirkse, April 2025 $offtext Set i / i1 * i2 / j / j1 * j2 / k / k1 * k2 / l / l1 * l2 / ; Parameter x2_(j,k) x3_(i,j,k) x4_(i,j,k,l) r_(k,l) s_(i) / i1 1.5, i2 2.5 / t_(j) / j1 1.0, j2 3.0 / A(i,j,k,l) B(i,j,k) / i2.j1.k1 1, i2.j1.k2 2, i2.j2.k1 2, i2.j2.k2 4 / ; x2_(j,k) = ord(j) + 0.25 * (ord(k)-1); x3_(i,j,k) = ord(i) + 0.125 * (ord(k)+ord(j)-2); execseed = 70221; x4_(i,j,k,l) = uniform(1,2); r_(k,l) = ord(l) + card(l)*(ord(k)-1); A(i,j,k,l)$[(ord(i) eq ord(k)) and (ord(j) eq ord(l))] = uniform(0,4); B('i1',j,k) = 1; Variable x2(j,k) x3(i,j,k) x4(i,j,k,l) u(i,j) v(j,k) r(k,l) s(i) t(j) ; Equation f2(j,k) f3(i,j,k) f4(i,j,k,l) g(i,j,k) h1(i) h2(i,j) ; f2(j,k) .. exp(x2(j,k)) - ord(k) * (x2(j,k)-x2_(j,k)) =N= exp(x2_(j,k)); f3(i,j,k) .. exp(x3(i,j,k)) - ord(k) * (x3(i,j,k)-x3_(i,j,k)) =N= exp(x3_(i,j,k)); f4(i,j,k,l) .. exp(x4(i,j,k,l)) - ord(k) * (x4(i,j,k,l)-x4_(i,j,k,l)) =N= exp(x4_(i,j,k,l)); g(i,j,k) .. u(i,j) + B(i,j,k) * v(j,k) =E= 1 + B(i,j,k); h1(i) .. power(s(i),3) =E= power(s_(i),3); h2(i,j) .. sum{(k,l), A(i,j,k,l)*(r(k,l)-r_(k,l))} + s(i) - s_(i) + t(j) - t_(j) =E= 0; Model m / f2.x2 ( g ) : ( u, v ) f3.x3 (h1,h2):(r,s,t) f4.x4 /; parameter chki(i) chkj(j) chkij(i,j) chkjk(j,k) chkkl(k,l) chkijk(i,j,k) chkijkl(i,j,k,l) ; $macro CHECK_MOD(m) abort$[m.solvestat <> 1] 'bad solvestat', m.solvestat $macro X2TEST chkjk(j,k) = 0; chkjk(j,k) = round(x2.l(j,k)-x2_(j,k),5); abort$card(chkjk) chkjk, x2.l, x2_ $macro X3TEST chkijk(i,j,k) = 0; chkijk(i,j,k) = round(x3.l(i,j,k)-x3_(i,j,k),5); \ abort$card(chkijk) chkijk, x3.l, x3_ $macro X4TEST chkijkl(i,j,k,l) = 0; chkijkl(i,j,k,l) = round(x4.l(i,j,k,l)-x4_(i,j,k,l),5); \ abort$card(chkijkl) chkijkl, x4.l, x4_ $macro UTEST chkij(i,j) = 0; chkij(i,j) = round(u.l(i,j)-1,5); abort$card(chkij) chkij, u.l $macro VTEST chkjk(j,k) = 0; chkjk(j,k) = round(v.l(j,k)-1,5); abort$card(chkjk) chkjk, v.l $macro RTEST chkkl(k,l) = 0; chkkl(k,l) = round(r.l(k,l)-r_(k,l),5); abort$card(chkkl) chkkl, r.l, r_ $macro STEST chki(i) = 0; chki(i) = round(s.l(i)-s_(i),5); abort$card(chki) chki, s.l, s_ $macro TTEST chkj(j) = 0; chkj(j) = round(t.l(j)-t_(j),5); abort$card(chkj) chkj, t.l, t_ x2.l(j,k) = 1.5; x3.l(i,j,k) = 1.5; x4.l(i,j,k,l) = 1.5; s.l(i) = 1; r.fx(k,l)$[ord(k) = ord(l)] = r_(k,l); option limrow = 999, limcol=999; solve m using mcp; CHECK_MOD(m); X2TEST; X3TEST; X4TEST; UTEST; VTEST; RTEST; STEST; TTEST;