2016-12-01 6 views
0

Nach dem Ausführen des folgenden Codes in CPLEX OPL IDE;CPLEX: Wie man dasselbe cplex "Modell" mit verschiedenen "Daten" löst

nmbl = 521466; 
nbi = 5; 

int As[nbi] =...; 

int amb[nmbl] = ...; 
dvar boolean I[nmbl][nbi]; 

minimize 
sum (a in nmbl, b in nbi, c in nmbl: c>a,d in nbi: d != b) I[a][b]*I[c][d]*10; 


subject to 
{ 

**cons1:** 
forall (i in nmbl) 
    I[i][1] + I[i][2] + I[i][3] + I[i][4]+ I[i][5] == 1; 

**cons2:** 

forall (j in nbi) 
    sum (i in nmbl) 
      I[i][j]*amb[i] <= As[j]; 
} 

Während dieser Code ausgeführt wird, fand ich eine CPLEX Fehler 1016: Werbe Version. Problemgrößenbeschränkungen überschritten.

Noch, wenn wir das aktuelle Problem mit der gleichen Version der Software lösen wollen.

Wenn wir 50 Elemente gleichzeitig als Eingabe für das Modell bereitstellen.

  • Da manuell ist es nicht möglich, da eine Größe von nmbl zu hoch ist ein wenn wir 50 Elemente an Zeit in Anspruch nehmen würde es 521466/50 Iterationen tun nehmen. Gibt es eine Möglichkeit, das Modell für jeden 50 Satz NMBL-Daten zu iterieren?

Gibt es einen Weg, es zu tun? Ich werde Ihnen dankbar sein, wenn mir jemand kleines Beispiel geben kann.

Antwort

0

Ich sehe wirklich nicht den Sinn dieses Ansatzes. Wenn Ihr Problem wirklich in viele disjunkte Teilprobleme zerlegbar ist, könnte es funktionieren. Aber von dem, was Sie uns über das Problem gesagt haben, hört es sich so an, als wäre es nicht so trennbar. Nur viele kleine Teile des ganzen Problems zu lösen, wird mit ziemlicher Sicherheit nicht funktionieren. Eine praktikable Lösung zu finden, wäre schwierig. Eine gute Lösung zu bekommen wäre sehr schwierig. Das Entwerfen eines Dekompositionsansatzes für jedes große Problem ist komplex und schwierig, und die wahrscheinliche Konvergenz mit so kleinen Teilproblemen wird sehr langsam sein. Sie werden mit ziemlicher Sicherheit eine größere Solver-Lizenz erwerben müssen.