2017-03-04 39 views
0

這是一個試圖回答以下問題:https://matheducators.stackexchange.com/questions/11757/small-data-sets-with-integral-sample-standard-deviations二次約束MIQP與朱莉婭和gurobi

所以下面的代碼的意圖是要找到小數據集與整數標準偏差的例子。這可以表示爲一個二次約束的混合整數二次程序,所以我嘗試使用Julia的Gurobin。以下是我的代碼:

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 

任何想法:

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) 

在運行這個結果嗎?

回答