参考了很多的博客终于算弄懂了一点点去年国赛B题 今天就给大家简单写下,部分思路和代码有参考大佬的,尽量每条都加上了注释方便大家理解。

一、分析
1.本机器操作一共分为4种状态:停止、移动。清洗及下成料(清洗时间忽略不计),上下料(机械臂连接两个操作,做一个的时候另一个同时做)
2.上下料,将原机器位置上的孰料拿起,机械手臂转动放生料,当第一次的时候没有熟料可拿但是由于在同一条机械手臂上所以仍然要执行上料,所以上下料的时间是一样的。
3.清洗作业:将成料放进清洗槽再将成料下料。清洗及下成料时间固定,因为即使第一次操作时,清洗槽内没有放进去的清洗好的成料,但是由于机械臂连着两个手在一起,取成料操作仍然会执行。
4.移动:题目中默认RGV只有在收到某CNC需求信号后,才会移动至该CNC处,对其进行上下料操作。
5.整个分析有这样几种情况:

  1. 一道工序:根据距离RGV的远近,对所有的CNC进行上料,然后不断进行>上下料>清洗>上下料
  2. 两道工序:将一部分CNC分为A类,一部分为B类,分别操作第一道和第二道工序,A类加工完后,将半熟料放入B类CNC执行上料下料然后清洗后到达A类继续上下料操作,A>B>A>B,AB类的分布看到某位博主用的是暴力全排的做法,说可能有优化的可能,暂时我也想不出来,后面有可能再更吧。
  3. 有故障可能性对于1.2都要考虑。三个变量
    (1 故障时间:加工一道工序的时间内的随机整数
    (2 维修时间:600-1200(原题说的是10-20分钟
    (3 发生概率:(0,1)随机数小于0.01对应1%
  4. 改进后的RGV模型,说白了就是本来是等待CNC的呼叫,RGV响应去执行,在改进后可以就是RGV提前对走到任意一个机器的时间和该机器的工作时间排列后提前到达该CNC进行等待。

二、
1.对一道工序的CNC求解
%cnc:
% 第一行:cnc位置常量
% 第二行:cnc工作变量,空闲为0,忙碌为1
% 第三行:cnc工作时间,为常量560
% 第四行:cnc上下料时间
% 第五行:cnc预计完成时间
% 第六行:cnc加工物料数
1 1 2 2 3 3 4 4
0 0 0 0 0 0 0 0
560 560 560 560 560 560 560 560
28 31 28 31 28 31 28 31
0 0 0 0 0 0 0 0
%rgv:
% 第一行:rgv初始位置变量,初始为1
% 第二行:rgv工作变量,进行上下料或清洗作业,空闲为0,忙碌为1
% 第三行:rgv一次清洗作业时间
% 第四行:rgv预计完成时间
1
0
25
0
%speedRgv:
%移动1~3个单位所需时间
20
33
46

clear all;clc;
cnc = load ('1_cnc_1.txt');
cnc(6,:)=-1;%加工物料数
rgv = load ('1_rgv_1.txt');
speedRgv = load('1_speedRgv_1.txt');
case_1_result = (1:800)';
t = 0;
r = 1;  %仅计数用while t <= 28800  %以秒为计数单位%1.在rgv和cnc均空闲状态下,找到距离最近的cnc编号dist = 4; %距离signal = 0;for i=1:8%八个工作点if cnc(2,i) == 0  %如果cnc空闲if abs(cnc(1,i)-rgv(1))<dist  %找到距离最近的cnc并返回cnc编号dist = abs(cnc(1,i)-rgv(1))%距离cncNum = i%工作的是第i台机器value = cnc(1,i);  %记录cnc位置以传递给rgvstep = abs(cnc(1,i)-rgv(1));  %rgv走的步数的绝对值endendendif step ~= 0 && cnc(2,cncNum) == 0  %rgv移动到最近的cnc处不等于0。表示当左右两端表达式不相等时,结果为1。t = t + speedRgv(step);%soeedrgv所走的步数的选择一步还是两步的时间rgv(1) = value;signal = 1;end%2.上下料和清洗操作if  cnc(2,cncNum) == 0 %目前距离最近的这台操作台是否空闲cnc(2,cncNum) = 1; %空闲的话就变为1rgv(2) = 1;  %rgv工作状态为1%记录加工cnc的编号case_1_result(r,2) = cncNum;%使用了哪台机器case_1_result(r,3) = t;%上料开始时间t = t + cnc(4,cncNum);  %上下料时间cnc(6,cncNum) = cnc(6,cncNum) + 1;%任意一台加工物料数signal = 1;cnc(5,cncNum) = t + cnc(3,cncNum);  %cnc预计完成时间=上下料+工作时间(加工完一个工件料时间)if cnc(5,cncNum) ~= 0t = t + rgv(3);  %清洗作业完成时间=上下料+清洗时间endr = r + 1; end%3.更改cnc状态为空闲for i = 1:8if t >= cnc(5,i) && cnc(5,i) ~= 0cnc(2,i) = 0;endendif signal == 0t = t +1; %这部分的意思就是当while每循环一次时间也走了一秒%else%continue;endend%计算下料开始时间,即改cnc的下一次上料时间
for i = 1:800for j =i+1:800if case_1_result(i,2)==case_1_result(j,2)case_1_result(i,4)=case_1_result(j,3);%如果上次的加工机器正好是同一个那么这次的下料时间也就等于上次的上料时间break;endend
end

结果
今天就写到这,剩下的情况再更。

2018数模国赛RGV调度相关推荐

  1. 数模国赛历年题目 1992——2021

    数模国赛历年题目 1992--2021 获取方式 关注 公众号 数模零到一 回复关键词[国赛历年题目]即可获取 不仅包含1992-2021年题目文档,也包含题目原始数据.(无水印) 数模零到一数据库 ...

  2. 数模国赛要点与注意事项全分享!

    暑假咻地一下就过去了,转眼数学建模国赛快到了. 为了给大家最最直接的帮助,超模君特邀请到周老师为参加国赛的模友们准备了一场干货满满的赛前冲刺直播课.全天候直播,助大家一臂之力,全力冲刺数模国赛! 周老 ...

  3. ​2021年数模国赛A题国二摘要及经验分享(回忆篇,附部分代码)

    以2021年数模国赛A题为例,主要分享内容有:如何写好国赛摘要.部分解题思路和排版技巧.接下来,干货走起. 题目重述:" FAST "主动反射面的形状调节 中国天眼( FAST ) ...

  4. 2022数模国赛河南赛区获奖名单

    2022数模国赛河南赛区获奖名单如下:

  5. 全网通报:数模国赛作弊的后果

    大家好,我是北海. 数模国赛官网公布了2021年全国大学生数学建模竞赛中部分参赛论文相似度较高的通报,今天和大家聊一聊关于国赛作弊的问题. 1.什么样的队伍会被通报? 官方文件中的原话: 1.抄袭是严 ...

  6. 【数模国赛参赛情况浅析】

    今天给大家带来近几年的国赛参赛以及国奖评阅等情况.由于19年开始国赛才新增C题(据说是鼓励数学学得较浅的文商科等专业学生参加),因此我们从19年开始对19-21年的参赛数据进行浅析. •参赛规模 19 ...

  7. CT 系统参数标定及反投影重建成像-2017数模国赛论文A298编程分析

    CT 系统参数标定及反投影重建成像-2017数模国赛论文A298编程分析 之前的同学已经讲解清楚了这篇论文建模的主要思路,我主要讲解代码对建模思路的实现. 本文提到的论文下载地址:http://dxs ...

  8. 2022年数模国赛C题(岭回归、区间预测、矩阵热力图、Fisher判别分类模型)——总结心得(附最后一次数模经历,Matlab\SPSS\Lingo的理解综合)

    文章目录 一.国赛 二.国赛代码展示 1.1 问题一 1.2 问题二 1.3 问题三 1.4 问题四 三.对于软件的理解 3.1 Matlab 3.1.1 表格的读取 3.1.2 元胞数组的相关函数的 ...

  9. 记一枚蒟蒻的数模国赛参赛经历

    ycy说:这次比赛我们体验的是人生,我认为没错. --题记 题目发布 9月13日晚8:00,从国赛群里get到了题目.这次的比赛题型一如往常:A题是"高温作业专用服装设计",草草看 ...

最新文章

  1. python字典用法(创建、添加、删除(del()、clear()、pop()、popitem())、修改、查找(get()、keys()、values()、items())、更新update、遍历)
  2. 怎样学会单片机?先学什么,怎么入门?
  3. [IE技巧] 如何禁止用户关闭IE浏览器
  4. Android Studio下jni应用
  5. 开发者账号申请 真机调试 应用发布
  6. chrome vue插件_VS Code 前端常用插件推荐
  7. H5新增特性之语义化标签
  8. python写一个类方法_python中如何写类
  9. 编译安装时的--prefix参数的使用方法,很实用,mark一下
  10. jQuery之事件移除
  11. 16进制发送 mqtt客户端调试工具_MQTT调试工具
  12. 航测无人机航线规划原理
  13. linux查看udp丢包数量,Linux下UDP丢包问题分析思路
  14. 私域运营电商平台和传统电商平台有什么不同?
  15. [转]色度抽样(4:2:0)到底是什么意思?
  16. 想要画漫画?掌握风格很关键!
  17. 批量上传不同图片(网易邮箱添加附件的应用)
  18. 2022数学建模国赛B题:无人机定位(国二分享)
  19. NO.12【婳骨】の张三-打工人之路
  20. Wormhole大数据流式处理平台五大功能

热门文章

  1. 微信公众号推广的十个技巧
  2. 洛谷P1330封锁阳关大学口胡实况
  3. 西安电子科技大学专业英语考试总结
  4. matlab之常微分方程(ODE)求解
  5. 编写接口时间效率提升一倍的方法
  6. svg的深度利用绕过waf
  7. SCOM客户端代理安装
  8. 教学设计和反思高中计算机,从三维目标到核心素养--高中信息技术课程教学设计与实践研究.docx...
  9. 阿里内核月报2014年3月
  10. 命令行使用java运行程序报错:Could not find or load main class