2017-04-23 205 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

非常感谢您的快速回复,但请您能向我解释如何编辑它,因为此声明是约束在我的模型中 –