Julia LoadError:MethodError,尽管(表面上)使用了工作代码
大家好,这里是编程新手 我正在尝试使用Julia和GLPK解决一个线性规划问题,重点是尝试,因为到目前为止,无论我尝试什么,我都会遇到错误。代码如下:Julia LoadError:MethodError,尽管(表面上)使用了工作代码,julia,linear-programming,glpk,julia-jump,Julia,Linear Programming,Glpk,Julia Jump,大家好,这里是编程新手 我正在尝试使用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 ) @co
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))
Pkg.status():
也许这个例子使用的是一个旧的API版本,它在一年前发生了一些变化 尝试(至少需要
跳转0.21.0):
如果您不打算添加属性(或跳转版本早于0.21.0,但至少早于0.18.0),还有一个较短的版本:
然而,我总是使用第一个。我经常使用的一个常见属性是我希望看到的消息有多详细,例如:
m = Model(optimizer_with_attributes(GLPK.Optimizer, "msg_lev" => GLPK.GLP_MSG_ALL))
编辑
查看您的包状态
执行以下操作:
using Pkg
pkg"rm GLPKMathProgInterface"
pkg"up JuMP"
(@v1.5) pkg> rm GLPKMathProgInterface
(@v1.5) pkg> update
这将使您能够使用软件包版本进行分类。当您这样做的时候,我的代码的第一个版本将工作(现在您有一个过时的跳转版本)
此外,注意<代码>原子< /代码>不再被维护——考虑切换到VS代码。
< P>将我的评论收集到一个更容易阅读的答案中。
GLPKMathProgInterface.jl软件包阻止了您的GLPK.jl版本。运行以下命令以更新包:
Pkg.rm("GLPKMathProgInterface")
Pkg.update()
或者,您可以在包模式下运行等效命令。要进入打包模式,请键入]
。然后在包模式下,运行以下操作:
using Pkg
pkg"rm GLPKMathProgInterface"
pkg"up JuMP"
(@v1.5) pkg> rm GLPKMathProgInterface
(@v1.5) pkg> update
您可以将错误stacktrace添加到您的问题中吗?您使用的Julia版本是什么?如果您编辑您的问题,将stacktrace作为代码块包含,阅读stacktrace会更容易。:)是的,我意识到:P我现在已经把它添加到问题中了。你的代码在我的Mac电脑上运行。尝试使用Pkg运行;Pkg.status()
在您的Julia REPL中,并将其输出粘贴到您的问题中。optimizer\u与\u属性
是在Jump 0.21.0中添加的(因此这是最新版本),据我所知,新API是在Jump 0.18.0中引入的。所以这完全取决于您运行的版本!
Pkg.rm("GLPKMathProgInterface")
Pkg.update()
(@v1.5) pkg> rm GLPKMathProgInterface
(@v1.5) pkg> update