Optimization LoadError:MethodError:没有方法匹配值(::数组{VariableRef,1})

Optimization LoadError:MethodError:没有方法匹配值(::数组{VariableRef,1}),optimization,julia,julia-jump,Optimization,Julia,Julia Jump,我对朱莉娅比较陌生,一直在努力学习。所以我遇到了一个单元组合问题的例子;但是,它对我不起作用,因为我遇到了以下错误: LoadError: MethodError: no method matching value(::Array{VariableRef,1}) Closest candidates are: value(!Matched::NonlinearExpression) at ***\packages\JuMP\jnmGG\src\nlp.jl:11

我对朱莉娅比较陌生,一直在努力学习。所以我遇到了一个单元组合问题的例子;但是,它对我不起作用,因为我遇到了以下错误:

    LoadError: MethodError: no method matching 
    value(::Array{VariableRef,1})
    Closest candidates are:
    value(!Matched::NonlinearExpression) at ***\packages\JuMP\jnmGG\src\nlp.jl:1126
    value(!Matched::NonlinearParameter) at ***\packages\JuMP\jnmGG\src\nlp.jl:125
    value(!Matched::VariableRef) at ***\packages\JuMP\jnmGG\src\variables.jl:721
    ...
in expression starting at untitled-c2a2b8253aafb31b0a191c03db8d0489:41
solve_uc(::Array{Int64,1}, ::Array{Int64,1}, ::Array{Int64,1}, ::Int64, 
::Int64, ::Int64) at untitled-c2a2b8253aafb31b0a191c03db8d0489:38
top-level scope at none:0
代码本身在这里(我从教程中获取):

使用跳转
使用GLPK
使用MathOptiInterface
常量MOI=MathOptiInterface
使用交互
常数g_max=[10001000];
常数g_min=[0300];
常数c_g=[50100];
常数c_g0=[1000,0]
常数c_w=50;
常数d=1500;
常数w_f=200;
函数求解(g_max,g_min,c_g,c_w,d,w_f)
uc=模型(带有_优化器(GLPK.optimizer))
@变量(uc,0欢迎使用SO

由于
g
u
是变量数组,您需要在
g
u
上调用
value
,并在函数名后加一个点(
)。更改

return status, value(g), value(w), w_f-value(w), value(u), objective_value(uc)

应该修复错误

请注意,这是Julia中的一种常见样式。函数通常只针对单个元素编写,要将函数应用于元素数组(或通常应用于元素集合),您可以使用(即
f.(a)
)轻松地通过数组广播调用

虽然看起来与您得到的错误无关,但行
status=optimize!(myModel)
引用的变量
myModel
未在您的函数范围内定义。您可能应该将其更改为
status=optimize!(uc)
欢迎使用

由于
g
u
是变量数组,您需要在
g
u
上调用
value
,并在函数名后加一个点(
)。更改

return status, value(g), value(w), w_f-value(w), value(u), objective_value(uc)

应该修复错误

请注意,这是Julia中的一种常见样式。函数通常只针对单个元素编写,要将函数应用于元素数组(或通常应用于元素集合),您可以使用(即
f.(a)
)轻松地通过数组广播调用


虽然看起来与您得到的错误无关,但行
status=optimize!(myModel)
引用的变量
myModel
未在函数的作用域中定义。您可能应该将其更改为
status=optimize!(uc)

谢谢!顺便问一下,你能推荐一些关于Julia语法的教程/教科书吗?或者跳转教程是最好的吗?@ArseniiGrinchenko是一个很好的资源。函数、方法、多维数组、变量范围、类型和性能提示应该是第一个阅读的部分。关于t官方网站。Julia Language YouTube频道列出了一些关于Julia和JuMP的教程。我不是一个真正的JuMP用户,但是
JuMP
的官方repo有一个
examples
目录,并且有一些可用的。谢谢!顺便问一下,你能推荐一些关于Julia语法的教程/教科书吗?或者JuMP教程是t他是最好的吗?@ArseniiGrinchenko是一个很好的资源。函数、方法、多维数组、变量范围、类型和性能提示应该是第一个阅读的部分。官方网站上有一个页面。Julia Language YouTube频道列出了一些关于Julia和JuMP的教程。我并不是真正的JuMP us呃,但是"代码"跳跃("JuMP)("代码"跳跃)的官方回购协议有一个"代码"示例目录("exampl。
return status, value.(g), value(w), w_f-value(w), value.(u), objective_value(uc)