Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python不会添加所有变量约束并忘记目标函数_Python_Pulp - Fatal编程技术网

Python不会添加所有变量约束并忘记目标函数

Python不会添加所有变量约束并忘记目标函数,python,pulp,Python,Pulp,我在使用模块时遇到了一些问题。我想创建一个混合整数线性规划问题,并将其作为LP文件编写。在这之后,我用cplex解决它 问题是,当我添加第二个约束时,目标函数将变为false(添加虚拟),并且仅使用决策变量x添加第一个约束 这是我的密码:希望你能帮我 bay_model = pulp.LpProblem('Bay Problem', pulp.LpMinimize) y = pulp.LpVariable.dicts(name = "y",indexs = (flight, flight, g

我在使用模块时遇到了一些问题。我想创建一个混合整数线性规划问题,并将其作为LP文件编写。在这之后,我用cplex解决它

问题是,当我添加第二个约束时,目标函数将变为false(添加虚拟),并且仅使用决策变量x添加第一个约束

这是我的密码:希望你能帮我

bay_model = pulp.LpProblem('Bay Problem', pulp.LpMinimize)

y = pulp.LpVariable.dicts(name = "y",indexs = (flight, flight, gates),
                          lowBound = 0, upBound = 1,cat = pulp.LpInteger)

x = pulp.LpVariable.dicts(name = "x",indexs = (flight,gates),lowBound = 0,                             
                          upBound = 1, cat=pulp.LpInteger)




bay_model += pulp.lpSum([x[i][j]*g.distance[j] for i in flight for j in gates])

for i in flight:
     bay_model += pulp.lpSum([x[i][j] for j in gates]) == 1
     print "flight must be assigned" + str(i)

for k in gates:
     bay_model += [y[i][j][k] * f.time_matrix[i][j] for i in flight for j in flight if f.time_matrix[i][j] == 1] <= g.capacity[k]
     bay_model += [(2 * y[i][j][k] - x[i][k] - x[j][k]) for i in flight for j in flight] == 0
     print "time constraint" + str(k)
bay\u model=纸浆.LpProblem('bay Problem',纸浆.LpProblem)
y=纸浆.LpVariable.dicts(name=“y”,索引=(航班,航班,登机口),
下限=0,上限=1,上限=纸浆.LpInteger)
x=pilp.LpVariable.dicts(name=“x”,indexs=(航班,登机门),下限=0,
上行=1,cat=纸浆。LpInteger)
bay_模型+=纸浆.lpSum([x[i][j]*g.距离[j],对于i在飞行中,对于j在闸门中])
对于飞行中的我:
bay_model+=palp.lpSum([x[i][j]表示门中的j])==1
打印“必须分配航班”+str(一)
对于k in门:

bay_模型+=[y[i][j][k]*f.time_矩阵[i][j]对于飞行中的i对于飞行中的j如果f.time_矩阵[i][j]==1]我认为不能像这样将列表理解[x[i]对于飞行中的i添加到bay_模型中。 如果希望约束保留列表中的每个元素,可以事先定义元素:

for i in flights:
  for j in flights:
    if f.time_matrix[i][j] == 1:
      for k in gates:
        bay_model += y[i][j][k] * f.time_matrix[i][j] <= g.capacity[k]
对于航班中的i:
对于航班中的j:
如果f.time_矩阵[i][j]==1:
对于k in门:

bay_模型+=y[i][j][k]*f.time_矩阵[i][j]我认为不能像这样将列表理解[x[i]添加到bay_模型中。 如果希望约束保留列表中的每个元素,可以事先定义元素:

for i in flights:
  for j in flights:
    if f.time_matrix[i][j] == 1:
      for k in gates:
        bay_model += y[i][j][k] * f.time_matrix[i][j] <= g.capacity[k]
对于航班中的i:
对于航班中的j:
如果f.time_矩阵[i][j]==1:
对于k in门:

bay_model+=y[i][j][k]*f.time_matrix[i][j]你能给我一个关于航班和登机门外观或样本值的示例吗?航班和登机门只是创建航班和登机门索引的范围。例如,当有100个航班时,航班=0,1,2。。。99或xrange(100)适用于闸门。我强烈感觉到问题在于lp文件的编写。当我把它写给MPS时,它工作得非常好。你能给我一个航班和登机口的样子或样本值吗?航班和登机口只是用来创建航班和登机口索引的范围。例如,当有100个航班时,航班=0,1,2。。。99或xrange(100)适用于闸门。我强烈感觉到问题在于lp文件的编写。当我把它写给MPS时,它工作得非常好。你能给我一个航班和登机口的样子或样本值吗?航班和登机口只是用来创建航班和登机口索引的范围。例如,当有100个航班时,航班=0,1,2。。。99或xrange(100)适用于闸门。我强烈感觉到问题在于lp文件的编写。当我把它写给议员时,它工作得非常好。