一、D题分析与思路

(赛题出来以后第一时间分享)

三、往届D题常用三大模型

3.1 预测模型

预测模型:

  • 神经网络预测、
  • 灰色预测、
  • 拟合插值预测(线性回归)、
  • 时间序列预测、
  • 马尔科夫链预测、
  • 微分方程预测、
  • Logistic 模型等等。

应用领域:人口预测、水资源污染增长预测、病毒蔓延预测、竞赛获胜概率预测、月收入预测、销量预测、经济发展情况预测等在工业、农业、商业等经济领域,以及环境、社会和军事等领域中都有广泛的应用。

预测模型:难度中等。

拟合插值预测:基础简单、容易理解。

拟合算法:matlab拟合工具箱、准确…

插值算法:短期预测、完善补全数据、插值函数、拉格朗日插值法、三次样条插值法…

神经网络预测:现代优化算法、考验编程能力。

人口预测:灰色预测、Logistic 模型…

3.2 优化模型

优化模型:

  • 规划模型(目标规划、线性规划、非线性规划、整数规划、动态规划)、
  • 图论模型、
  • 排队论模型、
  • 神经网络模型、
  • 现代优化算法(遗传算法、模拟退火算法、蚁群算法、禁忌搜索算法)等等。

应用领域:快递员派送快递的最短路径问题、水资源调度优化问题、高速路口收费站问题、军事行动避空侦察的时机和路线选择、物流选址问题、商区布局规划等各个领域。

优化模型:偏难。

切割木料、地板,使损耗最低、利润最高。

自然水管道铺设问题:图论模型(迪杰斯特拉算法 Dijkstra、克鲁斯卡尔算法 Kruskal)

3.3 评价模型

评价模型:

  • 模糊综合评价法、
  • 层次分析法、
  • 聚类分析法、
  • 主成分分析评价法、
  • 灰色综合评价法、
  • 人工神经网络评价法等等。

应用领域:某区域水资源评价、水利工程项目风险评价、城市发展程度评价、足球教练评价、篮球队评价、水生态评价、大坝安全评价、边坡稳定性评价。

预测模型:偏简单。

常用技术 - 退火算法

放一个年年都用到的技术,退火算法

按我个人的理解的话,是解决组合优化的问题是,使用随机化的方法得到新解,如果新解比旧解要好,那么就接受。如果新解没有旧解好,那么也按一定概率[exp(-delta_f/T)]接受。T是一个温度,内循环就产生新解直到达到平稳,外循环就退火(缓慢的速率温度)。到结束温度时,会收敛到最优解。那么我用的示例是旅行商问题。直接贴代码吧。

