Недавно я столкнулся с проблемой при использовании Pulp.
Я так определяю свою проблему.
point = lp.LpProblem("Maximize the Points", lp.LpMaximize)
#the dict can only be string, so we use a list containing string
students = [str(i) for i in list(range(96))]
groups = [str(i) for i in list(range(24))]
choices = lp.LpVariable.dicts("Choice",(groups,students),0,1, cat = "Integer")
Чтобы решить мою задачу линейного программирования, моя задача настолько сложна, что мне нужно использовать некоторые самописные функции для ее решения. Это так,
point += 1 * cal_lang() \
+ 1 * cal_leader() \
+ 1 * cal_learn() \
+ 1 * cal_like() \
- 10 * cal_dislike() , "Maximize the evaluation points"
Между тем, в cal_lang мне нужно вычислить, сколько переменных равно 1, поэтому я использую
if lp.value(choices[group][student]) == 1 :
Однако это не работает, даже если pulp.value определено как.
pulp.value (x) Возвращает значение переменной / выражения x или x, если это число.
print('%%%%%%%%%%%%%%%%%')
print(choices["5"]["5"])
print(type(choices["5"]["5"]))
print(lp.value(choices["5"]["5"]))
print('%%%%%%%%%%%%%%%%%')
Это так запутано. Затем я пытаюсь извлечь тип и значение моих переменных. Код и вывод такие.
%%%%%%%%%%%%%%%%%
Choice_5_5
<class 'pulp.pulp.LpVariable'>
None
%%%%%%%%%%%%%%%%%
Кажется, что я могу извлечь значение моей переменной chioces ["5"] ["5"], которая определена как целое число 0 или 1, и мое "if" не работает.
Как я могу решить эту проблему?
varaible.value
или что-то подобное, прежде чем что-то делать с окончательным решением, вы, вероятно, делаете что-то не так. Поэтому постарайтесь быть более точными в том, что вы делаете, и постарайтесь минимизировать / извлечь суть вашей проблемы. - person sascha   schedule 17.03.2018