Как узнать значение целлюлозного ЛП, найденного при решении?
Мне было интересно, есть ли способ получить результаты LP (линейной программы), найденные при решении вашей проблемы. Значения, которые я ищу, - это не процент использования каждого элемента, а значение, найденное для каждого из ваших ограничений. Я просмотрел документацию и строки документации для модуля целлюлозы и не нашел способа получить значения.
Сайт, который я просмотрел, чтобы проверить, был ли какой-либо путь:
1 ответ
Не уверен, что полностью понял ваш вопрос. Я предполагаю, что вы спрашиваете, как найти значение ограничения целлюлозы.
Пусть prob будет вашей линейной задачей.
Вы можете получить значение ограничения двумя способами:
# iterate over the variables of the constraint and sum their values
# I'm not considering here the possibility that varValue may be None
for constraint in prob.constraints:
sum = 0
for var, coefficient in prob.constraints[constraint].items():
sum += var.varValue * coefficient
print(prob.constraints[constraint].name, sum)
В противном случае напрямую, используя атрибут value, но если ограничение имеет RHS, вы должны обратить на это внимание и рассмотреть его, так как значение ограничения будет учитывать его.
# getting the value of the constraint
for constraint in prob.constraints:
print(prob.constraints[constraint].name, prob.constraints[constraint].value() - prob.constraints[constraint].constant)
Действительно, вот как метод value() реализован в LpAffineExpression, суперклассе LpConstraint: https://github.com/coin-or/pulp/blob/master/src/pulp/pulp.py
def value(self):
s = self.constant
for v,x in self.items():
if v.varValue is None:
return None
s += v.varValue * x
return s