jump-dev / MosekTools.jl

A MathOptInterface.jl interface to the MOSEK solver
https://github.com/MOSEK/Mosek.jl
MIT License
29 stars 8 forks source link

pow1 test fail #44

Closed blegat closed 4 years ago

blegat commented 4 years ago

The tests pow1v and pow1f of MOI fails with Mosek.jl v1.1.1 (i.e. Mosek v9.1) but works with Mosek.jl v1.0.4 (i.e. Mosek v9.0):

using MosekTools
model = Mosek.Optimizer()
using MathOptInterface
const MOI = MathOptInterface
v = MOI.add_variables(model, 3)
vov = MOI.VectorOfVariables(v)
vc = MOI.add_constraint(model, vov, MOI.PowerCone(0.9))
cx = MOI.add_constraint(model, MOI.ScalarAffineFunction([MOI.ScalarAffineTerm(1.0, v[1])], 0.), MOI.EqualTo(2.))
cy = MOI.add_constraint(model, MOI.ScalarAffineFunction([MOI.ScalarAffineTerm(1.0, v[2])], 0.), MOI.EqualTo(1.))
MOI.set(model, MOI.ObjectiveFunction{MOI.ScalarAffineFunction{Float64}}(), MOI.ScalarAffineFunction([MOI.ScalarAffineTerm(1.0, v[3])], 0.0))
MOI.set(model, MOI.ObjectiveSense(), MOI.MAX_SENSE)
MOI.optimize!(model)
@show MOI.get(model, MOI.ConstraintDual(), vc)
Mosek.writedata(model.task, "pow.cbf")

gives

Problem
  Name                   :                 
  Objective sense        : max             
  Type                   : CONIC (conic optimization problem)
  Constraints            : 2               
  Cones                  : 1               
  Scalar variables       : 3               
  Matrix variables       : 0               
  Integer variables      : 0               

Optimizer started.
Presolve started.
Eliminator started.
Freed constraints in eliminator : 0
Eliminator terminated.
Eliminator started.
Freed constraints in eliminator : 0
Eliminator terminated.
Eliminator - tries                  : 2                 time                   : 0.00            
Lin. dep.  - tries                  : 0                 time                   : 0.00            
Lin. dep.  - number                 : 0               
Presolve terminated. Time: 0.00    
Problem
  Name                   :                 
  Objective sense        : max             
  Type                   : CONIC (conic optimization problem)
  Constraints            : 2               
  Cones                  : 1               
  Scalar variables       : 3               
  Matrix variables       : 0               
  Integer variables      : 0               

Optimizer  - threads                : 4               
Optimizer  - solved problem         : the primal      
Optimizer  - Constraints            : 0
Optimizer  - Cones                  : 0
Optimizer  - Scalar variables       : 1                 conic                  : 0               
Optimizer  - Semi-definite variables: 0                 scalarized             : 0               
Factor     - setup time             : 0.00              dense det. time        : 0.00            
Factor     - ML order time          : 0.00              GP order time          : 0.00            
Factor     - nonzeros before factor : 0                 after factor           : 0               
Factor     - dense dim.             : 0                 flops                  : 0.00e+00        
ITE PFEAS    DFEAS    GFEAS    PRSTATUS   POBJ              DOBJ              MU       TIME  
0   8.7e-01  1.0e+00  1.0e+00  0.00e+00   0.000000000e+00   0.000000000e+00   1.0e+00  0.00  
1   1.6e-01  1.9e-01  1.4e-01  1.18e-01   7.445916446e-01   4.868007185e-01   1.9e-01  0.00  
2   1.3e-02  1.5e-02  4.1e-03  6.32e-01   1.803552444e+00   1.762816564e+00   1.5e-02  0.00  
3   7.1e-06  8.2e-06  5.3e-08  9.77e-01   1.866042285e+00   1.866015928e+00   8.2e-06  0.00  
4   3.7e-11  4.3e-11  2.8e-13  1.00e+00   1.866065983e+00   1.866065983e+00   4.3e-11  0.00  
Optimizer terminated. Time: 0.00
MOI.get(model, MOI.ConstraintDual(), vc) = [0.8397296921264373, 0.18660659825031936, 0.9999999997561113]
3-element Array{Float64,1}:
 0.8397296921264373 
 0.18660659825031936
 0.9999999997561113 