from matplotlib import pyplot as plt
import numpy as npdef coordinate_init(size):#产生坐标字典coordinate_dict = {}coordinate_dict[0] = (0, 0)#起点是(0,0)for i in range(1, size + 1):#顺序标号随机坐标coordinate_dict[i] = (np.random.uniform(0, size), np.random.uniform(0, size))coordinate_dict[size + 1] = (0, 0)#终点是(0,0)return coordinate_dictdef distance_matrix(coordinate_dict,size):#生成距离矩阵d=np.zeros((size+2,size+2))for i in range(size+1):for j in range(size+1):if(i==j):continueif(d[i][j]!=0):continuex1 = coordinate_dict[i][0]y1 = coordinate_dict[i][1]x2 = coordinate_dict[j][0]y2 = coordinate_dict[j][1]distance=np.sqrt((x1-x2)**2+(y1-y2)**2)if(i==0):d[i][j]=d[size+1][j]=d[j][i]=d[j][size+1]=distanceelse:d[i][j]=d[j][i]=distancereturn ddef path_length(d_matrix,path_list,size):#计算路径长度length=0for i in range(size+1):length+=d_matrix[path_list[i]][path_list[i+1]]return lengthdef new_path(path_list,size):#二交换法change_head = np.random.randint(1,size+1)change_tail = np.random.randint(1,size+1)if(change_head>change_tail):change_head,change_tail=change_tail,change_headchange_list = path_list[change_head:change_tail + 1]change_list.reverse()#change_head与change_tail之间的路径反序new_path_list = path_list[:change_head] + change_list + path_list[change_tail + 1:]return change_head,change_tail,new_path_listdef diff_old_new(d_matrix,path_list,new_path_list,head,tail):#计算新旧路径的长度之差old_length=d_matrix[path_list[head-1]][path_list[head]]+d_matrix[path_list[tail]][path_list[tail+1]]new_length=d_matrix[new_path_list[head-1]][new_path_list[head]]+d_matrix[new_path_list[tail]][new_path_list[tail+1]]delta_p=new_length-old_lengthreturn delta_pT_start=2000#起始温度
T_end=1e-20#结束温度
a=0.995#降温速率
Lk=50#内循环次数,马尔科夫链长
size=20
coordinate_dict=coordinate_init(size)
print(coordinate_dict)#打印坐标字典
path_list=list(range(size+2))#初始化路径
d=distance_matrix(coordinate_dict,size)#距离矩阵的生成
best_path=path_length(d,path_list,size)#初始化最好路径长度
print('初始路径:',path_list)
print('初始路径长度:',best_path)
best_path_temp=[]#记录每个温度下最好路径长度
best_path_list=[]#用于记录历史上最好路径
balanced_path_list=path_list#记录每个温度下的平衡路径
balenced_path_temp=[]#记录每个温度下平衡路径(局部最优)的长度
while T_start>T_end:for i in range(Lk):head, tail, new_path_list = new_path(path_list, size)delta_p = diff_old_new(d, path_list, new_path_list, head, tail)if delta_p < 0:#接受状态balanced_path_list=path_list = new_path_listnew_len=path_length(d,path_list,size)if(new_len说实话,我最讨厌别人的博客只有代码没有输出,所以,输出还是要有的:{0: (0, 0), 1: (8.0813445997638, 19.378598885734345), 2: (5.9336947559652735, 18.43334356701462), 3: (2.4187354288286844, 11.208318685158517), 4: (11.364680404115896, 17.838011084801682), 5: (14.57899298590396, 10.443803487389676), 6: (14.475687688871977, 6.430692753878264), 7: (15.564547884718248, 1.8489819656041484), 8: (2.762034307781256, 1.3609270597085188), 9: (2.4449326896325507, 13.971590679990305), 10: (6.376590999061471, 13.590205047457003), 11: (2.0008565516450005, 0.25779568392405805), 12: (8.756514935267091, 15.616855386568506), 13: (8.19333746755698, 14.267482040877905), 14: (6.688671060971291, 7.594062408648769), 15: (16.826772155106706, 18.439257279177564), 16: (0.17109735207725185, 9.772548332790812), 17: (10.057710887083482, 4.213811533920735), 18: (14.404568409630825, 16.182396066315434), 19: (6.522071276732497, 4.044136354883117), 20: (3.2651888440785837, 14.12486494048631), 21: (0, 0)}
初始路径: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
初始路径长度: 225.0507842833548
结束温度的局部最优路径: [0, 11, 8, 19, 14, 17, 7, 6, 5, 18, 15, 4, 1, 2, 12, 13, 10, 20, 9, 3, 16, 21]
结束温度的局部最优路径长度: 78.12501363830815
最好路径: [0, 11, 8, 19, 14, 17, 7, 6, 5, 18, 15, 4, 1, 2, 12, 13, 10, 20, 9, 3, 16, 21]
最好路径长度: 78.12501363830815

