【问题标题】:Pulp obtains results as problem is infeasible, while problem is not feasiblePulp 获得结果,因为问题不可行,而问题不可行
【发布时间】:2020-09-05 01:28:57
【问题描述】:

我正在尝试用纸浆解决分配问题。代码的基本部分如下:


set_I = range(1, numberOfPoints)
set_J = range(1, numberOfCentroids)

tau = 0.15
Q = 15

# decision variable
x_vars = LpVariable.dicts(name="x_vars", indexs=(set_I, set_J), lowBound=0, upBound=1, cat=LpInteger)

# model name
prob = LpProblem("MIP_Model", LpMinimize)

# constraints
for i in set_I:
   prob += lpSum(x_vars[i][j] for j in set_J) == 1, ""

for j in set_J:
   prob += lpSum(x_vars[i][j] for i in set_I) >= 1, ""

for j in set_J:
   prob += lpSum(x_vars[i][j] for i in set_I) <= Q*(1-tau), ""

for j in set_J:
   prob += lpSum(x_vars[i][j] for i in set_I) >= Q*(1+tau), ""

# objective
prob += lpSum(d[i, j]*x_vars[i][j] for i in set_I for j in set_J)

prob.solve()

结果是这样的:

问题模型有 31 行 76 列和 304 个元素

Coin0008I 模型读取错误 0 次

问题不可行 - 0.01 秒

PrintingOptions 的选项由 normal 改为 all

但是,该问题并非不可行,并且可以通过其他求解器获得结果。

不知道是不是语法错误,是不是这个引起的问题?

我在下一个链接中问了一个类似的问题:

Infeasible solution by pulp

【问题讨论】:

    标签: python pulp


    【解决方案1】:

    当我在本地运行问题时,d 是一个由 1、20 个点和 3 个质心组成的矩阵。这对我来说也变得不可行。查看约束:

    _C22: x_vars_10_1 + x_vars_11_1 + x_vars_12_1 + x_vars_13_1 + x_vars_14_1
     + x_vars_15_1 + x_vars_16_1 + x_vars_17_1 + x_vars_18_1 + x_vars_19_1
     + x_vars_1_1 + x_vars_2_1 + x_vars_3_1 + x_vars_4_1 + x_vars_5_1 + x_vars_6_1
     + x_vars_7_1 + x_vars_8_1 + x_vars_9_1 <= 12.75
    
    _C23: x_vars_10_2 + x_vars_11_2 + x_vars_12_2 + x_vars_13_2 + x_vars_14_2
     + x_vars_15_2 + x_vars_16_2 + x_vars_17_2 + x_vars_18_2 + x_vars_19_2
     + x_vars_1_2 + x_vars_2_2 + x_vars_3_2 + x_vars_4_2 + x_vars_5_2 + x_vars_6_2
     + x_vars_7_2 + x_vars_8_2 + x_vars_9_2 <= 12.75
    
    _C24: x_vars_10_1 + x_vars_11_1 + x_vars_12_1 + x_vars_13_1 + x_vars_14_1
     + x_vars_15_1 + x_vars_16_1 + x_vars_17_1 + x_vars_18_1 + x_vars_19_1
     + x_vars_1_1 + x_vars_2_1 + x_vars_3_1 + x_vars_4_1 + x_vars_5_1 + x_vars_6_1
     + x_vars_7_1 + x_vars_8_1 + x_vars_9_1 >= 17.25
    
    _C25: x_vars_10_2 + x_vars_11_2 + x_vars_12_2 + x_vars_13_2 + x_vars_14_2
     + x_vars_15_2 + x_vars_16_2 + x_vars_17_2 + x_vars_18_2 + x_vars_19_2
     + x_vars_1_2 + x_vars_2_2 + x_vars_3_2 + x_vars_4_2 + x_vars_5_2 + x_vars_6_2
     + x_vars_7_2 + x_vars_8_2 + x_vars_9_2 >= 17.25
    

    你需要

    x_vars_10_2 + x_vars_11_2 + x_vars_12_2 + x_vars_13_2 + x_vars_14_2
     + x_vars_15_2 + x_vars_16_2 + x_vars_17_2 + x_vars_18_2 + x_vars_19_2
     + x_vars_1_2 + x_vars_2_2 + x_vars_3_2 + x_vars_4_2 + x_vars_5_2 + x_vars_6_2
     + x_vars_7_2 + x_vars_8_2 + x_vars_9_2
    

    同时大于17.25小于12.75。当然,这是不可能的。

    【讨论】:

      猜你喜欢
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多