You should define \cal{M} as a collection of AMPL sets, indexed over \cal{N} and \cal{K}. Here is one way to define your objective, which corresponds closely to the mathematical description:
set N;
set K;
set M {N,K};
param c {i in N, j in N, k in K, M[i,k], M[j,k]};
var y {i in N, j in N, k in K, M[i,k], M[j,k]} >= 0;
minimize Z:
sum {i in N, j in N, k in K, m in M[i,k], n in M[j,k]} c[i,j,k,m,n] * y[i,j,k,m,n];
Set data for this model includes the members of set N
and setK
, and the members of set M[i,k]
for each i
in N
and k
in K
. If N
and K
are sets of consecutive positive integers, then you can instead write
param Nsize integer > 0;
param Ksize integer > 0;
set N = 1..Nsize;
set K = 1..Ksize;
In this case the first two sets are completely defined by just the two data values Nsize
and Ksize
. In fact, you don’t have to define N
and K
at all, but can instead write
param Nsize integer > 0;
param Ksize integer > 0;
set M {1..Nsize,1..Ksize};
and similarly for the rest, substituting 1..Nsize
and 1..Ksize
for N
and K
, respectively. Your choice among these alternatives will depend on what works best in the rest of the model, and on your personal preferences for the notation.