剂量JuMP.setRHS是否适用于朱莉娅的非线性模型?

问题描述

在以下代码中,NL约束的RHS应该更改。但是错误发生了。 错误undefvarerror:setRHS未定义。您能否了解我为什么会发生此错误?谢谢您的帮助

using JuMP,CPLEX,Ipopt
#parameters--------------------------------------------------------
sig=0.86;
#---------------------------------------------------------------------------
ALT= Model(optimizer_with_attributes(Juniper.Optimizer,"nl_solver"=>optimizer_with_attributes(Ipopt.Optimizer,"print_level" => 0),"mip_solver"=>optimizer_with_attributes(CPLEx.Optimizer,"logLevel" => 0),"registered_functions" =>[Juniper.register( :f,1,f; autodiff = true)])

       )

# variables-----------------------------------------------------------------
f(x) = cdf(normal(0,1),x);
JuMP.register(ALT,:f,f; autodiff = true);
@variable(ALT,h >= 0.1);
@variable(ALT,L >= 0.0001);
@variable(ALT,n>=2,Int);
#-------------------------------------------------------------------
@NLexpression(ALT,k7,1-f(L-sig*sqrt(n))+f(-L-sig*sqrt(n)));

@NLexpression(ALT,f2,1/k7)
#constraints--------------------------------------------------------
@NLconstraint(ALT,f(-L) <= 1/400);

@NLconstraint(ALT,rf2,f2<=10000);

#-------------------------------------------------------------------
@NLobjective(ALT,Min,f2)

optimize!(ALT)
JuMP.setRHS(rf2,getvalueNLobjective(1/k7))

解决方法

您正在使用过时的JuMP版本示例。从今天起,您应该使用set_normalized_rhs

set_normalized_rhs(con_ref,some_rhs_value)

请注意,这将设置归一化的 RHS,该RHS已由JuMP预计算。例如,对于@constraint(model,2x - 5 <= 2),归一化值为7

另请参阅https://jump.dev/JuMP.jl/v0.21/constraints/#Constraint-modifications-1