2020年“深圳杯”数学建模挑战赛C题-无线可充电传感器网络充电路线规划
深圳杯2020——数学建模模拟赛——C题
文章目录
- 深圳杯2020——数学建模模拟赛——C题
- 依赖库
- 计算公式
- 感谢大神指点,原方案的经纬度换算有问题,故换成`geopy`库来解决
- 正确版本
- 先前错误版本
- 第一题
- 使用first solution strategy获得计算近似解
- 使用guided local search获得最优解
- 第二问:数值解法(numerical)
- 参数定义
- 等式
- 约束条件
- 根据约束条件得出线性方程组
- 参数设置
- 数值解结果
- 第二问:符号解法(symbolic)
- 第三问
- 参数设置
- 运行结果
- 结果有待优化
依赖库
- Google or-tools
- xlrd
- matplotlib
- sys
- numpy
- math
- sympy (符号计算)
- geopy(经纬度换算)
计算公式
感谢大神指点,原方案的经纬度换算有问题,故换成geopy
库来解决
正确版本
def compute_euclidean_distance_matrix(locations):distances = {}for fromCounter, fromNode in enumerate(locations):distances[fromCounter] = {}for toCounter, toNode in enumerate(locations):if fromCounter == toCounter:distances[fromCounter][toCounter] = 0else:distances[fromCounter][toCounter] = geodesic(fromNode, toNode).metersreturn distances
先前错误版本
经度(东西方向)1M实际度:31544206M*cos(纬度)/360°=
31544206⋅cos(latitude=36)/360=708883.29m/longtitude31544206\cdot\cos(latitude=36)/360 = 708883.29m/longtitude31544206⋅cos(latitude=36)/360=708883.29m/longtitude
纬度(南北方向)1M实际度:40030173M360°=
40030173/360=111194.92m/latitude40030173/360 = 111194.92m/latitude40030173/360=111194.92m/latitude
第一题
使用first solution strategy获得计算近似解
求得结果
Route:0 -> 2 -> 1 -> 9 -> 7 -> 6 -> 11 -> 14 -> 15 -> 27 -> 16 -> 13 -> 12 -> 8 -> 10 -> 5 -> 3 -> 28 -> 24 -> 23 -> 29 -> 26 -> 25 -> 18 -> 19 -> 20 -> 17 -> 21 -> 22 -> 4 -> 0
Distance: 12033m
使用guided local search获得最优解
求得结果
Route:0 -> 2 -> 1 -> 9 -> 7 -> 6 -> 14 -> 11 -> 8 -> 12 -> 15 -> 27 -> 16 -> 13 -> 10 -> 5 -> 3 -> 4 -> 22 -> 28 -> 24 -> 23 -> 21 -> 29 -> 26 -> 25 -> 18 -> 19 -> 20 -> 17 -> 0
Distance: 11469m
第二问:数值解法(numerical)
要使传感器一直工作的最低要求:在移动电源走完一整个回路后,电池容量刚好达到最低要求为最优
假设初始条件:当到达该节点时,剩余电池容量刚好为最低要求
参数定义
- x1,x2,⋯,x30x_1,x_2,\cdots,x_{30}x1,x2,⋯,x30:假设每个节点的电池容量
- c1,c2,⋯,c30c_1,c_2,\cdots,c_{30}c1,c2,⋯,c30:每个节点的电池消耗速度
- r(mA/s)r(mA/s)r(mA/s):电池充电速度
- fff:最低工作电量
- v(m/s)v(m/s)v(m/s):移动充电器移动速度
- dstdstdst:总路程
等式
- 时间总花费:ttot=dst/v+∑i=130(xi−f)/rit_{tot}=dst/v+\sum_{i=1}^{30}{(x_i - f)/r_i}ttot=dst/v+∑i=130(xi−f)/ri
- 电池容量推导:xi=ttot⋅ci+fx_i=t_{tot}\cdot c_i+fxi=ttot⋅ci+f
约束条件
去掉数据中心节点的充电计算
xi=[dst/v+∑i=230(xi−f)/ri]⋅ci+fx_{i} = [dst/v+\sum_{i=2}^{30}{(x_{i} - f)/r_i}]\cdot c_i+fxi=[dst/v+i=2∑30(xi−f)/ri]⋅ci+f
根据约束条件得出线性方程组
组合结果为一个29*29的矩阵:
[x2⋮x30]=[dst⋅c2v+f−f⋅c2r−⋯−f⋅c30r⋮dst⋅c30v+f−f⋅c2r−⋯−f⋅c30r]+[x2⋅c2r+⋯+x30⋅c30r⋮x2⋅c2r+⋯+x30⋅c30r]\left[ \begin{array}{l} \boldsymbol{x}_2\\ \vdots\\ \boldsymbol{x}_{30}\\ \end{array} \right] =\left[ \begin{array}{c} \frac{\boldsymbol{dst}\cdot \boldsymbol{c}_2}{\boldsymbol{v}}+\boldsymbol{f}-\frac{\boldsymbol{f}\cdot \boldsymbol{c}_2}{\boldsymbol{r}}-\cdots -\frac{\boldsymbol{f}\cdot \boldsymbol{c}_{30}}{\boldsymbol{r}}\\ \vdots\\ \frac{\boldsymbol{dst}\cdot \boldsymbol{c}_{30}}{\boldsymbol{v}}+\boldsymbol{f}-\frac{\boldsymbol{f}\cdot \boldsymbol{c}_2}{\boldsymbol{r}}-\cdots -\frac{\boldsymbol{f}\cdot \boldsymbol{c}_{30}}{\boldsymbol{r}}\\ \end{array} \right] +\left[ \begin{array}{c} \frac{\boldsymbol{x}_2\cdot \boldsymbol{c}_2}{\boldsymbol{r}}+\cdots +\frac{\boldsymbol{x}_{30}\cdot \boldsymbol{c}_{30}}{\boldsymbol{r}}\\ \vdots\\ \frac{\boldsymbol{x}_2\cdot \boldsymbol{c}_2}{\boldsymbol{r}}+\cdots +\frac{\boldsymbol{x}_{30}\cdot \boldsymbol{c}_{30}}{\boldsymbol{r}}\\ \end{array} \right] ⎣⎢⎡x2⋮x30⎦⎥⎤=⎣⎢⎡vdst⋅c2+f−rf⋅c2−⋯−rf⋅c30⋮vdst⋅c30+f−rf⋅c2−⋯−rf⋅c30⎦⎥⎤+⎣⎢⎡rx2⋅c2+⋯+rx30⋅c30⋮rx2⋅c2+⋯+rx30⋅c30⎦⎥⎤
化简:
[x2⋮x30]=[dst⋅c2v+f−f⋅c2r2−⋯−f⋅c30r30⋮dst⋅c30v+f−f⋅c2r2−⋯−f⋅c30r30]+[x2⋅c2r2+⋯+x30⋅c30r30⋮x2⋅c2r2+⋯+x30⋅c30r30]\left[ \begin{array}{l} \boldsymbol{x}_2\\ \vdots\\ \boldsymbol{x}_{30}\\ \end{array} \right] =\left[ \begin{array}{c} \frac{\boldsymbol{dst}\cdot \boldsymbol{c}_2}{\boldsymbol{v}}+\boldsymbol{f}-\frac{\boldsymbol{f}\cdot \boldsymbol{c}_2}{\boldsymbol{r}_2}-\cdots -\frac{\boldsymbol{f}\cdot \boldsymbol{c}_{30}}{\boldsymbol{r}_{30}}\\ \vdots\\ \frac{\boldsymbol{dst}\cdot \boldsymbol{c}_{30}}{\boldsymbol{v}}+\boldsymbol{f}-\frac{\boldsymbol{f}\cdot \boldsymbol{c}_2}{\boldsymbol{r}_2}-\cdots -\frac{\boldsymbol{f}\cdot \boldsymbol{c}_{30}}{\boldsymbol{r}_{30}}\\ \end{array} \right] +\left[ \begin{array}{c} \frac{\boldsymbol{x}_2\cdot \boldsymbol{c}_2}{\boldsymbol{r}_2}+\cdots +\frac{\boldsymbol{x}_{30}\cdot \boldsymbol{c}_{30}}{\boldsymbol{r}_{30}}\\ \vdots\\ \frac{\boldsymbol{x}_2\cdot \boldsymbol{c}_2}{\boldsymbol{r}_2}+\cdots +\frac{\boldsymbol{x}_{30}\cdot \boldsymbol{c}_{30}}{\boldsymbol{r}_{30}}\\ \end{array} \right] ⎣⎢⎡x2⋮x30⎦⎥⎤=⎣⎢⎡vdst⋅c2+f−r2f⋅c2−⋯−r30f⋅c30⋮vdst⋅c30+f−r2f⋅c2−⋯−r30f⋅c30⎦⎥⎤+⎣⎢⎡r2x2⋅c2+⋯+r30x30⋅c30⋮r2x2⋅c2+⋯+r30x30⋅c30⎦⎥⎤
转化成A⋅X=bA\cdot X = bA⋅X=b形式:
[c2r−1⋯c30r⋮⋱⋮c2r⋯c30r−1]⋅[x2⋮x30]=−[dst⋅c2v+f−f⋅c2r−⋯−f⋅c30r⋮dst⋅c30v+f−f⋅c2r−⋯−f⋅c30r]\left[ \begin{matrix} \frac{\boldsymbol{c}_2}{\boldsymbol{r}}-1& \cdots& \frac{\boldsymbol{c}_{30}}{\boldsymbol{r}}\\ \vdots& \ddots& \vdots\\ \frac{\boldsymbol{c}_2}{\boldsymbol{r}}& \cdots& \frac{\boldsymbol{c}_{30}}{\boldsymbol{r}}-1\\ \end{matrix} \right] \cdot \left[ \begin{array}{l} \boldsymbol{x}_2\\ \vdots\\ \boldsymbol{x}_{30}\\ \end{array} \right] =-\left[ \begin{array}{c} \frac{\boldsymbol{dst}\cdot \boldsymbol{c}_2}{\boldsymbol{v}}+\boldsymbol{f}-\frac{\boldsymbol{f}\cdot \boldsymbol{c}_2}{\boldsymbol{r}}-\cdots -\frac{\boldsymbol{f}\cdot \boldsymbol{c}_{30}}{\boldsymbol{r}}\\ \vdots\\ \frac{\boldsymbol{dst}\cdot \boldsymbol{c}_{30}}{\boldsymbol{v}}+\boldsymbol{f}-\frac{\boldsymbol{f}\cdot \boldsymbol{c}_2}{\boldsymbol{r}}-\cdots -\frac{\boldsymbol{f}\cdot \boldsymbol{c}_{30}}{\boldsymbol{r}}\\ \end{array} \right] ⎣⎢⎡rc2−1⋮rc2⋯⋱⋯rc30⋮rc30−1⎦⎥⎤⋅⎣⎢⎡x2⋮x30⎦⎥⎤=−⎣⎢⎡vdst⋅c2+f−rf⋅c2−⋯−rf⋅c30⋮vdst⋅c30+f−rf⋅c2−⋯−rf⋅c30⎦⎥⎤
其中
A=[c2r−1⋯c30r⋮⋱⋮c2r⋯c30r−1],b=−[dst⋅c2v+f−f⋅c2r−⋯−f⋅c30r⋮dst⋅c30v+f−f⋅c2r−⋯−f⋅c30r]\boldsymbol{A}=\left[ \begin{matrix} \frac{\boldsymbol{c}_2}{\boldsymbol{r}}-1& \cdots& \frac{\boldsymbol{c}_{30}}{\boldsymbol{r}}\\ \vdots& \ddots& \vdots\\ \frac{\boldsymbol{c}_2}{\boldsymbol{r}}& \cdots& \frac{\boldsymbol{c}_{30}}{\boldsymbol{r}}-1\\ \end{matrix} \right] , \boldsymbol{b}=-\left[ \begin{array}{c} \frac{\boldsymbol{dst}\cdot \boldsymbol{c}_2}{\boldsymbol{v}}+\boldsymbol{f}-\frac{\boldsymbol{f}\cdot \boldsymbol{c}_2}{\boldsymbol{r}}-\cdots -\frac{\boldsymbol{f}\cdot \boldsymbol{c}_{30}}{\boldsymbol{r}}\\ \vdots\\ \frac{\boldsymbol{dst}\cdot \boldsymbol{c}_{30}}{\boldsymbol{v}}+\boldsymbol{f}-\frac{\boldsymbol{f}\cdot \boldsymbol{c}_2}{\boldsymbol{r}}-\cdots -\frac{\boldsymbol{f}\cdot \boldsymbol{c}_{30}}{\boldsymbol{r}}\\ \end{array} \right] A=⎣⎢⎡rc2−1⋮rc2⋯⋱⋯rc30⋮rc30−1⎦⎥⎤,b=−⎣⎢⎡vdst⋅c2+f−rf⋅c2−⋯−rf⋅c30⋮vdst⋅c30+f−rf⋅c2−⋯−rf⋅c30⎦⎥⎤
参数设置
- 速度v=50m/sv=50m/sv=50m/s
- 充电速度r=200mA/sr = 200mA/sr=200mA/s
- 最低工作值f=10mAf=10mAf=10mA
数值解结果
nodes | battery capacity |
---|---|
0 | 5145.627 |
1 | 5692.659 |
2 | 4940.490 |
3 | 5168.420 |
4 | 4735.353 |
5 | 4940.490 |
6 | 5373.557 |
7 | 4963.283 |
8 | 4940.490 |
9 | 5168.420 |
10 | 4940.490 |
11 | 5601.487 |
12 | 5396.350 |
13 | 4940.490 |
14 | 4780.939 |
15 | 4940.490 |
16 | 5168.420 |
17 | 5624.280 |
18 | 5168.420 |
19 | 4940.490 |
20 | 4712.560 |
21 | 5168.420 |
22 | 5624.280 |
23 | 4712.560 |
24 | 5168.420 |
25 | 4894.904 |
26 | 4735.353 |
27 | 5373.557 |
28 | 5145.627 |
第二问:符号解法(symbolic)
代码已经实现,但是矩阵渲染太大导致计算机崩溃,故此可以得出利用符号解求解该问题并没有意义。
第三问
参数设置
- 速度:v=50m/sv=50m/sv=50m/s
- 每辆车最多运行时间:100s100s100s
- 每个节点的时间窗:[0,70][0, 70][0,70]
运行结果
Route for vehicle 0:
0 Time(0,0) -> 2 Time(4,4) -> 9 Time(10,10) -> 6 Time(16,16) -> 14 Time(25,25) -> 11 Time(30,30) -> 8 Time(36,36) -> 12 Time(40,40) -> 15 Time(45,45) -> 27 Time(57,57) -> 16 Time(67,67) -> 0 Time(86,86)
Time of the route: 86 secondsRoute for vehicle 1:
0 Time(0,0) -> 1 Time(5,5) -> 7 Time(12,12) -> 20 Time(21,21) -> 19 Time(28,28) -> 18 Time(36,36) -> 25 Time(46,46) -> 26 Time(57,57) -> 29 Time(69,69) -> 0 Time(91,91)
Time of the route: 91 secondsRoute for vehicle 2:
0 Time(0,0) -> 5 Time(7,7) -> 10 Time(11,11) -> 13 Time(16,16) -> 3 Time(30,30) -> 0 Time(40,40)
Time of the route: 40 secondsRoute for vehicle 3:
0 Time(0,0) -> 17 Time(8,8) -> 21 Time(18,18) -> 23 Time(25,25) -> 24 Time(33,33) -> 28 Time(41,41) -> 22 Time(49,49) -> 4 Time(56,56) -> 0 Time(64,64)
Time of the route: 64 secondsTotal time of all routes: 281min
结果有待优化
2020年“深圳杯”数学建模挑战赛C题-无线可充电传感器网络充电路线规划相关推荐
- 2020年“深圳杯”数学建模挑战赛D题-公交车在高峰和平峰转换期间的调度 题解
部分结果展示 2020年"深圳杯"数学建模挑战赛D题-公交车在高峰和平峰转换期间的调度 题解思路 原题地址 一.背景 公交车是为市民出行提供服务的"准公共"产品 ...
- 2022 年第十二届 MathorCup 高校数学建模挑战赛D题思路(移动通信网络站址规划和区域聚类问题)
目录 一.前言 二.问题背景 三.问题 四.解题思路 (1)针对问题1: (2)针对问题2: (3)针对问题3: 五.附上几个典型代码 (1)K-means算法 (2)遗传算法 (3)模拟退火算法 一 ...
- 2021年华中杯数学建模挑战赛B题技术问答社区重复问题识别求解全过程文档及程序
2021年华中杯数学建模 B题 技术问答社区重复问题识别 原题再现: 技术社区问答平台作为用户互相分享交流的社区平台,近年来逐步成为用户寻找技术类疑难解答的首要渠道. 各分类技术性问题的文本数据量 ...
- 2022年华中杯数学建模挑战赛A题分拣系统优化问题求解全过程文档及程序
2022年华中杯数学建模 A 题 分拣系统优化问题 原题再现: 某电商公司配送中心的工作流程分为统计汇总.转运上架.按订单分拣.核对打包等步骤.其中,分拣环节操作复杂,耗时较长,其效率是影响配送中 ...
- 2023认证杯数学建模挑战赛C题心脏危险完整原创论文讲解
大家好呀,从发布赛题一直到现在,总算完成了认证杯完整的成品论文. C题论文共37页,一些修改说明7页,正文26页,附录4页. 认证杯难度比起mathorcup会小一些,本题主要难度是数据量比较大,片段 ...
- 2023 年第八届数维杯数学建模挑战赛 赛题浅析
为了更好地让大家本次数维杯比赛选题,我将对本次比赛的题目进行简要浅析.本次比赛的选题中,研究生.本科组请从A.B题中任选一个 完成答卷,专科组请从B.C题中任选一个完成答卷.这也暗示了本次比赛的难度为 ...
- 2023 年第八届数维杯数学建模挑战赛 A题详细思路
下面给大家带来每个问题简要的分析,以方便大家提前选好题目. A 题 河流-地下水系统水体污染研究 该问题,初步来看属于物理方程类题目,难度较大.需要我们通过查阅相关文献和资料,分析并建立河流-地下水系 ...
- 2022年数维杯国际大学生数学建模挑战赛C题如何利用大脑结构特征和认知行为特征诊断阿尔茨海默病解题过程
2022年数维杯国际大学生数学建模挑战赛 C题 如何利用大脑结构特征和认知行为特征诊断阿尔茨海默病 原题再现: 阿尔茨海默病(AD)是一种起病隐匿的进行性神经退行性疾病.临床特征为全谱痴呆,包括记 ...
- 2020华数杯数学建模C题脱贫帮扶绩效评价求解全过程文档及程序
2020华数杯数学建模 C题 脱贫帮扶绩效评价 原题再现: 消除贫困.改善民生.逐步实现共同富裕,是社会主义的本质要求,是我们党的重要使命.党的十八大以来,国家把扶贫开发工作纳入"四个全 ...
- 2022年数维杯国际大学生数学建模挑战赛D题三重拉尼娜事件下极端气候灾害损失评估与应对策略研究解题过程
2022年数维杯国际大学生数学建模挑战赛 D题 三重拉尼娜事件下极端气候灾害损失评估与应对策略研究 原题再现: 2022年7月至8月,中国南方许多城市经历了多天的炎热天气,而北方部分地区也出现了大 ...
最新文章
- Twisted入门教程(3)
- Oracle Listener 动态注册 与 静态注册
- micropython esp8266+ssd1306(OLED) 显示中文(示例)
- IDEA之过滤那些不重要的文件
- 手写一个简单的线程池MyThreadPool
- Qt Creator管理数据收集设置
- Struts2执行流程
- 报错:content type application/x-www-form-urlencoded;
- 斗鱼回应与虎牙合并;Android 11 Beta 3 发布| 极客头条
- 计算机毕业设计ssm飞机售票管理系统63z52系统+程序+源码+lw+远程部署
- lammps后处理:ovito快速提取单条位错线的伯氏矢量
- Word常见基本操作-《和秋叶一起学Word》
- 等价类划分法-案例剖析-设计测试用例
- PS的工具介绍和使用方法
- 《老路用得上的商学课》81-85学习笔记
- 用c语言写出一个金字塔
- 基于JDBC的JavaWeb开发项目之——网上教务系统
- 怎么在FLASH的场景中控制影片剪辑的播放和停止
- java 生成电子合同_java实现电子合同签名
- Gunicorn、Supervisor
热门文章
- echarts循环图表
- 【工具】ColorPix!分享一个超好用的桌面取色工具
- ccrpipa6.ocx 和mswinsck.ocx 等文件缺失问题解决(用于TCP调试助手)
- Python3 PyV8“安装与使用”教程
- 产业园 电气火灾监控系统的应用
- linux攻击主机msfconsole,关于利用kali linux2017.2中MSFCONSOLE 利用MS17-010漏洞发起攻击的坑...
- 清华校友中的两大人工智能大牛贾扬清和何凯明
- VGG16模型PyTorch实现
- 人工智能就是计算机科学的英文,AI(人工智能)的英文全称?AI指什么,包含什么?
- Redis集群原理分析