julia - julia中有非线性混合整数求解器吗?

标签 julia julia-jump

请您帮我解决这个错误吗? 错误:求解器不支持离散变量。

例如下面的代码

using JuMP,CPUTime, Distributions, Ipopt
#parameters--------------------------------------------------------
sig=0.86;
#---------------------------------------------------------------------------
ALT=Model(solver=IpoptSolver());
# 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)
solve(ALT)

如何解决这个问题?非常感谢。

最佳答案

JuMP 求解器的完整列表及其与模型类型相关的功能可在此处获取 https://jump.dev/JuMP.jl/dev/installation/

根据此列表,以下求解器支持混合整数非线性规划:

  • KNITRO.jl
  • Juniper.jl
  • SCIP.jl

还有值得注意的来自 Los Alamos 的 Alpine.jl,JuMP 文档中未提及。

我建议尝试从 Juniper.jl 开始。由于它使用启发式方法和其他求解器,您的 Model 行可能如下所示:

m = Model(optimizer_with_attributes(Juniper.Optimizer, "nl_solver"=>optimizer_with_attributes(Ipopt.Optimizer, "print_level" => 0), "mip_solver"=>optimizer_with_attributes(Cbc.Optimizer, "logLevel" => 0)))

关于julia - julia中有非线性混合整数求解器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63492133/

相关文章:

julia - 加快 Julia 中的包加载速度

Julia 中的结构文字

julia - 如何使用julia的PackageCompiler搭建PlotStats的快速启动环境?

julia - Julia 中的 UndefVarError

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

julia - 线性规划 : Find all optimal vertices

struct - 返回 Julia 中字段已更改的新结构

arrays - 如何在 Julia 的矩阵中找到值的位置?

python - 如何替换 Julia 中的字符串文字后/前斜杠?

multidimensional-array - Julia 中的维度不匹配