两辆铁路平板车的装货问题(用Python求解)

目录

        题目

        问题分析

        变量说明

        模型建立

        用python代码实现模型求解


题目

问题分析

        这是一个典型的整数规划问题,一共两辆铁路平板车,每辆铁路平板车需要装载不同种类的不同数量的包装箱,不同类别的包装有不同的厚度和重量,在一定的约束条件下,求出装载完包装箱后最小的浪费空间。需要引入整数决策变量来表示每辆车的承载情况。

变量说明

符号说明单位
两辆铁路平板车剩余空间的总和m
代表Ci类包装箱
第一辆铁路平板车装载xi件包装箱Ci
第二辆铁路平板车装载yi件包装箱Ci
包装箱Ci的厚度m
包装箱Ci的重量t
包装箱Ci的总数量

模型建立

该问题的整数规划模型为

 用python代码实现模型求解

import cvxpy as cp
from numpy import array
import warnings
warnings.filterwarnings("ignore")
c = array(
 [-0.487, -0.52, -0.613, -0.72, -0.487, -0.52, -0.64, 
  -0.487, -0.52, -0.613, -0.72, -0.487, -0.52, -0.64]) # 定义目标向量
a = array([[0.487, 0.52, 0.613, 0.72, 0.487, 0.52, 0.64, 0, 0, 0, 0, 0, 0, 0],
           [0, 0, 0, 0, 0, 0, 0, 0.487, 0.52, 0.613, 0.72, 0.487, 0.52, 0.64],
           [0, 0, 0, 0, 0.487, 0.52, 0.64, 0, 0, 0, 0, 0.487, 0.52, 0.64],
           [2, 3, 1, 0.5, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0],
           [0, 0, 0, 0, 0, 0, 0, 2, 3, 1, 0.5, 4, 2, 1],
           [1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
           [0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
           [0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
           [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
           [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0],
           [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0],
           [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1]]) # 定义约束矩阵
b = array([10.2, 10.2, 3.027, 40, 40, 8, 7, 9, 6, 6, 4, 8]) # 定义约束条件的右边向量
x = cp.Variable(14, integer=True) # 定义两个整数决策变量
obj = cp.Minimize(c * x) # 构造目标函数
cons = [a * x <= b, x >= 0] # 构造约束条件
prob = cp.Problem(obj, cons) # 构建问题模型
prob.solve(solver='GLPK_MI', verbose=True) # 求解问题
print("最优值为:", prob.value + 20.4)
print("最优解为:\n", x.value)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值