I am using Convex.jl and MOSEK to solve a mixed integer second-order cone programming problem.
The cost function is encoded as minimize(-x + μ * sum(abs.(v)) - a * sum(γ))
where x (real value), v (real vector), and γ (binary vector) are the problem variables, and a and μ are parameters. I noticed that for high values of μ there is a mismatch between the log of MOSEK and the cost function computed using the results of the variables. Specifically, MOSEK log reports Objective of best integer solution : -1.342072779625e+01 Best objective bound : -1.342072779625e+01
while if I try to compute the cost function using the results its value is -6.28. Additionally, a cost function having a value lower than -7.21 should be impossible due to the bounds on x and γ.
Is there any explanation for this?
PS: the original problem is quite complex and long. I am trying to find a MWE.
An optimal solution satisfying the relative gap tolerance of 1.00e+00(%) has been located.
The relative gap is 0.00e+00(%).
An optimal solution satisfying the absolute gap tolerance of 0.00e+00 has been located.
The absolute gap is 0.00e+00.
Objective of best integer solution : -1.342072779625e+01
Best objective bound : -1.342072779625e+01
Initial feasible solution objective: Undefined
Construct solution objective : Not employed
User objective cut value : Not employed
Number of cuts generated : 0
Number of branches : 611
Number of relaxations solved : 615
Number of interior point iterations: 18831
Number of simplex iterations : 0
Time spend presolving the root : 0.20
Time spend optimizing the root : 0.30
Mixed integer optimizer terminated. Time: 66.23
x must be lower than log(500)=6.21, while the term a * sum(γ) is at maximum 1, since the parameter a is selected to be 1/length(γ). And yes, the solution is feasible, and the bounds and constraints are well respected.
Higher than 10000. And it gets worse incresing the value.