# Solver argument (MosekModel) must be an AbstractMathProgSolver

**URL:** <https://discourse.julialang.org/t/solver-argument-mosekmodel-must-be-an-abstractmathprogsolver/59967>\
**Category:** Optimization (Mathematical)\
**Tags:** question, package\
**Created:** [April 25, 2021, 3:27am UTC](https://discourse.julialang.org/t/solver-argument-mosekmodel-must-be-an-abstractmathprogsolver/59967 "2021-04-25T03:27:51Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![zlq178](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zlq178/32/17952_2.png) [@zlq178](https://discourse.julialang.org/u/zlq178)\
**Post date:** [April 25, 2021, 3:27am UTC](https://discourse.julialang.org/t/solver-argument-mosekmodel-must-be-an-abstractmathprogsolver/59967/1 "2021-04-25T03:27:51Z")

</div>

This is an SDP problem or Mosek problem.

```julia
using JuMP, Mosek, Plots, MosekTools
# 生成一个200x200的稠密随机对称矩阵Q
Q = randn(200,200)
Q = Q + Q'
# 负责进行抽样实验的函数
function SampleBQP(Q,N)
    naive_fval = zeros(N,1)
    GW_fval = zeros(N,1)
    n = size(Q,1) 
    # 这里先解出SDP，使用了Mosek求解器
    GW_SDP = Model(solver =Mosek.Optimizer(MSK_IPAR_LOG = 0) #=MosekSolver(MSK_IPAR_LOG = 0)=#)
    @variable(GW_SDP, X[1:n,1:n])
    @SDconstraint(GW_SDP, X>=0)
    @constraint(GW_SDP, diag(X).== ones(n,1) )
    @objective(GW_SDP, Min, trace(Q*X))
    solve(GW_SDP)
    X_SDP = getvalue(X)
    V_SDP = cholfact(X_SDP.+1e-4*eye(n))[:U]  
    for i = 1:N
        # Naive算法
        naive_x = rand([-1,1], n)
        naive_fval[i] = sum(naive_x' * Q * naive_x) 
        # 随机生成超平面，其实像这样用高斯随机数就好啦
        random_norm_vec = randn(n,1)
        random_norm_vec = random_norm_vec/norm(random_norm_vec,2)
        GW_sol = [if (dot(random_norm_vec,V_SDP[:,j])>=0) 1 else -1 end for j = 1:n]
        GW_fval[i] = sum(GW_sol' * Q * GW_sol)
    end
    return naive_fval, GW_fval, X_SDP
end
# 进行10000次实验，输出所有的目标函数
naive_f, GW_f, X_SDP = SampleBQP(Q,10000)
# 画出结果的直方图
histogram(naive_f,label = "Naive samples")
histogram(GW_f,label = "GW samples")

```

Firstly, the code in line 14 is:  
`GW_SDP = Model(solver =MosekSolver(MSK_IPAR_LOG = 0)`  
But it shows me an error:  
LoadError: UndefVarError: MosekSolver not defined  
So I try to change `GW_SDP = Model(solver =MosekSolver(MSK_IPAR_LOG = 0)` into`GW_SDP = Model(solver =Mosek.Optimizer(MSK_IPAR_LOG = 0)`. It shows me another error:  
LoadError: solver argument (MosekModel) must be an AbstractMathProgSolver  
What is the problem, please? What’s wrong with my arguments?

---

<div class="post-metadata">

**Author:** ![odow](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/odow/32/28685_2.png) [@odow](https://discourse.julialang.org/u/odow)\
**Post date:** [April 25, 2021, 4:01am UTC](https://discourse.julialang.org/t/solver-argument-mosekmodel-must-be-an-abstractmathprogsolver/59967/2 "2021-04-25T04:01:23Z")

</div>

Please update to the latest version of JuMP.

The correct syntax is

```nohighlight
using JuMP, MosekTools
GW_SDP = Model(Mosek.Optimizer)
set_optimizer_attribute(model, "MSK_IPAR_LOG", 0)

```

---

<div class="post-metadata">

**Author:** ![zlq178](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zlq178/32/17952_2.png) [@zlq178](https://discourse.julialang.org/u/zlq178)\
**Post date:** [April 25, 2021, 7:34am UTC](https://discourse.julialang.org/t/solver-argument-mosekmodel-must-be-an-abstractmathprogsolver/59967/3 "2021-04-25T07:34:38Z")

</div>

I have change `GW_SDP = Model(solver =Mosek.Optimizer(MSK_IPAR_LOG = 0)` to ` GW_SDP = Model(Mosek.Optimizer) set_optimizer_attribute(GW_SDP, "MSK_IPAR_LOG", 0)`.  
It shows a new error:  
LoadError: MethodError: no method matching Model(::typeof(Mosek.Optimizer))

 ![image](https://global.discourse-cdn.com/julialang/original/3X/6/9/695cc8da96d688bb9bb29bb5292d608e1e78a1ac.png)

---

<div class="post-metadata">

**Author:** ![odow](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/odow/32/28685_2.png) [@odow](https://discourse.julialang.org/u/odow)\
**Post date:** [April 25, 2021, 8:50am UTC](https://discourse.julialang.org/t/solver-argument-mosekmodel-must-be-an-abstractmathprogsolver/59967/4 "2021-04-25T08:50:39Z")

</div>

You need to update to the latest version of JuMP.

---

<div class="post-metadata">

**Author:** ![zlq178](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zlq178/32/17952_2.png) [@zlq178](https://discourse.julialang.org/u/zlq178)\
**Post date:** [April 25, 2021, 9:27am UTC](https://discourse.julialang.org/t/solver-argument-mosekmodel-must-be-an-abstractmathprogsolver/59967/5 "2021-04-25T09:27:27Z")

</div>

![image](https://global.discourse-cdn.com/julialang/original/3X/6/0/60117d6db9ab9fff540282efa2d4d7483ee9ed54.png)  
Can’t I install the latest version?

---

<div class="post-metadata">

**Author:** ![blegat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/blegat/32/217090_2.png) [@blegat](https://discourse.julialang.org/u/blegat)\
**Post date:** [April 26, 2021, 6:54am UTC](https://discourse.julialang.org/t/solver-argument-mosekmodel-must-be-an-abstractmathprogsolver/59967/6 "2021-04-26T06:54:11Z")

</div>

JuMPeR does not support the latest version of JuMP. You need to uninstall it.

---

<div class="post-metadata">

**Author:** ![zlq178](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zlq178/32/17952_2.png) [@zlq178](https://discourse.julialang.org/u/zlq178)\
**Post date:** [April 26, 2021, 7:20am UTC](https://discourse.julialang.org/t/solver-argument-mosekmodel-must-be-an-abstractmathprogsolver/59967/7 "2021-04-26T07:20:33Z")

</div>

Solve it. Thanks for your help very much~
