LoadError:MethodError despite (seemingly) using working code
LoadError:MethodError despite (seemingly) using working code
大家好这里是编程新手
我正在尝试使用 Julia 和 GLPK 解决线性规划问题,重点是尝试,因为到目前为止,无论我尝试什么,我都会遇到错误。这是代码:
using JuMP, GLPK
m = Model(GLPK.Optimizer)
@variable(m, x1 >= 0 )
@variable(m, x2 >= 0 )
@variable(m, x3 >= 0 )
@objective(m, Max, 200x1 +200x2 + 700x3 )
@constraint(m, 2x1 + x2 + 3x3 <= 22 )
@constraint(m, x1 + 2x2 + 4x3 <= 20 )
@constraint(m, x1 + x2 + x3 <= 10 )
optimize!(m)
println("Objective value: ", JuMP.objective_value(m))
println("x1 = ", JuMP.value(x1))
println("x2 = ", JuMP.value(x2))
println("x2 = ", JuMP.value(x3))
据我所知,错误在第二行,调用 GLPK(或者可能是第一行,因为它没有“导入”GLPK)
上面的代码是我的讲师作为问题的解决方案上传的确切代码,但它不会 运行 在我的 Windows PC 上,我怀疑它与 Windows Defender 有关,所以尝试了没有,我已经卸载并重新安装了 Julia 和 Atom(以及软件包),我尝试将代码直接包含在 Julia 终端中,并在我的笔记本电脑上完成所有这些但无济于事。 Julia ver.: 1.5.2 我也测试过 1.0.5
我很难弄清楚该怎么做,而且我也无法在 Google 上找到任何内容。我希望我的问题不是太愚蠢,我将不胜感激解决方案或信息!
错误信息:
LoadError: MethodError: no method matching Model(::Type{GLPK.Optimizer})
Closest candidates are:
Model(::Any, !Matched::Any, !Matched::Any, !Matched::Any, !Matched::Any, !Matched::Any, !Matched::Any, !Matched::Any) at C:\Users\Peter\.julia\packages\JuMP\iGamg\src\JuMP.jl:126
Model(; caching_mode, solver) at C:\Users\Peter\.julia\packages\JuMP\iGamg\src\JuMP.jl:161
Model(!Matched::MathOptInterface.AbstractOptimizer, !Matched::Dict{MathOptInterface.ConstraintIndex,AbstractShape}, !Matched::Set{Any}, !Matched::Any, !Matched::Any, !Matched::Dict{Symbol,Any}, !Matched::Int64, !Matched::Dict{Symbol,Any}) at C:\Users\Peter\.julia\packages\JuMP\iGamg\src\JuMP.jl:126
...
in expression starting at C:\Users\Peter\iCloudDrive\BSc\Introduktion til operationsanalyse\Opgaver\Week1Ex1.jl:2
top-level scope at Week1Ex1.jl:2
include_string(::Function, ::Module, ::String, ::String) at loading.jl:1088
Pkg.status():
julia> Pkg.status()
Status `C:\Users\Peter\.julia\environments\v1.5\Project.toml`
[c52e3926] Atom v0.12.21
[60bf3e95] GLPK v0.13.0
[3c7084bd] GLPKMathProgInterface v0.5.0
[4076af6c] JuMP v0.20.0
[e5e0dc1b] Juno v0.8.3
也许这个例子使用的是旧的 API 版本,它在一年前发生了一些变化。
尝试(至少需要 JuMP
0.21.0):
m = Model(optimizer_with_attributes(GLPK.Optimizer))
如果您不打算添加属性(或者 JuMP 早于 0.21.0 但至少为 0.18.0),还有一个更短的版本:
m = Model(with_optimizer(GLPK.Optimizer))
然而,我总是使用第一个。我经常使用的一个常见属性是我希望看到的详细信息,例如:
m = Model(optimizer_with_attributes(GLPK.Optimizer, "msg_lev" => GLPK.GLP_MSG_ALL))
编辑
查看您的包裹 status
执行以下操作:
using Pkg
pkg"rm GLPKMathProgInterface"
pkg"up JuMP"
这应该可以帮助您解决软件包版本问题。当你这样做时,我的代码的第一个版本将起作用(现在你有一个过时的 JuMP 版本)。
此外请注意,Atom
不再维护 - 考虑切换到 VS CODE。
正在将我的评论收集到一个答案中以便于阅读。
GLPKMathProgInterface.jl 软件包阻碍了您的 GLPK.jl 版本。 运行 以下更新您的软件包:
Pkg.rm("GLPKMathProgInterface")
Pkg.update()
或者,您可以 运行 包模式下的等效命令。要进入包模式,请键入 ]
。然后在包模式下,运行如下:
(@v1.5) pkg> rm GLPKMathProgInterface
(@v1.5) pkg> update
大家好这里是编程新手
我正在尝试使用 Julia 和 GLPK 解决线性规划问题,重点是尝试,因为到目前为止,无论我尝试什么,我都会遇到错误。这是代码:
using JuMP, GLPK
m = Model(GLPK.Optimizer)
@variable(m, x1 >= 0 )
@variable(m, x2 >= 0 )
@variable(m, x3 >= 0 )
@objective(m, Max, 200x1 +200x2 + 700x3 )
@constraint(m, 2x1 + x2 + 3x3 <= 22 )
@constraint(m, x1 + 2x2 + 4x3 <= 20 )
@constraint(m, x1 + x2 + x3 <= 10 )
optimize!(m)
println("Objective value: ", JuMP.objective_value(m))
println("x1 = ", JuMP.value(x1))
println("x2 = ", JuMP.value(x2))
println("x2 = ", JuMP.value(x3))
据我所知,错误在第二行,调用 GLPK(或者可能是第一行,因为它没有“导入”GLPK) 上面的代码是我的讲师作为问题的解决方案上传的确切代码,但它不会 运行 在我的 Windows PC 上,我怀疑它与 Windows Defender 有关,所以尝试了没有,我已经卸载并重新安装了 Julia 和 Atom(以及软件包),我尝试将代码直接包含在 Julia 终端中,并在我的笔记本电脑上完成所有这些但无济于事。 Julia ver.: 1.5.2 我也测试过 1.0.5
我很难弄清楚该怎么做,而且我也无法在 Google 上找到任何内容。我希望我的问题不是太愚蠢,我将不胜感激解决方案或信息!
错误信息:
LoadError: MethodError: no method matching Model(::Type{GLPK.Optimizer})
Closest candidates are:
Model(::Any, !Matched::Any, !Matched::Any, !Matched::Any, !Matched::Any, !Matched::Any, !Matched::Any, !Matched::Any) at C:\Users\Peter\.julia\packages\JuMP\iGamg\src\JuMP.jl:126
Model(; caching_mode, solver) at C:\Users\Peter\.julia\packages\JuMP\iGamg\src\JuMP.jl:161
Model(!Matched::MathOptInterface.AbstractOptimizer, !Matched::Dict{MathOptInterface.ConstraintIndex,AbstractShape}, !Matched::Set{Any}, !Matched::Any, !Matched::Any, !Matched::Dict{Symbol,Any}, !Matched::Int64, !Matched::Dict{Symbol,Any}) at C:\Users\Peter\.julia\packages\JuMP\iGamg\src\JuMP.jl:126
...
in expression starting at C:\Users\Peter\iCloudDrive\BSc\Introduktion til operationsanalyse\Opgaver\Week1Ex1.jl:2
top-level scope at Week1Ex1.jl:2
include_string(::Function, ::Module, ::String, ::String) at loading.jl:1088
Pkg.status():
julia> Pkg.status()
Status `C:\Users\Peter\.julia\environments\v1.5\Project.toml`
[c52e3926] Atom v0.12.21
[60bf3e95] GLPK v0.13.0
[3c7084bd] GLPKMathProgInterface v0.5.0
[4076af6c] JuMP v0.20.0
[e5e0dc1b] Juno v0.8.3
也许这个例子使用的是旧的 API 版本,它在一年前发生了一些变化。
尝试(至少需要 JuMP
0.21.0):
m = Model(optimizer_with_attributes(GLPK.Optimizer))
如果您不打算添加属性(或者 JuMP 早于 0.21.0 但至少为 0.18.0),还有一个更短的版本:
m = Model(with_optimizer(GLPK.Optimizer))
然而,我总是使用第一个。我经常使用的一个常见属性是我希望看到的详细信息,例如:
m = Model(optimizer_with_attributes(GLPK.Optimizer, "msg_lev" => GLPK.GLP_MSG_ALL))
编辑
查看您的包裹 status
执行以下操作:
using Pkg
pkg"rm GLPKMathProgInterface"
pkg"up JuMP"
这应该可以帮助您解决软件包版本问题。当你这样做时,我的代码的第一个版本将起作用(现在你有一个过时的 JuMP 版本)。
此外请注意,Atom
不再维护 - 考虑切换到 VS CODE。
正在将我的评论收集到一个答案中以便于阅读。
GLPKMathProgInterface.jl 软件包阻碍了您的 GLPK.jl 版本。 运行 以下更新您的软件包:
Pkg.rm("GLPKMathProgInterface")
Pkg.update()
或者,您可以 运行 包模式下的等效命令。要进入包模式,请键入 ]
。然后在包模式下,运行如下:
(@v1.5) pkg> rm GLPKMathProgInterface
(@v1.5) pkg> update