【问题标题】:Logical OR constraint in PulPPulP 中的逻辑或约束
【发布时间】:2022-11-05 00:06:20
【问题描述】:

我是纸浆新手。下面是优化问题。

假设 x11、x12、x13 是 FG1 的单位,分别装载在中型卡车 1、小型卡车和中型卡车 2 上。类似地,将 x21,x22,x23 视为变量,分别表示要装载在中型卡车 1、小型卡车和中型卡车 2 上的 FG2 单元。

此处的目标是将两种产品的总数量 = 2011(FG1 = 900,FG2 = 1111)分配到 2 辆中型卡车和 1 辆小型卡车中。提到的面积、体积和重量有一些限制。

还有一个额外的限制,如果 FG1 必须装载在任何卡车上,如果不是 0,最小数量应该是 60。意味着负载大于或等于 60 或 0。我无法弄清楚如何建模这样约束。请建议。

代码在评论中提到。

【问题讨论】:

    标签: python mathematical-optimization pulp


    【解决方案1】:
    !pip install PulP
    from pulp import LpMinimize, LpProblem, LpStatus, lpSum, LpVariable
    
    !apt-get install -y -qq glpk-utils
    import pulp as pl
    solver = pl.GLPK_CMD()
    
    model = LpProblem(name="load_receipts", sense=LpMinimize)
    
    x11 = LpVariable(name="x11", lowBound=0, cat='Continuous')
    x12 = LpVariable(name="x12", lowBound=0, cat='Continuous')
    x13 = LpVariable(name="x13", lowBound=0, cat='Continuous')
    x21 = LpVariable(name="x21", lowBound=0, cat='Continuous')
    x22 = LpVariable(name="x22", lowBound=0, cat='Continuous')
    x23 = LpVariable(name="x23", lowBound=0, cat='Continuous')
    
    model += (0.5*x11 + 0.333333*x21 <=  400)
    model += (0.5*x12 + 0.333333*x22 <=  200)
    model += (0.5*x13 + 0.333333*x23 <=  400)
    model += (0.25*x11 + 0.142857*x21 <=  200)
    model += (0.25*x12 + 0.142857*x22 <=  100)
    model += (0.25*x13 + 0.142857*x23 <=  200)
    model += (0.001*x11 + 0.000125*x21 <=  50)
    model += (0.001*x12 + 0.000125*x22 <=  25)
    model += (0.001*x13 + 0.000125*x23 <=  50)
    model += (x11 + x12 + x13 + x21 + x22 + x23 - 2011 == 0)
    model += (x11 + x12 + x13 == 900)
    model += (x21 + x22 + x23 == 1111)
    
    model += x11 + x12 + x13 + x21 + x22 + x23-2011
    
    status = model.solve(solver)
    
    print(f"status: {model.status}, {LpStatus[model.status]}")
    for var in model.variables():
        print(f"{var.name}: {var.value()}")
    

    【讨论】:

      猜你喜欢
      • 2021-12-08
      • 2016-01-26
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多