比赛时间一般为每年9月,提交的材料MD5生成之后,就不要再碰了,不要打开。
看视频建议:
例如:线性规划 filetype:pdf -百度文库
先看知网的硕博论文,按照”被引“排序,看背景介绍,利用好高级检索。
对于数模国赛,没必要查外文文献
国家数据 (stats.gov.cn)https://data.stats.gov.cn/
缺失值
异常值
MATLAB异常值处理方法:
创建****.mlx 实时代码文件,高版本才有这个选项
模型得建立:
附录:正文中求解时用到的代码,注意把查到的代码里变量名换一换,避免被查重
各级标题与正文层次分明,不要出现大片空白,一般标题级别不超过3级,正文中文字为宋体,英文Times New Roman,表格采用标准的三线表。
读完标题,就能知道本文建的是什么模型。简明扼要、符合规范、便于检索,尽量使用大家都知道的词语。
基于***模型/算法的***问题研究
让评阅老师读完摘要后,就知道本文解决的问题、建立的模型和求解结果。控制在3/4~1页。字数800~1100。
开头段模板:本文主要研究了***问题。根据***,利用***模型/方法,求解出****。
中间段模板:针对问题一,考虑/根据***,...,建立***模型/利用****方法,....求解出****。一定要写清楚结果。
总结段:如果写完后摘要超过一页了,可以不写,不要累赘重复前面写过的内容,写一些本文的特色、自夸的语句。
关键词:一般为4~6个,使用的模型和算法,大家都知道的专业名称,问题的关键词,中间以空格分开
引用文献或公开资料都必须按规范列出参考文献并在正文对应处标注。
注意排版,无首行缩进,居中对齐。
常见作图软件:AxGlyph、MATLAB,万能神器EChartsApache EChartshttps://echarts.apache.org/zh/index.html
摘要单独占一页,摘要后插一个分页符。注意分页符和分节符的区别,一般用不到分节符,主要用分页符。
第一中方法:利用CTRL键选择需要导入的数据。以表的方式导出
第二种方法:
horse_data = xlsread('E:\文件位置\new_data.xlsx','sheet1'); % 导入表格数据
horse_1 = horse_data(1,:); % 导入第一行数据
线性规划:所有变量都是一次方。
适用赛题:
有限的条件下,最大的收益,s.t.表示约束条件,设置的参数x1 x2 即为决策变量,max为目标函数
MATLAB实现:Linprog函数
c | 目标函数系数的列向量 |
a, b | 不等式约束条件的变量系数矩阵和参数项矩阵 |
aeq, beq | 等式约束条件的系数矩阵和常数项矩阵 |
lb, ub | 决策变量的最小取值和最大取值 |
x 返回最优解的变量取值
fval 返回目标函数的最优值
c = [-40; -30]; % 注意写成列向量
a = [1 1; -1 0; 0 -1; 240 120];
b = [6; -1; -1; 1200];
% 因为在约束条件a中,已经写了x1 x2 的范围,所以没必要再写lb,ub了
[x, y] = linprog(c, a, b);
y = -y;
有限的条件下,求最大的收益
非线性规划:至少一个变量不是一次方,涉及到三角函数的
适合赛题:例如角度调整,飞行管理避免相撞,影院最佳视角。
既要****,又要*****
求解方法:搜索MATLAB的fgoalattain函数,或序贯算法,或用Lingo求解
最短路径:从图中的某个点出发,到达另外一个顶点的所经过的边的权重之和最小的一条路径。
图:边和节点组成的结构,分为有向图和无向图
权重:道路的长度
MATLAB求解最短路径:Dijkstra算法,或MATLAB的graphshortestpath函数
第一步:生成邻接矩阵
W = [10,5,2,1,4,6,7,3,9,2]; % 每条边的权值
% sparse生成稀疏矩阵,也就是除了注明的几个元素外,其余都是0
% sparse里第一个和第二个矩阵相同位置的元素值就是 从*到*的方向,对应W里的权值
DG = sparse([],[],W) % DG为生成的邻接矩阵
第二步,生成图对象,求解最短路径
% dist是最短路径的值,path是最短路径的节点顺序
% pred是到每一个节点的最短路径的终点前一个节点,一般用不到
% 1 代表起始节点,3 代表目标节点,即1到3的最短路径
[dist,path,pred] = graphshortestpath(DG,1,3);
% biograph生成图对象,view显示该图
point_name = ["节点1","节点2","节点3","节点4"];
h = view(biograph(DG,point_name,'ShowWeights','on')) % 后两个参数为显示路径长度
% 将最短路径的节点和边缘标记为红色并增加线宽
% getedgesbynodeid得到图h的指定边的句柄
% 第一个参数为图,第二个是边的出点,第三个是边的入点
% 句柄确保能找到对应的东西
% get查询图的属性,h.Nodes(path),'ID'得到图h中最短路径的边
% set设置图形属性
edges = getedgesbyodeid(h,get(h.Nodes(path),'ID'));
set(edges,'LineColor',[1 0 0]); % R G B
set(edges,'LineWidth',2);
注:节点标签和字体大小也可以进行修改,通过getedgesbyodeid函数获取相关信息,再进行set
连通所有顶点且总路径最小。
例:修建连通7个城市的铁路网,可修建的路线和对应造价如图所示,如何修建能使得总费用最少。
问题分析:
% 前两个矩阵对应节点,主要无向图写的时候避免重复,技巧第2个矩阵写比第一个矩阵大的节点
s = [1 1 2 2 3 3 4 4 4 5];
t = [2 3 4 5 4 7 5 6 7 6];
wights = [50,60,65,40,52,45,50,30,42,70];
% 生成无向图,wights是对应的权值
G = graph(s,t,weights);
% 求出最小生成树,得到的T包含最小生成树的节点和对应边的权值
T = minspantree(G);
% p = plot(G)就能把图片展现出来,后面是为了美观设置字体
p = plot(G,'EdgeLabel',G.Edges.Weight,'MarkerSize',8,'NodeFontSize',16,'EdgeFont',4)
% 突出显示绘制的图中的节点和边
highlight(p,T,'EdgeColor','red','LineWidth',3)
1.利用MATLAB的minspantree函数求解最小生成树,见上面的程序
2.Kruskal算法:适合点多边少的图
3.Prim算法:适合边多点少的图
GM(1,1)模型:1阶微分方程,1个变量
特点:数据少,看不出明显规律,适合用灰色预测
看不出规律,采用累加的方法制造规律。
生成的新序列,一般看起来像一个指数曲线(直线)
优点:数据少且无明显规律时可用,利用微分方程挖掘数据本质规律
缺点:灰色预测只适合短期预测、指数增长的预测