How can I express this triple sum objective function in CVX?

MIDCP
May 4, 2021
D

How can I define the variables express this in CVX.

\min\sum_{g=1}^G\sum_{i=1}^{N-1}\sum_{j=i+1}^{N}d_{ij}z_{ijg}

Here, d_{ij} are known and z_{ijg} are binary integer variables.

I define the variable as

            variable Z(N,N,G) binary

But not able to express the objective function.

M

You are allowed to use as many levels of for loop as you wish.

First formulate what you want presuming that Z is a numerically populated MATLAB double precision variable. Once you have done that, it should work when Z is instead declared a MATLAB variable. Any vectorization you do is a speed bonus, but not needed for correctness.

D
Replying to #2

Thanks. For now speed is not an issue. I just want correctness. Do I need to define an expression to be able to put as objective, as I cannot put nested for in the objective?

M

Before for loop
Objective = 0; % no need to declare Objective as an expression because it is a scalar.

Inside for loops:
Objective = Objective + something;