2017-03-04 3 views
0

Dies ist ein Versuch, die folgende Frage zu beantworten: https://matheducators.stackexchange.com/questions/11757/small-data-sets-with-integral-sample-standard-deviationsquadratisch eingeschränkt MIQP mit julia und gurobi

So ist die Absicht des folgenden Codes ist Beispiele für kleine Datensätze mit ganzzahligen Standardabweichung zu finden. Das kann als ein quadratisch eingeschränktes gemischtes, ganzzahliges quadratisches Programm formuliert werden, daher versuche ich, Gurobin von Julia zu verwenden. Im Anschluss ist mein Code:

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) 

diese Ergebnisse in Laufen:

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 

Irgendwelche Ideen?

Antwort

1

Ein mathematischer Programmierlöser wie Gurobi Optimizer kann Modelle mit quadratischen Gleichheitsbedingungen nicht lösen. Here are the types of constraints that Gurobi Optimizer can solve. Um Ihr Modell mit Gurobi Optimizer zu lösen, müssen Sie Ihre Abhängigkeiten in eine dieser Formen umwandeln, z. B. quadratische Ungleichheitsbedingungen.