用PuLP求解混合0-1整数规划问题

通过PuLP构造并求解混合0-1整数规划问题

文章目录

  • 前言
  • 一、混合0-1整数规划问题举例
  • 二、Pulp构造与求解
    • 1.例题实现
    • 2.结果呈现
  • 总结


前言

混合0-1整数规划不同于普通的线性规划问题,它要求存在决策变量均为整数,且只能取值0或1;同时存在有些决策变量为整数,不限制取值为0或1;有些决策变量不限定为整数。

一、混合0-1整数规划问题举例

下图是一个混合0-1整数规划问题,我们通过python的Pulp库来实现该问题的求解。

用PuLP求解混合0-1整数规划问题_第1张图片

二、Pulp构造与求解

1.例题实现

from pulp import *

my_MipProblem = LpProblem("2/2 problem", LpMinimize)

solution = []

x1 = LpVariable("X1", lowBound=0, cat=LpInteger)
x2 = LpVariable("X2", cat=LpBinary)
x3 = LpVariable("X3", lowBound=0)

my_MipProblem += 2*x1 + 1*x2 + 2*x3

my_MipProblem += 1*x1 + 2*x2 + 4*x3 >= 8
my_MipProblem += 1*x1 + 1*x2 + 1*x3 == 6

my_MipProblem.solve()

2.结果呈现

print("Status:", LpStatus[my_MipProblem.status])

for v in my_MipProblem.variables():
    print(v.name, "=", v.varValue)

    solution.append(v.varValue)

print("objective=", value(my_MipProblem.objective))

结果依次呈现为求解状态、决策变量的值和目标值。

总结

通过Pulp构造和求解线性规划问题步骤类似,在解决混合0-1整数规划问题时,应该注意决策变量代码的书写,这是它和Pulp解决简单线性规划问题的主要区别。

你可能感兴趣的:(python,动态规划,算法)