Forum Discussion
FICO
7 years agoCommunity Manager
Mixed-Integer Quadratically-Constrained Programming (MIQCP)
Hello,
I would like to solve a MIQCP problem in Xpress Python Interface, but I cannot find the online document prescribing the noticeble points need to be pay attention prior to solving such type of problem, e.g. the requirement for objective, constraints, etc.
So I breifly explain my problem in this post as below.
In my problem I am using binary variables and continuous variables:
- Objective is linear (or integer-linear) expression.
- Contains linear (or integer-linear) equality and inequality constraints.
- Contains similar form of quadractic constraint as in the code snippet below:
declaration
# Nx, Ny, Nz--set
cx: array(Nx) of real
cy: array(Ny) of real
cz: array(Nz) of real
sx, sy, sz: real
x: array(Nx) of mpvar
y: array(Ny) of mpvar
z: array(Nz) of mpvar
end-declaration
# Define quadratic constraint
square( sx+sum(i in Nx)( cx(i)*x(i) ) ) + square( sy+sum(i in Ny)( cy(i)*y(i) ) )<= square( sz+sum(i in Nz)( cz(i)*z(i) ) )
Not sure whether the solver could solve my problem, also where can I find the noticeable points for each specific type of problem?
Thanks!
4 Replies
- FICOCommunity Manager
Hi
This problem looks like a second order cone, assuming "sz+sum(i in Nz)( cz(i)*z(i) ) >= 0" holds?
https://www.fico.com/fico-xpress-optimization/docs/latest/solver/optimizer/HTML/chapter20090603104425_sec_sectionSOCP.html
The summary page to start from is
https://www.fico.com/fico-xpress-optimization/docs/latest/solver/optimizer/HTML/chapter20090603104425.html
The solver should in almost all cases be able to automatically reformulate the problem to the above form if the sign restriction can be validated from the problem.
Please note that Xpress does have general nonlinear capabilities as well; but this problem should solve as a standard problem if it is indeed a second order cone.
- FICOCommunity Manager
Hello Zsolt,
Yes, "sz+sum(i in Nz)( cz(i)*z(i) )" in the right-hand side is always >=0, but "sx+sum(i in Nx)( cx(i)*x(i) )" and "sy+sum(i in Ny)( cy(i)*y(i) )" in the left-hand side are ∈(-∞,∞).
I have read the description of SOCPs in the link you posted, but I am not sure how the constraint in my problem could be reformulated into the described form.
Also, I have mutliple of such square constraint, is this possible?
Thanks!
- FICOCommunity Manager
It is the right-hand side expression that matters in this case since it is a <= constraint.
I would just try to formulate the problem in the form you shared: the solver will reformulate it to the right form in presolve. If it fails to do so, please share the instance as we then would like to check why not.
You can have any number of such constraints in the same model.
- FICOCommunity Manager
Thanks!