顺德网站建设合理使用颜色搭配_方能达到最佳视觉效果,wordpress 后台 空白,跨境电商平台培训哪家最正规,无锡手机网站开发2022年第十二届MathorCup高校数学建模
B题 无人仓的搬运机器人调度问题
原题再现 本题考虑在无人仓内的仓库管理问题之一#xff0c;搬运机器人 AGV 的调度问题。更多的背景介绍请参看附件-背景介绍。对于无人仓来说#xff0c;仓库的地图模型可以简化为图的数据结构。 仓库…2022年第十二届MathorCup高校数学建模
B题 无人仓的搬运机器人调度问题
原题再现 本题考虑在无人仓内的仓库管理问题之一搬运机器人 AGV 的调度问题。更多的背景介绍请参看附件-背景介绍。对于无人仓来说仓库的地图模型可以简化为图的数据结构。 仓库地图 无人仓内的设施可以细分为 AGV 能行驶的道路节点和别的功能节点如工位储位等。这样仓库地图模型可以抽象为这些节点构成的图再按 AGV 能到达的节点来添加图的边。简单来说附件仓库地图数据map.csv通过描述节点类型以及节点之间的关系边可以构建如下图 1 所示的仓库地图。 仓库地图数据map.csv是按 csv 格式存储其节点类型有如下几类在上图中用不同颜色标注。 1) 路径节点灰色AGV 可以自由通行。 2) 储位节点绿色放置托盘或者普通货架AGV 可以到达。一般只有一个位置可以进出即靠近道路的位置。 3) 保留节点黄色保留位置。 4) 柱子节点黑色障碍物AGV 不能到达。 5) 拣选工位节点蓝色拣选机器人在这里把商品打包后从传送带出库一般有多个托盘停靠位。 6) 补货位节点粉色从高密度区补货的商品放置点一般通过传送带输送。 7) 空托盘回收节点红色空托盘回收处图中只有两处。 无人仓任务场景 假设仓库地图按上述方式抽象成图搬运机器人 AGV—次只搬运一个托盘带有多种商品能执行从一个地图节点na移动到nb的路径指令其中每一步只能移动到有边相连的地图节点不能斜着移动。附件中机器人数据agv.csv里给出了 20 个搬运机器人 AGV 在仓库地图上的初始位置坐标。 假设仓库内商品都是中大件商品每个在储位的托盘上叠放着多种商品附件中的库存数据pallets.csv给岀了全部托盘的位置以及托盘上放的商品信息。对于中件仓来说即使用户订单包含了多个商品实际发货还是一个商品一个包裹。这样AGV 执行任务只需要尽快满足商品数目的要求不需要等待同一订单中的全部商品到齐后才能出库。所以附件订单数据orders.csv里每个订单只有同一件商品以及对应的数量。 无人仓流程是根据给定的一段时间内订单数据流结合当前库存情况统筹安排搬运机器人从储位搬运有需求商品的托盘到附近的拣选工位即出库任务,拣选完成后需安排搬运工位处的非空托盘到空储位即回库任务或者安排搬运工位处的空托盘到托盘回收处即回收任务等。本题只考虑这三种主要任务场景即出库、回库、回收任务。 首先对于出库任务搬运机器人 AGV 把一个托盘搬运到拣选工位。但是对于同一个工位来说同时能容纳放置的托盘数目是有限的。假设每个拣选工位有 b 个停靠位也就是能同时最多分派 b 个出库任务到同一个拣选工位直到执行回库或者回收任务有空停靠位后才能容纳新的出库托盘。 其次出库任务完成后搬运机器人处于空闲状态可以被安排执行下一个任务而不需要在停靠位等候着。不妨假设出库托盘在拣选工位需要停留一段时间后等拣选机器人打包发货后才能进行后续的回库或者回收任务。这里假设停留时间固定为t0,也就是说无论需要拣选多少商品都简化为停留时间t0后该托盘可以被执行后续的回库和回收任务。 无人仓总结 无人仓的主要运行场景就是安排搬运机器人 AGV 执行如下各种任务。 •出库AGV 搬运载有商品的托盘到空闲拣选工位 •回库AGV 搬运拣选完成的托盘从工位回到仓库内空储位 •回收AGV 搬运拣选完成的空托盘从工位到托盘回收处 无人仓的核心是统筹优化上述任务的执行来最大化出库效率安排AGV 任务和路线需满足全局最优达到实时响应并避免拥堵/死锁等情况发生。也需要均衡拣选工位之间的工作量。 问题 1AGV 统筹调度的最佳策略 假设先不考虑搬运机器人在执行任务时可能的碰撞问题请在无人仓模型下设计调度算法根据附件中订单数据orders.csv和仓库内的库存数据pallets.csv对于给定的 20 个搬运机器人agv.csv统筹调度和安排 AGV 任务直到满足所有的订单需求即全部拣选工位都空闲为止。这里目标函数为在每个搬运机器人尽可能忙的同时最小化全部搬运机器人的行走总路径。 下面左图中用红色圆圈表示 AGV,用绿色方块表示货架或者托盘用蓝色 X 表示拣选工位。右图中匹配了最近的 AGV、托盘和工位使得指定AGV 去取托盘后再送到工位拣选。 注意现实场景中的目标其实是全局优化出库效率节省人力避免高峰期出现爆仓”现象。所以更合适的衡量指标是时间上的要求在最短的时间内满足订单需求。在某种程度上目标可以转化为使得每个拣选工位尽可能忙即最小化最忙拣选工位的工作时长。另一方面仓库内搬运机器人 AGV 的合理投放数量一般是拣选工位的常数倍因为投放太多的话出库效率不但不会改善反而增加 AGV 拥堵的可能性。进一步考虑到每个工位可以增加停靠位而且搬运机器人除了出库任务还有回库和回收等任务。所以使得每个 AGV 尽可能忙然后最小化全部 AGV 行走总路径也是合理的模型目标简化。
问题 2任务均衡区域划分 为了更好地平衡拣选工位的负载同时预防搬运机器人的局部拥堵根据拣选工位和库存商品数量对仓库地图进行动态分区。也就是对仓库内储位上的每个托盘都指定一个默认拣选工位。 请建立优化模型使得每个拣选工位对应托盘的商品总量尽可能地平均同时要求最小化全部托盘到其默认拣选工位距离总和。类似下图 3 所示的区域划分。 进一步根据某段时间内所需出库商品的库存分布再结合问题一的AGV 调度算法更合理地均衡每个拣选工位在某段时间内的工作量。 问题 3避免碰撞和拥堵 在问题一和问题二的基础上进一步考虑搬运机器人的碰撞和拥堵问题。当仓库内同时有多个 AGV 在执行任务时不可避免有些 AGV 在某个路径节点上相遇。特别地如果两个 AGV 在一条货架窄巷道上相遇那么需要其中一个 AGV 避让。 在合理的假设下请设计算法和防碰撞策略使得搬运机器人能智能地避免碰撞。特别是在一些特殊节点处如托盘回收处避免出现多个AGV 的拥堵和可能的死锁场景。 下图是一个死锁场景示例一个 AGV 去拣选工位取空托盘另一台AGV 去相邻停靠位放置托盘,他们占据了各自的前进路径节点后都不退让造成了死锁。 整体求解过程概述(摘要) 针对无人仓的多搬运机器人的路径规划问题本文综合运用了多目标规划、遗传算法和交通管制法等方法充分发挥了线性加权和 banach 空间中的向量范数等思想的优势根据题意构建具体的线性规划模型并借助 python 软件编程求解。 首先我们对给出的数据进行数据预处理1根据 map.csv 中的仓库地图数据基于每一个节点的坐标画出无向图基于节点关系构建出邻接矩阵2根据邻接矩阵运用 Floyd 算法求解每个点到其他点的最短距离得到距离矩阵和路由矩阵3通过Python 软件以栅格的形式进行可视化呈现。通过可视化的栅格仓库图删除不符合实际的数据因此在该无人仓中实际可用的小车数量为 19 辆。 针对问题一本题要求满足以下约束1满足所有的订单需求即实现全部拣选工位都空闲2保证在搬运过程中每个机器人尽可能忙3每个拣选工位同时容纳的托盘数不超过 3 个停靠位最终实现最小化全部搬运机器人的行走路径的目标函数。因此根据题意我们构建单目标规划模型基于托盘搬运顺序进行编码并采用改进的遗传算法和模拟退火两种方法进行对比求解。通过改进的遗传算法求解后可以得到所有 AGV 的路径总长度为 7316通过模拟退火算法求解后可以得到所有 AGV 的路径总长度为 7428。通过两种方式的比较可以得到改进遗传算法使得 AGV 以更短的路径搬运完所需要的商品。 针对问题二本题需要满足以下约束1每个拣选工位对应托盘的商品总量尽可能地平均2最小化全部托盘到其默认拣选工位距离总和3对仓库内储位上的每个托盘都指定一个由第一阶段的目标规划唯一确定的默认拣选工位最终实现全部搬运机器人的行为总路径最小的目标函数。本题在问题一的基础上需要对仓库进行合理分区。因此本题建立了两阶段的目标规划模型其中约束条件 1和 2属于第一阶段动态分区规划模型目的是为了实现仓库的合理分区约束条件 3则是在第一阶段的基础上新增加的约束条件属于第二阶段的路径规划模型。本题设计一种具有新型编码方式的遗传算法来实现储位的分区通过求解后可以得到在分区情况下所有 AGV 的移动总路径长度为 7453。 针对问题三本题在满足问题一和问题二的基础上需要进一步考虑搬运机器人的碰撞和拥堵问题。首先本文确定了路径冲突的三种类型垂直冲突、相向冲突和追尾冲突以及通过向量内积进行路径冲突类型的判断。其次我们建立了交通管制法和优先级规划法模型并在 AGV 为 12-19 辆的不同情况下均进行 100 次随机实验最终得到最优的 AGV 数量规划防止多 AGV 在仓库内的碰撞和拥堵问题。通过模型的求解可以得到在交通管制法下所有 AGV 的总路径最短且当 AGV 数量减少为 15 时减少碰撞和拥堵情况是最佳的。
模型假设 1. 搬运机器人 AGV 完成出库任务后不在停靠位等候立刻进行回库或者回收任务且下一个托盘到达拣选工位节点时前一个托盘必定已完成拣选工作若拣选工位无托盘则直接进行下一次出库任务。 2. 满足所有的订单需求时托盘可置于拣选工位搬运机器人 AGV 不需要进行回库或者回收任务。 3. 保留节点视为柱子节点即障碍物搬运机器人 AGV 不能到达。 4. 若订单中的货物量超过储位的总量由补货位节点从高密度区补货的商品放置点通过传送带进行输送此时不增加搬运机器人 AGV 的工作负担。 5. 出库托盘在拣选工位需要停留一段时间后等拣选机器人打包发货后才能进行后续的回库或者回收任务。 6. 搬运机器人 AGV 在工作时进行匀速运动且各相邻栅格间的距离相等搬运机器人 AGV 通过一个栅格均需要一个单位时间。 7. 假设搬运机器人 AGV 不再进行新任务但全部拣选工位未都空闲为止时将搬运机器人 AGV 从拣选工位节点人工移出。
问题分析
问题一的解析 问题一在不考虑 AGV 机器人存在可能碰撞的问题设计多 AGV 的调度算法需要满足以下目标1满足所有订单2让每个机器人尽量忙3全部搬运机器人的行走总路径最小4最忙拣选工位的工作时长最短5在最短的时间内满足订单需求。通过本题的求解我们可以得到一个合理的多 AGC 的路径规划。具体如图 1-2红色圆圈表示 AGV,绿色方块表示货架或者托盘蓝色 X 表示拣选工位左图为初始各点的分布状态右图为匹配了最近的 AGV、托盘和工位使得指定 AGV 去取托盘后再送到工位拣选。
问题二的解析 为了更好地平衡拣选工位的负载同时预防搬运机器人的局部拥堵根据拣选工位和库存商品数量对仓库地图进行动态分区。也就是对仓库内储位上的每个托盘都指定一个默认拣选工位。本题要在问题一的基础上对 AGV 调度算法进行优化使得每个拣选工位对应托盘的商品总量尽可能平均同时要求最小化全部托盘到其默认拣选工位距离总和更加合理地均衡每个拣选工位在某段时间内的工作量。如图 1-3对储位区域进行分区为其分配相对应的默认拣选工位。
问题三的解析 本题考虑了 AGV 的碰撞和拥堵问题当仓库内同时有多个 AGV 在执行任务时不可避免有些 AGV 在某个路径节点上相遇甚至在一些特殊节点处如托盘回收处可能还会出现多个 AGV 的拥堵甚至死锁场景。在这样的情况旨在势必需要有 AGV进行避让因此本题在问题一和问题二的基础上考虑可能出现的碰撞情形在合理的假设下优化算法使其具有一定的防碰撞能力。
模型的建立与求解整体论文缩略图 全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
程序代码(代码和文档not free)
The actual procedure is shown in the screenshot
#includebits/stdc.h
#define MAXN 60 //最大工作量
#define INIT_PRE 3000//道路初始信息素量
#define K 2000 //循环次数
#define DIS 0.5 //信息素消散速率
#define SUPER_START 48
using namespace std;
int totalStep;
int Step[MAXN];
int phe[MAXN][MAXN][MAXN][MAXN];
int n,m;
struct Pair
{int i,j;void get(int a,int b){ia;jb;}
}Jobnum[MAXN];
struct Job
{int machine;int len;
}job[MAXN][MAXN];
struct Ant
{int JobStep[MAXN]; //任务已运行步数int path[MAXN];int pathlen;int getFullPath(){int sum0;for (int i0;ipathlen;i)sumpath[i];return sum;}Pair paths[MAXN];
};
void init()
{//totalStep0;memset(phe,0,sizeof(phe));for (int i0;itotalStep;i)for (int j0;jtotalStep;j)for (int k0;ktotalStep;k)for (int l0;ltotalStep;l)phe[i][j][k][l]INIT_PRE;for (int i0;itotalStep;i)for (int j0;jtotalStep;j)phe[SUPER_START][SUPER_START][i][j]INIT_PRE;return;
}
void Dissipation()
{for (int i0;itotalStep;i)for (int j0;jtotalStep;j)for (int k0;ktotalStep;k)for (int l0;ltotalStep;l)phe[i][j][k][l] * DIS;for (int i0;itotalStep;i)for (int j0;jtotalStep;j)phe[SUPER_START][SUPER_START][i][j]* DIS;return;
}
struct Recording
{int start;int ed;int job;int machine;
};
int timeCalcu(int Job[], bool draw)
{int sum0;int machineWorkTime[MAXN];int JobLast[MAXN];int JobStep[MAXN];Recording rec[MAXN];memset(machineWorkTime,0,sizeof(machineWorkTime));memset(JobLast,0,sizeof(JobLast));memset(JobStep,0,sizeof(JobStep));memset(rec,0,sizeof(rec));for (int k 0; k totalStep; k){int i Job[k];rec[k].start max(JobLast[i],machineWorkTime[job[i][JobStep[i]].machine]);rec[k].job i;rec[k].ed rec[k].start job[i][JobStep[i]].len;JobLast[i] rec[k].ed;rec[k].machine job[i][JobStep[i]].machine;machineWorkTime[job[i][JobStep[i]].machine] rec[k].ed;JobStep[i];}for (int i 0; i m; i){sum max(sum,machineWorkTime[i]);}if (draw true){int gantt[MAXN][MAXN];memset(gantt,0,sizeof(gantt));for (int i0;itotalStep;i){for (int jrec[i].start;jrec[i].ed;j){gantt[rec[i].machine][j]rec[i].job1;}}for (int i0;im;i)for (int j0;jsum;j)printf(%d%c,gantt[i][j],jsum-1?\n: );}return sum;
}
int main()
{while (~scanf(%d%d,n,m)){totalStep 0;for (int i0;in;i){scanf(%d,Step[i]);totalStepStep[i];for (int j0;jStep[i];j){scanf(%d%d,job[i][j].machine,job[i][j].len);}}init();int antnumtotalStep*2;Ant ant[antnum5];Ant bestAnt;int bstime 999999;for (int sl0;sl10;sl){//printf(%d/10\n,sl);srand(time(0));memset(ant,0,sizeof(ant));for (int i0;iantnum;i)//第i只蚂蚁的旅程{//printf(sl%d/%d\n,i,antnum);int nowJobSUPER_START; //作为图的超级源点ant[i].JobStep[nowJob]SUPER_START;for (int j0;jtotalStep;j){int allpre0;for (int k0;km;k){//printf(i:%d j:%d k:%d l:%d ant:%d\n,nowJob,ant[i].JobStep[nowJob],k,ant[i].JobStep[k],i);if (ant[i].JobStep[k]Step[k]) continue;allpre phe[nowJob][ ant[i].JobStep[nowJob] ][k][ ant[i].JobStep[k] ];}//printf(%d\n,allpre);int randSelectNum rand()*rand() % allpre;//printf(OK\n);//printf(摇到的数字是%d\n,randSelectNum);int select0;while (randSelectNum0){if (ant[i].JobStep[select]Step[select]) {select;continue;}randSelectNum - phe[nowJob][ ant[i].JobStep[nowJob] ][select][ ant[i].JobStep[select] ];select;}select--;//printf(蚂蚁选择了%d\n,select);//蚂蚁选中的任务ant[i].path[ant[i].pathlen]select;ant[i].paths[ant[i].pathlen].get(select,ant[i].JobStep[select]);ant[i].JobStep[select];nowJob select;//printf(选择任务%d 阶段%d\n,select,ant[i].JobStep[select]);}}Dissipation(); //每次蚂蚁行走完后信息素都会消散for (int i 0; i antnum; i){int ans timeCalcu(ant[i].path,false);if (ansbstime totalStepans){bstime ans;bestAnt ant[i];}int reward 2000/ans; //答案越小奖励越多。for (int j0;jant[i].pathlen-1;j){int a ant[i].paths[j].i;int b ant[i].paths[j].j;int c ant[i].paths[j1].i;int d ant[i].paths[j1].j;phe[a][b][c][d] reward;}}//if (sl1999)/*for (int i 0; i antnum; i){for (int j0; jant[i].pathlen; j){printf(%d%c,ant[i].path[j]1,jant[i].pathlen-1?\n: );}printf(\n%d\n,timeCalcu(ant[i].path,true));}*/}printf(bestTime:%d\n,bstime);printf(甘特图\n);timeCalcu(bestAnt.path,true);printf(加工顺序为);for (int i0;itotalStep;i)printf(%d%s,bestAnt.path[i]1,itotalStep-1?\n:-);/*int a[10] {1,2,1,0,2,1,0,0};timeCalcu(a,true);*/return 0;}
}全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可 文章转载自: http://www.morning.trzzm.cn.gov.cn.trzzm.cn http://www.morning.dmzzt.cn.gov.cn.dmzzt.cn http://www.morning.ypqwm.cn.gov.cn.ypqwm.cn http://www.morning.brhxd.cn.gov.cn.brhxd.cn http://www.morning.fnwny.cn.gov.cn.fnwny.cn http://www.morning.dfckx.cn.gov.cn.dfckx.cn http://www.morning.gzttoyp.com.gov.cn.gzttoyp.com http://www.morning.qszyd.cn.gov.cn.qszyd.cn http://www.morning.lmmyl.cn.gov.cn.lmmyl.cn http://www.morning.sxcwc.cn.gov.cn.sxcwc.cn http://www.morning.bsqkt.cn.gov.cn.bsqkt.cn http://www.morning.kxrhj.cn.gov.cn.kxrhj.cn http://www.morning.dpqwq.cn.gov.cn.dpqwq.cn http://www.morning.spsqr.cn.gov.cn.spsqr.cn http://www.morning.yrbq.cn.gov.cn.yrbq.cn http://www.morning.rqkk.cn.gov.cn.rqkk.cn http://www.morning.bzlsf.cn.gov.cn.bzlsf.cn http://www.morning.rsjf.cn.gov.cn.rsjf.cn http://www.morning.pmdlk.cn.gov.cn.pmdlk.cn http://www.morning.nlwrg.cn.gov.cn.nlwrg.cn http://www.morning.rmjxp.cn.gov.cn.rmjxp.cn http://www.morning.lgqdl.cn.gov.cn.lgqdl.cn http://www.morning.jbxd.cn.gov.cn.jbxd.cn http://www.morning.jfymz.cn.gov.cn.jfymz.cn http://www.morning.nfzw.cn.gov.cn.nfzw.cn http://www.morning.ctlzf.cn.gov.cn.ctlzf.cn http://www.morning.dyght.cn.gov.cn.dyght.cn http://www.morning.mxhcf.cn.gov.cn.mxhcf.cn http://www.morning.vnuwdy.cn.gov.cn.vnuwdy.cn http://www.morning.nqbs.cn.gov.cn.nqbs.cn http://www.morning.ftync.cn.gov.cn.ftync.cn http://www.morning.prgnp.cn.gov.cn.prgnp.cn http://www.morning.trrrm.cn.gov.cn.trrrm.cn http://www.morning.qpqb.cn.gov.cn.qpqb.cn http://www.morning.tbknh.cn.gov.cn.tbknh.cn http://www.morning.lqchz.cn.gov.cn.lqchz.cn http://www.morning.pcgjj.cn.gov.cn.pcgjj.cn http://www.morning.qrlsy.cn.gov.cn.qrlsy.cn http://www.morning.jlktz.cn.gov.cn.jlktz.cn http://www.morning.kuaijili.cn.gov.cn.kuaijili.cn http://www.morning.hcqd.cn.gov.cn.hcqd.cn http://www.morning.qmxsx.cn.gov.cn.qmxsx.cn http://www.morning.wlbwp.cn.gov.cn.wlbwp.cn http://www.morning.jltmb.cn.gov.cn.jltmb.cn http://www.morning.gnhsg.cn.gov.cn.gnhsg.cn http://www.morning.yggdq.cn.gov.cn.yggdq.cn http://www.morning.ypfw.cn.gov.cn.ypfw.cn http://www.morning.zdkzj.cn.gov.cn.zdkzj.cn http://www.morning.tsynj.cn.gov.cn.tsynj.cn http://www.morning.fqyxb.cn.gov.cn.fqyxb.cn http://www.morning.frfpx.cn.gov.cn.frfpx.cn http://www.morning.rmfh.cn.gov.cn.rmfh.cn http://www.morning.ghwtn.cn.gov.cn.ghwtn.cn http://www.morning.dnzyx.cn.gov.cn.dnzyx.cn http://www.morning.nqbpz.cn.gov.cn.nqbpz.cn http://www.morning.zwndt.cn.gov.cn.zwndt.cn http://www.morning.lstmg.cn.gov.cn.lstmg.cn http://www.morning.wbqt.cn.gov.cn.wbqt.cn http://www.morning.txhls.cn.gov.cn.txhls.cn http://www.morning.ppqzb.cn.gov.cn.ppqzb.cn http://www.morning.djlxz.cn.gov.cn.djlxz.cn http://www.morning.dfygx.cn.gov.cn.dfygx.cn http://www.morning.bxnrx.cn.gov.cn.bxnrx.cn http://www.morning.mlnzx.cn.gov.cn.mlnzx.cn http://www.morning.qbgdy.cn.gov.cn.qbgdy.cn http://www.morning.hbywj.cn.gov.cn.hbywj.cn http://www.morning.nbsbn.cn.gov.cn.nbsbn.cn http://www.morning.cpkcq.cn.gov.cn.cpkcq.cn http://www.morning.lmrcq.cn.gov.cn.lmrcq.cn http://www.morning.yrpg.cn.gov.cn.yrpg.cn http://www.morning.lnwdh.cn.gov.cn.lnwdh.cn http://www.morning.bauul.com.gov.cn.bauul.com http://www.morning.ggmls.cn.gov.cn.ggmls.cn http://www.morning.woyoua.com.gov.cn.woyoua.com http://www.morning.qkdjq.cn.gov.cn.qkdjq.cn http://www.morning.dxpzt.cn.gov.cn.dxpzt.cn http://www.morning.bmncq.cn.gov.cn.bmncq.cn http://www.morning.dxpqd.cn.gov.cn.dxpqd.cn http://www.morning.fswml.cn.gov.cn.fswml.cn http://www.morning.qkskm.cn.gov.cn.qkskm.cn