2016-07-06 35 views
0

Gibt es eine Möglichkeit, eine Einschränkung in Pulp in Python hinzuzufügen, die alle Variablen über 5 zählt und diese Zahl größer als beispielsweise 10 annimmt? Ich habe derzeit den folgenden Code, aber es ruft nur einmal die Funktion auf;Lineares Programm mit Bedingungsbeschränkung in Pythons Pulp-Modul

def min_qty_constraint(vars): 
    count = 0 
    for v in vars: 
     if v.varValue > 5 : 
      count += 1 
    print count 
    return -count 

prob = pulp.LpProblem('problem',pulp.LpMaximize) 
prob += min_qty_constraint(vars) <= 10 

so zum Beispiel, wenn ich hatte vars = [x1, x2, .., x20] wobei xi ein pulp.Lpvariable und x1, .., x10 = 6 dann dann 10 dieser Variablen größer sind als 5 erfüllt somit den contratraits, dass mindestens 10 Variablen Werte größer als 5 haben.

Antwort

1

Dies ist nicht linear. Es gibt eine Möglichkeit, dies zu tun mit zusätzlichen Binärgrößen y(i):

x(i) >= 5 y(i) 
sum(i, y(i)) >= 10 

(Anmerkung: Ich nahm x(i) nicht negative Variablen).