gpt4 book ai didi

optimization - Julia JuMP - 目标函数中的 `max` 错误 : No method matching isless

转载 作者:行者123 更新时间:2023-12-04 07:53:00 37 4
gpt4 key购买 nike

我的代码有错误,有人可以帮我吗?
我的代码:

function funP(u, τ::Float64)
w = (τ*max(u, 0)) + ((1-τ)*max(-u, 0))
return w
end

τ = 0.2
modelquant = Model(with_optimizer(OSQP.Optimizer))
@variable(modelquant, β[i=0:1])
@variable(modelquant, erro[1:T])

@constraint(modelquant,[i=1:T], erro[i] >= contratos[i] - β[0] - β[1]*spot[i])
@constraint(modelquant,[i=1:T], erro[i] >= -contratos[i] + β[0] + β[1]*spot[i])


@objective(modelquant, Min, sum(funP(erro[i], τ) for i=1:T))

optimize!(modelquant)
objective_value(modelquant)
𝐁 = JuMP.value.(β)
错误是:

julia> @objective(modelquant, Min, sum(funP(erro[i], τ) for i=1:T))ERROR: MethodError: no method matching isless(::Int64, ::VariableRef)Closest candidates are:isless(::Missing, ::Any) at missing.jl:87isless(::Real, ::AbstractFloat) at operators.jl:166isless(::Integer, ::ForwardDiff.Dual{Ty,V,N} where N where V) where Ty at C:\Users\Fernanda.julia\packages\ForwardDiff\kU1ce\src\dual.jl:140...Stacktrace:[1] max(::VariableRef, ::Int64) at .\operators.jl:417[2] funP(::VariableRef, ::Float64) at .\REPL[8]:2[3] macro expansion at C:\Users\Fernanda.julia\packages\MutableArithmetics\bPWR4\src\rewrite.jl:276 [inlined][4] macro expansion at C:\Users\Fernanda.julia\packages\JuMP\qhoVb\src\macros.jl:830 [inlined][5] top-level scope at .\REPL[20]:1


非常感谢!

最佳答案

您需要重新设计您的模型以替换 max带有二进制变量的函数。
在您的情况下,代码将如下所示(检查拼写错误):

@variable(modelquant, erro_neg[1:T], Bin)
@variable(modelquant, erro_pos[1:T], Bin)
@constraint(modelquant,for i=1:T,erro_neg[i]+erro_pos[i]==1)
@constraint(modelquant,for i=1:T,erro[i]*erro_pos[i] >= 0)
@constraint(modelquant,for i=1:T,erro[i]*erro_neg[i] <= 0)
@objective(modelquant, Min, sum( τ*erro_neg[i]*erro[i]+ (1-τ)*erro[i]*erro_npos[i] for i=1:T))
请注意,在我的版本中,您实际上可以安全地删除 Bin条件来自 erro_negerro_pos并且模型仍然有效(您需要凭经验测试您的求解器更喜欢什么)

关于optimization - Julia JuMP - 目标函数中的 `max` 错误 : No method matching isless,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66861711/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com