2016-07-06 7 views
0

Есть ли способ добавить ограничение в пульпе в python, которое будет считать все переменные выше 5 и потребовать, чтобы число было больше, чем позволяет сказать 10? В настоящее время у меня есть следующий код, но он только вызывает функцию один раз;Линейная программа с условным ограничением в модуле Pulon Pulp

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 

так, например, если я имел вары = [x1, x2, .., х20], где хи является pulp.Lpvariable и x1, .., х10 = 6, то тогда 10 из этих переменных больше 5, выполняя, таким образом, действия, при которых не менее 10 переменных имеют значения больше 5.

ответ

1

Это не линейно. Существует способ сделать это с помощью дополнительных бинарных переменных y(i):

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

(Примечание: я предположил, x(i) неотрицательные переменные).

 Смежные вопросы

  • Нет связанных вопросов^_^