• 1 reply
  • Latest Post - ‏2012-11-01T11:03:30Z by SystemAdmin
1 Post

Pinned topic Second Order Cone Programming

‏2012-10-26T15:13:31Z |
I'm having trouble modeling the Euclidean Norm of a sum of decision variables in my objective function when using OPL/CPLEX. I have tried unsuccessfully a number of methods to simply take the square root of the squares of the variables.

Below is my objective function and corresponding constraint. When I run this I receive the error message that Q is not positive semi-definite. What am I doing wrong?

dvar float+ q;
dvar boolean yi in MISSIONSc in CONFIGSt in TIME;

maximize Pi * q;


sum(i in MISSIONS, c in CONFIGS)(ObsVal_Range[i][c]*sum(t in TIME)y[i][c][t])^2 >= q^2;

Both Pi and ObsVal_Range[i][c] are model parameters.

Any ideas on how I can get this working properly? Thanks.
Updated on 2012-11-01T11:03:30Z at 2012-11-01T11:03:30Z by SystemAdmin
  • SystemAdmin
    754 Posts

    Re: Second Order Cone Programming

    What happens if you add auxiliary variables to represent the weighted sum of the y variables?
    dvar float+ q; dvar 
    boolean y[i in MISSIONS, c in CONFIGS, t in TIME]; dvar 
    float sumy[i in MISSIONS, c in CONFIGS];   maximize Pi * q;   st.   forall(i in MISSIONS, c in CONFIGS) sumy[i,c] = ObsVal_Range[i][c]*sum(t in TIME)y[i][c][t]; sum(i in MISSIONS, c in CONFIGS) sumy[i,c]^2 >= q^2;

    Does this work (modulo the syntax errors that I probably introduced)?

    Note also that (if q does not appear anywhere else in the model) you could put the quadratic constraint directly into the objective function without having to introduce the q variable.