2017-04-23 211 views
-2

自從我寫這句法作爲spyde IDE/Python中的變量和誤差我該如何調試Spyder/Python代碼?

無效語法

這是我的代碼:

from gurobipy import* 
try: 
m = Model('operating_room') 
#Data 
b= [1,2,3] 
n= [1,2,3,4,5,6,7,8,9,10] 
j= [1,2,3,4,5,6,7,8,9,10,11,12,13] 
t=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] 
W=0.5 
m.update() 
#create variables 
X[j] =m.addVar(vtype=GRB.BINARY, name="X[j]") 
Y[n] =m.addVar(vtype=GRB.BINARY, name="Y[n]") 
x[b,j,t] = m.addVar(vtype=GRB.BINARY,name="x[b,j,t]") 
y[n,b] = m.addVar(vtype=GRB.BINARY,name="y[n,b]") 
m.update() 
#set objective 
m.setObjective(quicksum(X[j] for j in J)+ W*(quicksum(Y[n] for n in 
N)),GRB.MINIMIZE) #eqution 1 

**for b in range(1,b): 
    #create constraints 
    m.addConstr(quicksum(x[b,j,t]=1 for j in J for t in range(rb:(d[b]- 
    p[b]+1))),name="block_allocation") #eqution 2** 

我需要知道有什麼問題

m.addConstr(quicksum(x[b,j,t]=1 for j in J for t in range(rb:(d[b]- 
            ^
    p[b]+1))),name="block_allocation") #eqution 2 

enter image description here

+1

你想讓那條線做什麼? –

+0

我想讓x(患者)插入一個區塊b和一個手術室j和一個時間段t –

回答

2

x[b,j,t]=1是一個語句,而不是一個表達式。生成器表達式不能包含語句。

如果你真的想用一個列表理解,而不是一個普通的for循環(這可能會更清楚),你可以import operator和使用operator.setitem(x, (b,j,t), 1)

+0

非常感謝您的快速回復,但請您能向我解釋如何編輯它,因爲此聲明是約束在我的模型中 –