on Mosek v1.1.1 and gives

Problem
  Name                   :                 
  Objective sense        : max             
  Type                   : CONIC (conic optimization problem)
  Constraints            : 2               
  Cones                  : 1               
  Scalar variables       : 3               
  Matrix variables       : 0               
  Integer variables      : 0               

Optimizer started.
Presolve started.
Eliminator started.
Freed constraints in eliminator : 0
Eliminator terminated.
Eliminator started.
Freed constraints in eliminator : 0
Eliminator terminated.
Eliminator - tries                  : 2                 time                   : 0.00            
Lin. dep.  - tries                  : 0                 time                   : 0.00            
Lin. dep.  - number                 : 0               
Presolve terminated. Time: 0.00    
Problem
  Name                   :                 
  Objective sense        : max             
  Type                   : CONIC (conic optimization problem)
  Constraints            : 2               
  Cones                  : 1               
  Scalar variables       : 3               
  Matrix variables       : 0               
  Integer variables      : 0               

Optimizer  - threads                : 4               
Optimizer  - solved problem         : the primal      
Optimizer  - Constraints            : 0
Optimizer  - Cones                  : 1
Optimizer  - Scalar variables       : 3                 conic                  : 3               
Optimizer  - Semi-definite variables: 0                 scalarized             : 0               
Factor     - setup time             : 0.00              dense det. time        : 0.00            
Factor     - ML order time          : 0.00              GP order time          : 0.00            
Factor     - nonzeros before factor : 0                 after factor           : 0               
Factor     - dense dim.             : 0                 flops                  : 0.00e+00        
ITE PFEAS    DFEAS    GFEAS    PRSTATUS   POBJ              DOBJ              MU       TIME  
0   6.2e-01  1.0e+00  4.8e+00  0.00e+00   0.000000000e+00   3.805618599e+00   1.0e+00  0.01  
1   5.5e-02  8.9e-02  2.5e-01  3.93e-01   1.606601792e+00   1.912296322e+00   8.9e-02  0.02  
2   2.6e-03  4.2e-03  2.5e-03  9.28e-01   1.858086151e+00   1.873893873e+00   4.2e-03  0.02  
3   4.4e-05  7.1e-05  5.3e-06  9.99e-01   1.865883617e+00   1.866156437e+00   7.1e-05  0.02  
4   4.3e-06  7.0e-06  1.7e-07  1.00e+00   1.866054134e+00   1.866081329e+00   7.0e-06  0.02  
5   4.6e-07  7.4e-07  5.7e-09  1.00e+00   1.866065085e+00   1.866067959e+00   7.4e-07  0.02  
6   1.6e-08  2.5e-08  3.6e-11  1.00e+00   1.866065955e+00   1.866066055e+00   2.5e-08  0.02  
7   1.8e-09  3.2e-09  1.6e-12  1.00e+00   1.866065980e+00   1.866065993e+00   3.3e-09  0.02  
Optimizer terminated. Time: 0.02
MOI.get(model, MOI.ConstraintDual(), vc) = [0.8397073684239428, 0.1866512563450408, -0.9999999950328783]
3-element Array{Float64,1}:
  0.8397073684239428
  0.1866512563450408
 -0.9999999950328783

on Mosek v1.0.4. The MOI tests expects -1 for the third component.

I checked, the pow.cbf generated is the same for both Mosek versions. The cbf file can be obtained here (the txt extension was added so that Github accept it as attachment)

blegat commented 4 years ago

Fixed by Mosek v9.1.12