"Not defined variable" 在朱莉娅的 'while loop' 中
"Not defined variable" in a 'while loop' in Julia
我正在尝试使用 JuMP
在 Julia 中进行敏感性分析。这是我的代码:
使用 JuMP、绘图、Gurobi
m=Model(with_optimizer(Gurobi.Optimizer))
@variable(m, x>=0)
@variable(m, y>=0)
@variable(m, k>=0)
k = 0
while k<=1
φ(x,y,k)=3*x+k*y
@objective(m, Max, φ(x,y,k))
@constraint(m, 2*x-4>=0)
@constraint(m, y-0.5*x>=0)
pl=optimize!(m)
k=k+0.2
end
问题是我得到一个错误:
UndefVarError: k not defined
我错过了什么?
julia> k =0
0
julia> while k<10
k=k+1
end
ERROR: UndefVarError: k not defined
Stacktrace:
[1] top-level scope at ./REPL[11]:2
在 julia 中,如果我们使用循环操作,我们在循环外初始化的变量在默认情况下无法在循环内直接访问。为此,我们必须将这些变量设置为全局使用,因为默认情况下它们被认为是本地的
julia> while k<10
global k=k+1
end
现在可以正常工作了
免责声明:这是一个替代解决方案,由 Julia Discorse
的成员建议
在 Julia Discourse 的讨论中,建议将代码包装在函数中以提高速度并避免 global
问题:
function run_code()
model = Model(with_optimizer(Gurobi.Optimizer))
@variable(model, x >= 0)
@variable(model, y >= 0)
@constraint(model, 2x - 4 >= 0)
k = 0
while k <= 1
@objective(model, Max, 3x + k * y)
optimize!(model)
k = k + 0.2
end
end
run_code()
我正在尝试使用 JuMP
在 Julia 中进行敏感性分析。这是我的代码:
使用 JuMP、绘图、Gurobi
m=Model(with_optimizer(Gurobi.Optimizer))
@variable(m, x>=0)
@variable(m, y>=0)
@variable(m, k>=0)
k = 0
while k<=1
φ(x,y,k)=3*x+k*y
@objective(m, Max, φ(x,y,k))
@constraint(m, 2*x-4>=0)
@constraint(m, y-0.5*x>=0)
pl=optimize!(m)
k=k+0.2
end
问题是我得到一个错误:
UndefVarError: k not defined
我错过了什么?
julia> k =0
0
julia> while k<10
k=k+1
end
ERROR: UndefVarError: k not defined
Stacktrace:
[1] top-level scope at ./REPL[11]:2
在 julia 中,如果我们使用循环操作,我们在循环外初始化的变量在默认情况下无法在循环内直接访问。为此,我们必须将这些变量设置为全局使用,因为默认情况下它们被认为是本地的
julia> while k<10
global k=k+1
end
现在可以正常工作了
免责声明:这是一个替代解决方案,由 Julia Discorse
的成员建议在 Julia Discourse 的讨论中,建议将代码包装在函数中以提高速度并避免 global
问题:
function run_code()
model = Model(with_optimizer(Gurobi.Optimizer))
@variable(model, x >= 0)
@variable(model, y >= 0)
@constraint(model, 2x - 4 >= 0)
k = 0
while k <= 1
@objective(model, Max, 3x + k * y)
optimize!(model)
k = k + 0.2
end
end
run_code()