如何解决如何在Julia中使用Juniper.register?
代码是用Julia 1+编写的。
using JuMP,Gurobi,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(Gurobi.Optimizer,"logLevel" => 0)))
# variables-----------------------------------------------------------------
f(x) = cdf(Normal(0,1),x);
JuMP.register(ALT,:f,1,f; autodiff = true);
@variable(ALT,h >= 0);
@variable(ALT,L >= 0);
@variable(ALT,n,Int);
#-------------------------------------------------------------------
@NLexpression(ALT,k7,1-f(L-sig*sqrt(n))+f(-L-sig*sqrt(n)));
#constraints--------------------------------------------------------
@NLconstraint(ALT,f(-L) <= 1/400);
#-------------------------------------------------------------------
@NLobjective(ALT,Min,1/k7)
optimize!(ALT)
但是发生了此错误
错误:您已注册功能吗?然后,请同时为Juniper注册该功能,请参见: https://lanl-ansi.github.io/Juniper.jl/stable/options/#registered_functions%3A%3AUnion%7BNothing%2CVector%7BRegisteredFunction%7D%7D-%5Bnothing%5D-1
然后将代码更改如下
using JuMP,f; autodiff = true);
Juniper.register(ALT,1/k7)
optimize!(ALT)
但是再次发生此错误 错误:MethodError:没有方法匹配寄存器(:: Model,:: Symbol,:: Int64,:: typeof(f); autodiff = true) 您能帮我解决这些错误吗?谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。