Hi All,

i’m having difficulty in understanding why I’m not getting rank-1 solution for the following objective function,

```
obj1 = (1 - trace(E{13}(10:15,10:15)*W3))^2 ;
obj2 = (1 - trace(E{14}(10:15,10:15)*W3))^2 ;
obj3 = (1 - trace(E{15}(10:15,10:15)*W3))^2 ;
```

`minimize real(trace(A{1}(1:6,1:6)*W1)) + real(trace(A{2}(1:6,1:6)*W1)) +real(trace(A{3}(1:6,1:6)*W1)) + obj1 + obj2 + obj3`

while getting rank-1 for the following objective function.

```
c0=10;
```

`minimize c0*(real(trace(A{1}(1:6,1:6)*W1)) + real(trace(A{2}(1:6,1:6)*W1)) +real(trace(A{3}(1:6,1:6)*W1))) + obj1 + obj2 + obj3`

The only difference is I’m multiplying the second objective function by `c0`

. Why is it happeining? Any idea will be appreciated.

Thanks,

In the 2nd version, only a portion of the objective function is multiplied by c0, so it is not necessarily a strictly monotonically increasing function of the 1st version’s objective. So it can have a different set of argmins, which consequently might differ in rank.

Even if the 2nd version’s objective function were a strictly monotonically increasing function of the 1st version’s objective function, by giving a slightly different, even though equivalent in argmin, problem to CVX and the solver, the solver may return a different argmin if it is not unique, and those argmoins could differ in rank.

Thanks Mark, much appreciated.

Hi Mark,

I have another question regarding the value of `c0`

in the 2nd version’s objective function, if I choose it as `c0 <= 1`

, I will not get rank-1 solution.

Do you think the value of multiplier `c0`

is effecting the monotonic feature of the objective function?

I could not get how it is effecting the rank of the solution matrix.

Thanks,

You seem to be asking a modeling question out of scope of this forum. Given that your program is not enforcing the solution to be rank one, then you are relying on luck or some nudging to achieve it. This is not the appropriate forum to discuss the best ways or sensitivities of doing so.