对象不可下标问题

问题描述 投票:0回答:2

我正在研究旨在显示多个解决方案的优化问题。此代码是禁止返回相同解决方案的附加约束。这是我得到的输出:TypeError: 'builtin_function_or_method' object is not subscriptable

我查看了多个解决方案,但它们似乎不适用于我的设置。这是两个字典:

pref_dict[(c, d)] = int(preference[index_c][index_d])
assign = pulp.LpVariable.dicts("AssignTo", [(i, j) for i in worker for j in job], 0, 1, LpBinary)  
while True:
    model.solve()
    print("Status:", LpStatus[model.status])
    if LpStatus[model.status] == "Optimal":
        for v in model.variables():
            if v.varValue > 0:
                answer = str(v).split("'")
                solutions.append((answer[1], answer[3]))
            with open('Solutions.csv', 'w', newline='') as myfile:
                writer = csv.writer(myfile)
                writer.writerows(solutions)
#this is the line that gives me issues:
        model += pulp.lpSum([pref_dict[(i, j)] * assign[(i, j)] for i in worker
                                                                for j in job
                                                                if value(vars[i][j]) == 1]) <= 80
    else:
        break
python-3.x pulp
2个回答
0
投票

vars[i][j]我认为这应该是assign[i,j]


0
投票

我知道了。我应该只关注二进制值,并将约束限制为<= 1

 model += lpSum([assign[i, j] for i in worker for j in job if value(assign[i, j]) == 1]) <= 1
© www.soinside.com 2019 - 2024. All rights reserved.