Ich arbeite in der virtuellen Netzwerkeinbettung, und ich erstelle ein Modell mit glpk, um die Netzwerke einzubetten. Ich habe diese folgende Zielfunktion:GLPK - Minimiere einen Variablenwert
minimize cost: sum{(i,j) in VEdges} sum{u in SNodes, v in SNodes} weight[u,v] * fw[i,j,u,v] * secSupEdge[u,v] + sum{u in SNodes, v in SNodes} r[u,v] * secSupEdge[u,v];
Dann habe ich die folgenden zwei Einschränkungen (ua)
s.t. relConst2{(i,j) in VEdges, u in AllNodes, v in AllNodes}: bwDem[i,j] * phiw[i,j,u,v] >= fw[i,j,u,v];
s.t. linkSecConst0{(i,j) in VEdges, u in SNodes, v in SNodes}: phiw[i,j,u,v] * secDemEdge[i,j] <= secSupEdge[u,v];
"phiw" eine binäre Variable ist
"fw "und" r "sind Variablen, die einen beliebigen Wert annehmen können> = 0
alle anderen ("Gewicht", "bwDem", "secDemEdges", "secSupEdge") sind params nur
Ich möchte phiw mit fw beziehen. Wenn fw> 0, phiw 1. den Wert nehmen sollte, wenn fw == 0, phiw den Wert nehmen sollte 0
Normalerweise tut es das, was ich will, aber manchmal phiw nimmt der Wert 1, wenn fw den Wert 0 hat, was ich nicht will. Dies geschieht, weil die Einschränkungen erfüllt sind:
Beispiel 1:
S. T. relConst2: 4 * 1> = 0
s.t. linkSecConst0: 1 * 2 = 2
Gibt es eine Möglichkeit, den Wert phiw Variable zu minimieren, aber nicht in die Zielfunktion setzen? Oder setzen Sie es in die Zielfunktion, aber ändern Sie den Wert des Ergebnisses weder den Wert aller anderen Variablen?