#军用物资配送成本问题# 第二次数学建模赛(小学期校赛)

前言

此次校赛三道题目,在数学建模-姜启源书上都有涉及到的经典问题。A题“军用物资配送成本问题”是经典的配送问题,与书上例题是一种类型——线性规划,要做此题并拿奖就要求做得完整做得细致;B题“城市充电站优化配置问题”是充电桩模型,规划问题,最后需要sim进行仿真;C题“港口堆场调度”是调度问题,排队问题,最后也需要sim仿真。
由于a题类型我最熟悉,matlab中sim功能没有学过不会使用,本队着手解决a题。

A题题目

军用物资配送成本问题
某军用物资有20个部队用户,我们需要研究如何进行物资配送,才能使相关成本最小。

问题1 目前该物资有3个生产基地、20家部队用户,生产基地设在16号、63号和120号地点。20家部队用户的日物资需求量见附件2。
运输方式有两种:大车可载5吨(少于5吨按5吨计),运输成本为2.25元/车公里;小车可载3吨(少于3吨按3吨计),运输成本为1.5元/车公里。
要求每个生成基地的生成任务尽量均衡,在平均值上下20%范围内。请你为该物资设计生产基地的日生产量与日配送方案。

问题2 假设生产基地可以提前进行生产,在日生产总量不变的情况下,如果该物资在生产基地最多容许存放5日,每天的存储费用为0.01元/公斤。要求生产任务尽量均衡,请你为该物资重新设计生产与配送方案,平均每隔几天向部队用户配送一次,可使运输和存储成本最低。

问题3 如果要增加一个生产基地,候选地址是附件1的其他131个地点,要求生产任务尽量均衡,如何选址和设计生产基地的日生产量与日配送方案,才能满足20家部队用户的需求,使总的运输费用最小。

附件1:154个地点的平面直角坐标及距离数据
附件2:20家部队用户位置编号及物资日消耗量

附件一表格1局部样品:
附件一表格一
附件一表格2局部样品:
在这里插入图片描述
附件二:
在这里插入图片描述

思路

问题1:①既然运输成本与运输距离直接相关,就要想办法将每个军队用户距离最近的生产基地找出来,此时用到最短路问题和贪心思想。每个军队用户到三个生产点的最短路找到后,按照从小到大的顺序排序,距离最近的生产点有最高优先级给该军队用户配送;【线性规划目标函数】
②由于题目中没有车辆种类、数量的限制。大车5吨2.25元/公里,小车3吨1.5元/公里,货物运输成本只与货物重量成正比关系,所以配送时优先调用大车,直到剩余货物小于3吨时增加一辆小车即可。【线性规划约束条件】
③要求每个生产基地任务量不超过且不低于平均值的20%范围内,将所有生产任务总和除3,得到平均值。①中已经得到每个生产点的任务量,按照从大到小排序,从任务量最大的生产点开始检查是否超高或超低负荷生产,直到检查完所有的生产点。
④对于超负荷生产的生产点,将每个部队用户的物资以吨为单位进行【归一化】处理,消除“需求量少但距离远”和“需求量大但距离近”两种不同纲量产生的影响。选择影响最小军队用户,将它的货物需求转而分给距离不是最近并且没被检查过的生产点,注意此时分配单位可以变成“公斤”而不是以“军队用户”为单位被分走,直到该生产点被降低到20%范围内。可以得出,部队用户的物资有可能来源于两家或以上。(是否仍然需要检查超低负荷生产的生产点,有待证明)

问题二:
增加生产基地容许存放5日这一条件,且存储费用为0.01元/公斤。在问题一基础上增加存储天数最大不超过5这一约束条件,要在5日内使得存储天数尽量少或者不存储。五天内如果能达到5的倍数的公斤数则运走,或能达到3*5的倍数的公斤数即运走,或能达到尽量把车装满并且新产生的不必要成本小于存放5日成本即运走,建立以存储和运输成本最低为目标的优化模型。

问题三:
要求选址一个新的生产基地,需综合考虑距离、运输成本、用户需求量、生产基地任务均衡程度等因素,建立多目标优化模型。在供给满足需求和成本最低的条件下,尽量使各生产点任务量趋于平均值,求解最优配送方案设计。
将多目标优化问题转化为单目标优化问题,将每个普通点作为新的生产点执行问题一所得模型,记录该状态下总成本,并取最小值。取到成本最小值的节点可以成为新的生产基地。通过实验分析,我们得出新的最佳选址策略答案不唯一,即新的生产基地地址可能有多个

作图代码

% 导入数据
x_all = xlsread("附件1:154个地点的平面直角坐标及距离数据.xlsx", "地点(横、纵)坐标", "B2:B155");
y_all = xlsread("附件1:154个地点的平面直角坐标及距离数据.xlsx", "地点(横、纵)坐标", "C2:C155");
start_points = xlsread("附件1:154个地点的平面直角坐标及距离数据.xlsx", "地点间道路", "A2:A249"); % 起点编号
end_points = xlsread("附件1:154个地点的平面直角坐标及距离数据.xlsx", "地点间道路", "B2:B249"); % 终点编号
dis_all = xlsread("附件1:154个地点的平面直角坐标及距离数据.xlsx", "地点间道路", "C2:C249");
army_users = [125	106	73	31	141	150	85	79	1	130	36	27	34	42	94	11	24	75	145	22];

% 作图
P1 = plot(x_all, y_all, '.r'); % 普通点
hold on;
P2 = plot(x_all(16), y_all(16), '*r'); plot(x_all(63), y_all(63), '*r'); plot(x_all(120), y_all(120), '*r'); % 生产基地
hold on;
for i = 1:20 % 军队用户
    P3 = plot(x_all(army_users(i)), y_all(army_users(i)), 'or');
end
hold on;
% line([x_all(start_points(1)), x_all(end_points(1))], [y_all(start_points(1)), y_all(end_points(1))])
for i = 1:size(start_points) % 连线
    plot([x_all(start_points(i)), x_all(end_points(i))], [y_all(start_points(i)), y_all(end_points(i))], '-b')
end
hold on;

% 添加图例注记
title("154个地点的平面直角坐标图");
xlabel("横坐标x轴");
ylabel("纵坐标y轴");
legend([P1, P2, P3], "普通据点", "生产基地", "军队用户");
grid on;

导入数据:整块数据可以直接调用函数导入,如第2行——第6行;相对零散的且数据量较少的数据可以直接复制进数组,如导入较麻烦且极容易出错,如第七行导入附件二中的数据。
作图:如一个图有多种元素,每画完一种元素就hold on保存一次,且不必hold off。
循环:如循环次数已经确定,直接将确定的数字放进循环中;如次数较大,则在循环中调用函数计算循环次数。如第14行和第19行。
连线:可以调用plot或line函数,这里为了指定连线的颜色选用plot函数,参数列表为plot(起点横坐标,终点横坐标,起点纵坐标,终点纵坐标,“颜色 形状”);
添加图例:legend函数,如果不想给所有标记写图例注释,只是想选则其中几种进行进行标记解释,可以将画图函数的返回值(可能是字符串)传给一个变量,如第10行第12行第15行中P1 P2 P3,里面包含颜色形状等参数,在legend里面填入变量,填入注释的文字,如第28行。

  • 11
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值