2022 MathorCup 数学建模B题思路解析
文章目录
- Mathorcup B题题目介绍
- 一、问题一
- 1、地图模型
- 2、路径规划
- 3、任务分配调度模型
- 二、问题二
- 三、问题三
- 1、分析
- (1)点冲突
- (2)边冲突
- 2、冲突处理及模型评价
Mathorcup B题题目介绍
B题无人仓的搬运机器人调度问题本题考虑在无人仓内的仓库管理问题之一,搬运机器人 AGV 的调度问 题。更多的背景介绍请参看附件-背景介绍。对于无人仓来说,仓库的地图 模型可以简化为图的数据结构。
一、问题一
1、地图模型
题目中已经给出了地图的栅格模型,然后在题目给的附件里也有地图数据(map.csv),所以可以用Matlab建立一个栅格地图模型,之后再在这个模型基础上面进行路径规划,进行仿真模拟。
2、路径规划
现在有较多的路径规划算法,但在AGV和仓储搬运路径问题上常用的有A*算法、Dijkstra算法,在本题中可以选择A*算法、Dijkstra算法来计算AGV路径规划模型,但在本题中,从结果看来,A*算法是优于Dijkstra算法的,所以可以直接选用A*算法。
A*算法的核心部分(Matlab)
%% 预处理
% 初始化closeList
closeList = start_node;
closeList_path = {start_node,start_node};
closeList_cost = 0;
child_nodes = child_nodes_cal(start_node, m, n, obs, closeList); %子节点搜索函数 % 初始化openList
openList = child_nodes;
for i = 1:size(openList,1)openList_path{i,1} = openList(i,:);openList_path{i,2} = [start_node;openList(i,:)];%从初始点到第i个子节点
endfor i = 1:size(openList, 1)g = norm(start_node - openList(i,1:2));%norm求范数,返回最大奇异值;abs求绝对值h = abs(target_node(1) - openList(i,1)) + abs(target_node(2) - openList(i,2));%终点横坐标距离加纵坐标距离f = g + h;openList_cost(i,:) = [g, h, f];
end%% 开始搜索
% 从openList开始搜索移动代价最小的节点
[~, min_idx] = min(openList_cost(:,3));%输出openlist_cost表中最小值的位置
parent_node = openList(min_idx,:);%父节点为代价最小节点%% 进入循环
flag = 1;
while flag % 找出父节点的忽略closeList的子节点child_nodes = child_nodes_cal(parent_node, m, n, obs, closeList); % 判断这些子节点是否在openList中,若在,则比较更新;没在则追加到openList中for i = 1:size(child_nodes,1)child_node = child_nodes(i,:);[in_flag,openList_idx] = ismember(child_node, openList, 'rows');%ismember函数表示子节点在open表中则返回1,判断flag,输出此子节点在openlist表中的位置g = openList_cost(min_idx, 1) + norm(parent_node - child_node);%按照新父节点计算此子节点的g,h值h = abs(child_node(1) - target_node(1)) + abs(child_node(2) - target_node(2));f = g+h;if in_flag % 若在,比较更新g和f if g < openList_cost(openList_idx,1)openList_cost(openList_idx, 1) = g;%将openlist_cost表中第id个位置的第一个数更新为以新父节点计算的g值openList_cost(openList_idx, 3) = f;openList_path{openList_idx,2} = [openList_path{min_idx,2}; child_node];endelse % 若不在,追加到openListopenList(end+1,:) = child_node;openList_cost(end+1, :) = [g, h, f];openList_path{end+1, 1} = child_node;openList_path{end, 2} = [openList_path{min_idx,2}; child_node];endend% 从openList移除移动代价最小的节点到 closeListcloseList(end+1,: ) = openList(min_idx,:);closeList_cost(end+1,1) = openList_cost(min_idx,3);closeList_path(end+1,:) = openList_path(min_idx,:);openList(min_idx,:) = [];%openlist表中已跳出的最小值位置设为空openList_cost(min_idx,:) = [];openList_path(min_idx,:) = [];% 重新搜索:从openList搜索移动代价最小的节点(重复步骤)[~, min_idx] = min(openList_cost(:,3));parent_node = openList(min_idx,:);% 判断是否搜索到终点if parent_node == target_nodecloseList(end+1,: ) = openList(min_idx,:);closeList_cost(end+1,1) = openList_cost(min_idx,1);closeList_path(end+1,:) = openList_path(min_idx,:);flag = 0;end
end
3、任务分配调度模型
通过遍历两个附件(订单、AGV)去选择挑选小车,利用上述的算法去计算路径的长度,之后挑选出路径最短的小车与任务,给AGV进行任务分配。
注意:一个订单可能对应的托盘不止一个,在订单数量需求较大时,可能需要两个托盘甚至更多
二、问题二
在这题中,可以加入遗传蚁群算法去优化拣货分区模型,之后建立多目标规划,可以引入几个指标,例如:转弯次数、路径长度、拣货台拣货数量平均度、拥挤度、拣货效率几个方面进行规划,下面是做出的分区结果:
可以考虑建立多种分区结果,然后进行对比选取最优
三、问题三
1、分析
冲突问题可以选用时间窗或者冲突搜索,去调整之前模型路径,把冲突情况分成边冲突和点冲突这两种情况:
(1)点冲突
节点冲突
相向冲突
(2)边冲突
在下一时刻交换位置
2、冲突处理及模型评价
选用了冲突搜索,计算结果更加优秀,可以用元组去存储冲突数据,建立一个冲突约束树,之后在不断建立下一层,直到没有冲突,此时这条最终路径,作为AGV的执行任务路径。之后可以利用各类指标去对比在一二问中的模型,例如:冲突处理代价(AGV为处理冲突之后多走的路)、转弯次数(可以与一二问中的结果数据进行对比)。
部分数据结果:时间窗和冲突搜索两个模型转弯次数对比
或者如果能做到的话,做出路径热力图去分析不同栅格节点所被走过的次数,对比两者可以分析拥挤度,并且分析死锁次数及类型,在本题中最好不要出现死锁情况,题中已经提出避免死锁,所以模型中应尽量减少死锁情况甚至不出现。
2022 MathorCup 数学建模B题思路解析相关推荐
- 2022数学建模c题思路解析
今天有些同学问我一些具体的方法和代码,我都没有具体回复了.我和那些敛财的博主不一样,提供具体方法和代码,但是大家觉得能靠他们的方法和代码获奖吗? 其实我认为数学建模最重要的就是解题的方式是否创新,是能 ...
- 2023年MathorCup数学建模B题思路 - 城市轨道交通列车时刻表优化问题
# 1 赛题 B题 城市轨道交通列车时刻表优化问题 列车时刻表优化问题是轨道交通领域行车组织方式的经典问题之一.列车时刻表规定了列车在每个车站的到达和出发(或通过)时刻,其在实际运用过程中,通常用列车 ...
- 98年建模a题论文_2020年 MathorCup数学建模 A题 无车承运人平台线路定价问题,定价评价...
想要看更加舒服的排版.更加准时的推送 关注公众号"不太灵光的程序员" 每日八点有干货推送,微信随时解答你的疑问 公众号"不太灵光的程序员" 同时发布<20 ...
- 2023电工杯数学建模A题思路模型代码
占个位置吧,开始在本帖实时更新电工杯数学建模赛题思路代码,文章末尾获取! A题思路分析 问题一:1典型住户电采暖负荷用电行为分析 (1)在满足温控区间约束条件下,分析典型房间温变过程微分方程稳态解的性 ...
- 2020全国大学生数学建模A题思路讲解与核心代码
2020全国大学生数学建模A题思路讲解与核心代码 题目 核心方法: 问题一 问题二 问题三和问题四 答案如下: 题目 核心方法: 热传导 有限差分法 遍历法 问题一 建立焊接区域中心温度变化规律模型, ...
- 华为杯2022研究生数学建模赛题+解压码
免费提供华为杯2022研究生数学建模赛题+解压码 网盘提取方式如下 链接:https://pan.baidu.com/s/1ySjp-JG1fvd_TvwGQcDNCg 提取码:y74r –来自百度网 ...
- 2022年MathorCup数学建模B题无人仓的搬运机器人调度问题解题全过程文档加程序
2022年第十二届MathorCup高校数学建模 B题 无人仓的搬运机器人调度问题 原题再现 本题考虑在无人仓内的仓库管理问题之一,搬运机器人 AGV 的调度问题.更多的背景介绍请参看附件-背景介 ...
- 2022年MathorCup数学建模C题自动泊车问题解题全过程文档加程序
2022年第十二届MathorCup高校数学建模 C题 自动泊车问题 原题再现 自动泊车是自动驾驶技术中落地最多的场景之一,自动泊车指在停车场内实现汽车的自动泊车入位过程,在停车空间有限的大城市, ...
- 2022年MathorCup数学建模A题大规模指纹图像检索的模型与实现解题全过程文档加程序
2022年第十二届MathorCup高校数学建模 A题 大规模指纹图像检索的模型与实现 原题再现 在生物特征识别领域,指纹作为最具独特性与持久性的生物特征之一,被广泛应用于身份识别. 指纹识别 ...
- 2020年高教社杯全国大学生数学建模C题思路讲解
2020年高教社杯全国大学生数学建模C题 2020年国赛C题国二,三个菜鸟属实沾了很多运气成分,有哪里讲的不好的地方,还请各位大佬勿喷(呜呜呜). C题 中小微企业的信贷决策 在实际中,由于中小微企业 ...
最新文章
- 团队项目技术规格说明书---客户端
- 对学校的希望和寄语_家长对学校的寄语怎么写
- Qt Creator在3D编辑器中工作
- CSTrackV2解读
- OpenCV3 Java 机器学习使用方法汇总
- Fiori Fundamentals和SAP UI5 Web Components
- matplotlib画图设置线条透明度
- cron计划任务的介绍
- c语言位运算符怎么用,傻傻分不清
- DateTime相关知识
- codeblocks中文编码问题
- python opencv 利用分水岭算法实现对物体的分割 图文详细注释版 以分割官网提供的硬币为例
- 基于SSM的企业员工管理系统
- linux编译时间,CentOS下快速编译安装NTP时间同步服务器
- linux下shell脚本编程2
- 多无人机协同三维路径规划的蛇优化算法Snake Optimizer(提供MATLAB代码)
- linux USB从设备使用gadget实现大容量存储设备
- miui11开发版升级Android10,小米9透明版MIUI11开发版系统刷机包(最新固件系统升级包MIUI11.9.12.31开发版安卓10)...
- 个人总结:Mysql知识图谱
- java for无限循环
热门文章
- 3dsmax软件和maya软件各自的优劣势是什么?
- KiCad: 一个电子原理图设计和布局创建套件
- 最强抓包神器 Fiddler 手机抓包详解
- 华为usb 无线网卡 linux,Linux下使用华为h3c Aolynk WuB320G无线网卡
- android+gps+定位+缓存,Android GPS和Network定位
- Eclipse 2021-6安装教程及其安装包
- 小学生机器人挑战赛_厉害了我的小学生!德阳中小学生机器人大赛
- 使用 JavaScript 下载文件
- Java设计模式-工厂模式
- Calendar类方法——编写万年历的两种方式