2022高教社杯 国赛数学建模 D题思路相关推荐

  1. 2022高教社杯 国赛数学建模 B题思路

    一.B题分析与思路 (赛题出来以后第一时间分享) 三.往届B题常用三大模型 3.1 预测模型 预测模型: 神经网络预测. 灰色预测. 拟合插值预测(线性回归). 时间序列预测. 马尔科夫链预测. 微分 ...

  2. 2020年高教社杯全国大学生数学建模C题思路讲解

    2020年高教社杯全国大学生数学建模C题 2020年国赛C题国二,三个菜鸟属实沾了很多运气成分,有哪里讲的不好的地方,还请各位大佬勿喷(呜呜呜). C题 中小微企业的信贷决策 在实际中,由于中小微企业 ...

  3. 【2022国赛官方评审要点发布】2022高教社杯全国大学生数学建模竞赛官方评阅要点

    [2022国赛官方评审要点发布]2022高教社杯全国大学生数学建模竞赛官方评阅要点 文章目录 2022年A题评阅要点 问题1 问题2 问题3 问题4 2022年B题评阅要点 问题1 问题2 2022年 ...

  4. 2022年高教社杯全国大学生数学建模竞赛解题思路

    2022年高教社杯全国大学生数学建模竞赛试题和最新解题思路,文末可领取各题最新的解题思路和方法. 1. 试题 A 题 波浪能最大输出功率设计 随着经济和社会的发展,人类面临能源需求和环境污染的双重挑战 ...

  5. 2021年高教社杯全国大学生数学建模B题(乙醇偶合制备C4烯烃)

    文章目录 一.题目 二.资源 一.题目 2021年高教社杯全国大学生数学建模竞赛题目 (请先阅读"全国大学生数学建模竞赛论文格式规范") --------------------- ...

  6. 2022高教社杯全国大学生数学建模竞赛C题详细解析

    1.比赛报名与思路解析(持续更新750967193) 2.比赛时间:2022年9月15日18点到2022年9月18日20点 如下为C题思路: C 题 古代玻璃制品的成分分析与鉴别 丝绸之路是古代中西方 ...

  7. 2022国赛数学建模C题思路分析 高教社杯

    C题更新一下完整的版本,大家多看看 文章内容较多,大家仔细观看,所有内容仅供参考!大家不要直接照抄,切记,防止被查重!! 一.问题的重述 1.1 研究背景 玻璃的主要原料是石英砂,主要化学成分是二氧化 ...

  8. 2022高教社杯全国大学生数学建模竞赛(国赛)A题国家二等奖论文及支撑代码

  9. 2022 高教社杯全国大学生数学建模竞赛获奖名单(初稿)

最新文章

  1. poj1734(最小环+路径)
  2. 每日英语:Prosecutors Wrap Up Case Against Bo
  3. Object of type 'ndarray' is not JSON serializable
  4. 宝塔 mysql迁移_(2020年最新方法)如何快速迁移网站?使用宝塔一键迁移转移网站数据详细教程...
  5. 信号为E时,如何让语音识别脱“网”而出?
  6. Linux 字符设备驱动结构(四)—— file_operations 结构体知识解析
  7. 媒体查询能html的ID吗,基于Javascript的媒体查询
  8. 【BZOJ1922】【Tyvj1736】【codevs2129】大陆争霸,无语最短路
  9. 12. 我的第一个容器化应用
  10. 8.Linux 高性能服务器编程 --- 高性能服务器程序框架
  11. 【GPU加速】笔记本双显卡如何切换
  12. 计算机不能关机处理方法,电脑无法关机的解决办法
  13. HTML5网页设计制作基础大二dreamweaver作业、使用HTML+CSS技术制作博客网站(5个页面)
  14. Linux最最最常用命令!
  15. react使用mock
  16. UVA 1471 Defense Lines (LIS变形)
  17. 我眼中的微软Azure:Microsoft Azure
  18. C语言吞食鱼,大鱼吃小鱼.cpp · 2019春C语言/programming-1 - Gitee.com
  19. Ubuntu搭建交叉编译环境(arm、mips、powerpc)
  20. selenium的常见方法及使用

热门文章

  1. Aha!设计模式(57)-装饰模式(1)
  2. 别等待-想到什么就去做
  3. 车载Android程序员的2022年终总结与转行建议
  4. STM32 OSPI四线读取 SST26VF064B ID
  5. linux服务器监控信息,Linux 服务器监控
  6. 全球及中国卫星产业应用建设布局及投资机会分析报告2021-2027年版
  7. 国内云市场的发展前景
  8. 常见火狐不支持问题(转载)
  9. 南邮Android软件设计报告,南京邮电大学软件设计实验报告
  10. NYOJ869---切蛋糕