julia - 使用 Julia 和 gurobi 进行二次约束 MIQP

标签 julia gurobi julia-jump

这是尝试回答以下问题:https://matheducators.stackexchange.com/questions/11757/small-data-sets-with-integral-sample-standard-deviations

因此以下代码的目的是查找具有整数标准差的小数据集的示例。这可以表述为二次约束混合整数二次规划,因此我尝试使用 Julia 的 Gurobin。以下是我的代码:

using JuMP  
using Gurobi

m = Model(solver = GurobiSolver() )
@variable(m,  0<= x[1:20] <= 100,  Int)
@variable(m,  Gj,  Int)
@constraint(m,  Gj == sum(x[1:20])/20 )
@variable(m,  Var,  Int)
@constraint(m,  Var == sum( (x[1:20]-Gj).^2/19) )
@variable(m,  sd,  Int)
@constraint(m, sd * sd == Var)
### We need some restrictions to avoid all equal, < or zero,  solutions:
@constraint(m,  sd >= 5)
@objective(m, Min, sd)

print(m)

status = solve(m)

println("Objective value: ", getobjectivevalue(m) )

x = getvalue(x)

运行此结果:

ERROR: Gurobi.GurobiError(10021, "Quadratic equality constraints")
Stacktrace:
 [1] optimize(::Gurobi.Model) at /home/kjetil/.julia/v0.6/Gurobi/src/grb_solve.jl:7
 [2] optimize!(::Gurobi.GurobiMathProgModel) at /home/kjetil/.julia/v0.6/Gurobi/src/GurobiSolverInterface.jl:294
 [3] #solve#101(::Bool, ::Bool, ::Bool, ::Array{Any,1}, ::Function, ::JuMP.Model) at /home/kjetil/.julia/v0.6/JuMP/src/solvers.jl:173
 [4] solve(::JuMP.Model) at /home/kjetil/.julia/v0.6/JuMP/src/solvers.jl:148

有什么想法吗?

最佳答案

像 Gurobi Optimizer 这样的数学编程求解器无法求解具有二次等式约束的模型。 Here are the types of constraints that Gurobi Optimizer can solve 。要使用 Gurobi Optimizer 求解模型,您必须将约束转换为这些形式之一,例如二次不等式约束。

关于julia - 使用 Julia 和 gurobi 进行二次约束 MIQP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42598827/

相关文章:

julia - 如何将JuMP约束写入文本文件?

julia - 在 Julia 中滞后并领先

visual-studio-code - VSCode : How do I open the documentation (ala `show hover` ) in another pane?

matrix - 减少 Julia 中矩阵乘法的分配数量?

python - Gurobi 前缀和优化

linux - gurobi 已安装,但 Matlab 无法识别它

julia - 如何在julia中使用JuMP获得最佳解决方案?

julia - 列出 JuMP 中可用的求解器

types - 为什么我的类型构造函数没有被识别

python - 如何使用 "string"将 "linear expression"引用为 Python Gurobi 函数中的参数?