i\in\{1,\dots,N\}

g\in\{1,\dots,N\}

x_{i,g} binary decision variable

y_{i,j,g} binary decision variable

I want to maximize \sum_{i<j}\sum_g w_{i,j} y_{i,j,g}

subject to

\begin{align}
y_{i,j,g} &\le x_{i,g} &&\text{for all $i<j$ and all $g$} \\
y_{i,j,g} &\le x_{j,g} &&\text{for all $i<j$ and all $g$} \\
\end{align}

I declare the variable as

```
variable X(N,G) binary
variable Y(N,N,G) binary
```

How can I express the objective and the last two constraints?

Constrains and objectibe should be straightforward using for loops. If you can vectorize at all, CVX formulation will be faster.

The objective can be built up in for loop.

```
Objective = 0;
for ...
Objective = Objective + ...
end
maximize(Objective)
```

I am doing thisâ€¦

```
Objective=0;
for g=1:G
for i=1:C-1
for j=i+1:C
Objective=Objective+WeightMatrix(i,j)*Y(i,j,g);
end
end
end
```

Hopefully I am doing it rightâ€¦Would you please confirm.

It looks o.k., except that `C`

should be `N`

for consistency with your variable declaration for `Y`