找回密码
 立即注册
查看: 177|回复: 5

如何评价2023Mathorcup A题?

[复制链接]
发表于 2024-7-15 18:50 | 显示全部楼层 |阅读模式
mathorcup A
发表于 2024-7-15 18:51 | 显示全部楼层
思路内容如下:

1、手写版资料主要包括模型部分及论文框架

     使用方法:模型由小驴老师建立,大家根据视频讲解进行理解
               论文框架是论文的主体,文字的描述千变万化,这个可避免重复,主体可确保逻辑性准确性。
2、视频讲解包括详细讲解模型、数据处理、程序讲解、补讲、问题分析讲解、摘要书写方法及获奖技巧讲解等;

法:视频讲解是对论文书写的进一步说明,务必将视频讲解的内容转化为自己的语言写到论文中。
3、整体答疑视频,在QQ群文件

4、中途部分发现大家存在的问题,会在QQ群对话框直接发布。

论文助攻

一篇原创完整论文以及修改说明(限量出售,不是一对一,有详细的修改说明):

       格式为pdf带水印(防止二道贩子)版本,包含问题重述、分析、假设、符号说明、模型建立求解、评价、推广、附录。保证原创,保证质量,一般会在30页左右,下图为之前比赛的成品
助攻预订链接,预订后刷新购买页有我的微信,添加请备注Mathorcup预定)(预定前请确保看完此文档)

2024年MathorCup数学建模助攻思路说明mathorcup
发表于 2024-7-15 18:52 | 显示全部楼层
2023.4.14下午更新:C 题电商物流网络包裹应急调运与结构优化问题,前两问代码已经写出
问题1思路

MathorCup C题问题1:建立线路货量的预测模型,对2023-01-01 至2023-01-31 期间每条线路每天的货量进行预测,并在提交的论文中给出线路DC14→DC10、DC20→DC35、DC25→DC62 的预测结果。完整代码下载地址:C题完整代码下载
1.C题思路大致讲解
2.C1问时间序列预测,神经网络预测手把手教大家编程
C1思路:
a.提取数据:DC14→DC10、DC20→DC35、DC25→DC62 的货运量数据
时间序列预测:
             自相关系数计算
             偏相关函数计算
             AR5逼近模型
BP神经网络预测:数据数数组化[shuruzhi,shucchuzhi]
               神经网络训练
               数据预测
               鲸鱼优化BP
              遗传算法优化BP
              粒子群优化BP
C2:单目标优化/多目标优化
a.        DC5的货全部给到其他线路;
b.        线路尽可能少(和DC5有联系的线路)    假设20,用10个
c.        平均分配,每个和DC5有联系的站点最后的变化量方差的和最小
C3 多目标优化
a.        DC9的货全部给到其他线路;
b.        线路尽可能少(和DC9有联系的线路)    假设20,用10个
c.        平均分配,每个和DC9有联系的站点最后的变化量方差的和最小
d.网络结构DC9具有两层联系关系的。DC9-DC17
问题1代码









部分代码如下,完整代码见文章开头
  1. clear all
  2. clc
  3. close all
  4. %% 读取比赛数据集
  5. [rawDataNum, rawDataStr] = xlsread('附件1:物流网络历史货量数据.xlsx');
  6. [m,n]=size(rawDataNum);
  7. %% 提取特定线路的数据为后续的时间序列预测或神经网络预测用
  8. s1=1;
  9. s2=1;
  10. s3=1;
  11. for i=2:1:m+1
  12.     if rawDataStr{i,1}=="DC14"&& rawDataStr{i,2}=="DC10"
  13.         hy1(s1,1)=rawDataNum(i-1,1);
  14.         s1=s1+1;
  15.     end
  16.     if rawDataStr{i,1}=="DC20"&&rawDataStr{i,2}=="DC35"
  17.         hy2(s2,1)=rawDataNum(i-1,1);
  18.         s2=s2+1;
  19.     end
  20.     if rawDataStr{i,1}=="DC25"&&rawDataStr{i,2}=="DC62"
  21.         hy3(s3,1)=rawDataNum(i-1,1);
  22.         s3=s3+1;
  23.     end
  24. end
  25. xlswrite('DC14到DC10的原始货物量值.xlsx',hy1);
  26. xlswrite('DC20到DC35的原始货物量值.xlsx',hy2);
  27. xlswrite('DC25到DC62的原始货物量值.xlsx',hy3);
  28. [m1,n1]=size(hy1);
  29. zzff=hy1(m1-279:end,1);
  30. T=1:1:280;
  31. t0=datetime(2022,12,31);
  32. data1=[];
  33. for i=1:length(T)
  34.     data1=[data1,t0-caldays(i)];        
  35.     % caldays自增,获取数组内的日期格式数据,便于绘图,下同
  36. end
  37. %% 时间序列预测
  38. P = zzff(185:end);  %xlsread('')    .mat
  39. F = zzff(28:274) ;
  40. %----------------------由于时间序列有不平稳趋势,进行两次差分运算,消除趋势性----------------------%
  41. for i=2:96
  42.     Yt(i)=P(i)-P(i-1);
  43. end
  44. for i=3:96
  45.     L(i)=Yt(i)-Yt(i-1);
  46. end
  47. L=L(3:96);
  48. Y=L(1:88);
  49. %画图
  50. % figure;
  51. % plot(P);
  52. % title('原数据序列图');
  53. % hold on;   
  54. % plot(Y,'r');
  55. % title('两次差分后的序列图和原数对比图');
  56.    
  57. %--------------------------------------对数据标准化处理----------------------------------------------%
  58. %处理的算法 : (data - 期望)/方差
  59. Ux=sum(Y)/88;                           % 求序列均值
  60. yt=Y-Ux;
  61. b=0;
  62. for i=1:88
  63.    b=yt(i)^2/88+b;
  64. end
  65. v=sqrt(b);                              % 求序列方差
  66. Y=yt/v;                            % 标准化处理公式
  67. f=F(1:88);
  68. t=1:88;
  69. %画图
  70. % figure;
  71. % plot(t,f,t,Y,'r')
  72. % title('原始数据和标准化处理后对比图');
  73. % xlabel('时间t'),ylabel('y');
  74. % legend('原始数据 F ','标准化后数据Y ');
  75. %--------------------------------------对数据标准化处理----------------------------------------------%
  76. %------------------------检验预处理后的数据是否符合AR建模要求,计算自相关和偏相关系数---------------%
  77. %---------------------------------------计算自相关系数-----------------------------------%
  78. R0=0;
  79. for i=1:88  
  80.      R0=Y(i)^2/88+R0;   %标准化处理后的数据的方差
  81. end
复制代码
问题2思路

MathorCup C题问题2:如果物流场地DC5 于2023-01-01 开始关停,请在问题1 的预测基础上,建立数学模型,将DC5 相关线路的货量分配到其他线路使所有包裹尽可能正常流转,并使得DC5关停前后货量发生变化的线路尽可能少,且保持各条线路的工作负荷尽可能均衡。如果存在部分日期部分货量没有正常流转,你们的分流方案还应使得2023-01-01 至2023-01-31 期间未能正常流转的包裹日累计总量尽可能少。正常流转时,请给出因DC5 关停导致货量发生变化的线路数及网络负荷情况;不能正常流转时,请给出因DC5关停导致货量发生变化的线路数、不能正常流转的货量及网络的负荷情况。
C2思路讲解:
1.        运用第一问的模型计算(预测)出DC5站点的货运量:
两种方法:
                         BP神经网络(智能+BP)
                         时间序列预测
分两种情况找站点:
  DC5是发出站点
                                 DC5是接收站点
代码里面引入了两个结构体(变量):DC5:从DC5站点发出货物
                                 DC5ya:别的站点发给DC5货物
2.数学建模:
三种模型:单目标优化//多目标优化//多目标优化+一些路径规划(图论)Floyd
a.单目标优化:遗传算法(不推荐)
              粒子群算法(不推荐)
              蜣螂优化算法 2022
              鲸鱼优化算法(以此为例讲解)
              正余弦算法
              改进鲸鱼算法
              人工水母
b.多目标优化:多目标遗传
              多目标鲸鱼(以此为例)
              多目标灰狼
C 多目标优化+一些路径规划(图论)
              多目标鲸鱼+邻接矩阵
3.如何建模
a.单目标为例:
             DC5接收的和发出的进行简单加和//拆分成两个单目标优化
   以DC5发出站点为例:





最终更新的目标函数:


Ubj: DC5->DC35历史最值:  67
  所有站点->DC35 历史最值:130449
xij:第j个站点在第i天的承担DC5站点货运量(j=1…24,i=1…31)
truei:DC5站点第i天的发出的货运量
  pij:第j个站点第i天货物饱和量(工作负荷量,取值范围为0到1)
SumFZC:非正常流转的天数总和
问题2代码

已写出2023MathorCup C题第二问代码,下面是编程时刻:部分代码如下,完整代码下载地址:C题代码和思路

  1. clear all
  2. clc
  3. close all
  4. %% 读取比赛数据集
  5. [rawDataNum, rawDataStr] = xlsread('附件1:物流网络历史货量数据.xlsx');
  6. [m,n]=size(rawDataNum);
  7. %% 提取特定线路的数据为后续的时间序列预测或神经网络预测用
  8. s1=1;
  9. s2=1;
  10. s3=1;
  11. for i=2:1:m+1
  12.     if rawDataStr{i,1}=="DC5"
  13.         DC5.hy(s1)=rawDataNum(i-1,1);
  14.         A=rawDataStr{i,2};
  15.         [mm,nn]=size(A);
  16.         if nn==3
  17.         DC5.chu(s1,1)=A(1);
  18.         DC5.chu(s1,2)=A(2);
  19.         DC5.chu(s1,3)=A(3);
  20.         end
  21.         if nn==4
  22.         DC5.chu(s1,1)=A(1);
  23.         DC5.chu(s1,2)=A(2);
  24.         DC5.chu(s1,3)=A(3);
  25.         DC5.chu(s1,4)=A(4);
  26.         end
  27.         DC5.ru(s1,1)="DC5";
  28.         s1=s1+1;
  29.     end
  30.     if rawDataStr{i,2}=="DC5"
  31.         DC5ya.hy(s2)=rawDataNum(i-1,1);
  32.         A=rawDataStr{i,1};
  33.         [mm,nn]=size(A);
  34.         if nn==3
  35.         DC5ya.ru(s2,1)=A(1);
  36.         DC5ya.ru(s2,2)=A(2);
  37.         DC5ya.ru(s2,3)=A(3);
  38.         end
  39.         if nn==4
  40.         DC5ya.ru(s2,1)=A(1);
  41.         DC5ya.ru(s2,2)=A(2);
  42.         DC5ya.ru(s2,3)=A(3);
  43.         DC5ya.ru(s2,4)=A(4);
  44.         end
  45.         DC5ya.chu(s2,1)="DC5";
  46.         s2=s2+1;
  47.     end
  48. end
  49.     hy11=DC5.hy;
  50.     hy22=DC5ya.hy;
  51.    
  52.    xlswrite('从DC5站点发出的货物量的原始数据.xlsx',hy11)
  53.    xlswrite('从DC5站点收到的货物量的原始数据.xlsx',hy22)
  54.    
  55. hy1=hy11';
  56. [m1,n1]=size(hy1);
  57. zzff=hy1(m1-279:end,1);
  58. T=1:1:280;
  59. t0=datetime(2022,12,31);
  60. data1=[];
  61. for i=1:length(T)
  62.     data1=[data1,t0-caldays(i)];        
  63.     % caldays自增,获取数组内的日期格式数据,便于绘图,下同
  64. end
  65. %% 时间序列预测
  66. P = zzff(185:end);  %xlsread('')    .mat
  67. F = zzff(28:274) ;
  68. %----------------------由于时间序列有不平稳趋势,进行两次差分运算,消除趋势性----------------------%
  69. for i=2:96
  70.     Yt(i)=P(i)-P(i-1);
  71. end
  72. for i=3:96
  73.     L(i)=Yt(i)-Yt(i-1);
  74. end
  75. L=L(3:96);
  76. Y=L(1:88);
  77. %画图
  78. % figure;
  79. % plot(P);
  80. % title('原数据序列图');
  81. % hold on;   
  82. % plot(Y,'r');
  83. % title('两次差分后的序列图和原数对比图');
  84.    
  85. %--------------------------------------对数据标准化处理----------------------------------------------%
  86. %处理的算法 : (data - 期望)/方差
  87. Ux=sum(Y)/88;                           % 求序列均值
  88. yt=Y-Ux;
  89. b=0;
  90. for i=1:88
  91.    b=yt(i)^2/88+b;
  92. end
  93. v=sqrt(b);                              % 求序列方差
  94. Y=yt/v;                            % 标准化处理公式
  95. f=F(1:88);
  96. t=1:88;
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2024-7-15 18:52 | 显示全部楼层
0 相关链接

(1)建模思路
BetterBench:【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用 详细建模过程及代码实现BetterBench:【2023 年第十三届 MathorCup 高校数学建模挑战赛】 B 题 城市轨道交通列车时刻表优化问题 详细建模方案及代码实现BetterBench:【2023 年第十三届 MathorCup 高校数学建模挑战赛】C 题 电商物流网络包裹应急调运与结构优化问题 建模方案及代码实现(2)完整论文
BetterBench:【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用 42页论文及代码BetterBench:【2023 年第十三届 MathorCup 高校数学建模挑战赛】 B 题 城市轨道交通列车时刻表优化问题 42页论文及代码BetterBench:【2023 年第十三届 MathorCup 高校数学建模挑战赛】C 题 电商物流网络包裹应急调运与结构优化问题 31页论文及代码BetterBench:【2023 年第十三届 MathorCup 高校数学建模挑战赛】D 题 航空安全风险分析和飞行技术评估问题 27页论文及代码【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用 详细建模过程及代码实现

1 题目

在银行信用卡或相关的贷款等业务中,对客户授信之前,需要先通过 各种审核规则对客户的信用等级进行评定,通过评定后的客户才能获得信 用或贷款资格。规则审核过程实际是经过一重或者多重组合规则后对客户 进行打分,这些规则就被称为信用评分卡,每个信用评分卡又有多种阈值 设置(但且只有一个阈值生效),这就使得不同的信用评分卡在不同的阈值 下,对应不同的通过率和坏账率,一般通过率越高,坏账率也会越高,反 之,通过率越低,坏账率也越低。对银行来说,通过率越高,通过贷款资格审核的客户数量就越多,相 应的银行获得的利息收入就会越多,但高通过率一般对应着高坏账率,而 坏账意味着资金的损失风险,因此银行最终的收入可以定义为:最终收入 = 贷款利息收入 - 坏账损失
下表举例 3 个不同的信用评分卡,可以看到每种信用评分卡有 10 个阈值,每种阈值对应不同的坏账率和通过率:




在这里插入图片描述

赛题说明 1:流程简化及示例
由于银行场景的复杂性,往往需要采用选择多个不同的信用评分卡进 行组合来实现最佳的风险控制策略。而实际中的信用评分卡组合是一个非 常复杂的过程,为便于建模,我们将该问题进行做如下简化(本简化只适 用本次比赛赛题,不能完全代表实际场景)。假设贷款资金为 1000000 元,银行贷款利息收入率为 8%,并以上面列举的三个信用评分卡作为选定的信用评分卡组合来测算银行最终收入。由于每一信用评分卡有且只可选择 1 个阈值,假设信用评分卡 1 的阈值设置为 8,则通过表格可知,对应通过率为 70%,坏账率为 4.00%,信用评分卡 2 的阈值设置为 6,则通过率为 50%,坏账率为 2.70%,信用评分卡3 的阈值设置为 7,则通过率为 62%,坏账率为 3.70%。例如如果我们选择三重信用卡组合策略,那么这三种信用评分卡组合 后的总通过率为所有信用评分卡通过率相乘,即:0.7×0.5×0.62 = 0.217。总坏账率为三种信用评分卡对应坏账率的平均值,即:1/3×(0.04+0.027+0.037) = 0.0367。基于以上条件可求得,本次贷款利息收入为:贷款资金×利息收入率×总通过率×(1-总坏账率),即:1000000×0.08×(0.7×0.5×0.62) ×(1-1/3×(0.04+0.027+0.037)) =16758.18(元)。由坏账带来的坏账损失为:贷款资金×总通过率×总坏账率,即:1000000×(0.7×0.5×0.62) ×(1/3×(0.04+0.027+0.037))=7522.666(元)。那么银行的最终收入为:贷款利息收入坏账损失,即
16758.18-7522.666 = 9235.514 (元)
由此可见,选择不同的信用评分卡,不同的阈值组合,会给银行带来 不同的收入与损失,由此决定银行最终收入。因此,银行的目标是选择最 合理的信用评分卡组合以及其阈值,使得银行最终收入最多。
赛题说明2:QUB 模型简介
QUBO 模型是指二次无约束二值优化(Quadratic Unconstrained Binary Optimization)模型,它是一种用于解决组合优化问题的数学模型。在QUBO模型中,需要将问题转化为一个决策变量为二值变量,目标函数是一个二 次函数形式优化模型。
QUBO 模型可以运行在量子计算机硬件上,通过量子计算机进行毫秒级的加速求解。这种模型和加速方式在未来各行业中将得到广泛的实际应 用。因此现阶段研究基于 QUBO 模型的量子专用算法十分有应用价值。例如典型的图着色、旅行商问题、车辆路径优化问题等,都可以转化为 QUBO 模型并借助于量子计算机求解。
相关的 QUBO 的转化方法与例子可参考附件 2 中的参考文献。
赛题说明3:赛题数据
附件 1 中共包含 100 张信用评分卡,每张卡可设置 10 种阈值之一,并对应各自的通过率与坏账率共 200 列,其中 t_1 代表信用评分卡 1 的通过率共 10 项,h_1 代表信用评分卡 1 的坏账率共 10 项,依次类推 t_100 代表信用评分卡 100 的通过率,h_100 代表信用评分卡 100 的坏账率。根据上面的赛题说明及附件 1 中的数据,请你们团队通过建立数学模型完成如下问题 1 至问题 3。
问题 1:在 100 个信用评分卡中找出 1 张及其对应阈值,使最终收入
最多,请针对该问题进行建模,将该模型转为 QUBO 形式并求解。
问题 2:假设赛题说明 3 目前已经选定了数据集中给出的信用评分卡1、信用评分卡 2、信用评分卡 3 这三种规则,如何设置其对应的阈值,使最终收入最多,请针对该问题进行建模,将模型转为 QUBO 形式并求解。
问题 3:从所给附录中 100 个信用评分卡中任选取 3 种信用评分卡, 并设置合理的阈值,使得最终收入最多,请针对该问题进行建模,并将模 型转为 QUBO 形式并求解。
2 方案解析

2.1 问题一

这是一个组合优化问题,需要在100张信用评分卡中找到最优的一张卡和对应的阈值,使得最终收入最多。因为每张卡都有10个阈值选项,因此总共有1000个可能的选择。为了将该问题转化为QUBO模型,需要定义一组变量,表示选择第i张卡的第j个阈值时是否为1,其中i∈[1,100], j∈[1,10]。另外,需要定义一个目标函数来最大化最终收入。目标函数的形式为:

其中$r_{ij}$是选择第i张卡的第j个阈值时的收入。$x_{ij}$表示选择第i张卡的第j个阈值时的变量。
为了使得选择的方案符合题意,需要加入约束条件。首先,每张卡只能选择一个阈值,因此需要添加如下约束:
其次,只能选择一个卡和对应的阈值,因此需要添加如下约束:
最后,  。。。。略,请下载完整文档
2 问题二

对模型进行线性化,将二次项转化为一次项,然后将模型转化为 QUBO 形式。具体地,我们定义 x_{ij}表示信用评分卡 i中选择第 j个阈值,其中 $i \in {1, 2, 3}, j \in {1, 2, \dots, 10}$,$y_i$ 表示是否选择信用评分卡i,其中$i \in {1, 2, 3}$,$z_j$ 表示是否选择第 j个阈值,其中 $j \in {1, 2, \dots, 10}$。同时,我们引入一个变量r表示总收入。
根据前面的分析,可以得到以下约束条件:
每个信用评分卡最多选择一个阈值,即
选择某个信用评分卡的同时必须选择该信用评分卡对应的一个阈值,即
总共只能选择三个信用评分卡,即
选择某个阈值的同时必须选择对应的信用评分卡,即
根据信用评分卡的阈值和数据集中给出的通过率和坏账率,计算收入,即
其中第 4 个约束条件是一个等式约束,我们可以将其转化为两个不等式约束:
  接下来,我们将每个约束条件转化为 QUBO 表达式。首先,我们考虑将约束条件中的不等式转化为等式。对于一个不等式 $a \leq b$,我们可以引入一个非负变量 $s$,并将其转化为等式 $a + s= b$,其中 $s$ 表示两边差的绝对值。这样,我们就可以将所有约束条件转化为等式的形式,从而将模型转化为 QUBO 形式。
具体地,我们可以将目标函数表示为:
其中   。。。。略,请下载完整文档
2.3 问题三

首先,我们定义三个二元变量 $x_1, x_2, x_3$,表示我们是否选择了每个评分卡。
其次,我们需要定义一个阈值 $T$,表示最小的信用评分得分,只有评分高于此阈值的评分卡才会被选择。最后,我们需要定义一个目标函数,表示我们希望最大化的收入。在这个问题中,我们可以将收入定义为三个选择的信用评分卡的得分之和。
因此,我们的目标是将以下函数最大化:
其中 $s_1, s_2, s_3$ 分别表示我们选择的三个信用评分卡的得分。
接下来,我们需要定义约束条件。首先,我们需要确保只选择了三个信用评分卡:

其次,我们需要确保选择的评分卡的得分都高于阈值 $T$:

最后,我们需要确保变量 $x_1, x_2, x_3$ 都是二元变量:
将目标函数和约束条件转换为 QUBO 形式:  。。。。略,请下载完整文档
3 代码实现
  1. data = readmatrix('附件1:data_100.csv');
  2. rates = data(:,1:100);
  3. loss_rates = data(:,101:200);
  4. R = rates .* loss_rates;
  5. Q = zeros(100,100);
  6. for i = 1:100
  7.     for j = i:100
  8.         for k = 1:10
  9.             for l = 1:10
  10.                 Q(i,j) = Q(i,j) + R(k,l)*rates(k,i)*rates(l,j);
  11.             end
  12.         end
  13.         Q(j,i) = Q(i,j);
  14.     end
  15. end
  16. C1 = zeros(100,100);
  17. for i = 1:100
  18.     for j = 1:100
  19.         for k = 1:10
  20.             C1(i,j) = C1(i,j) + rates(k,i)*rates(k,j);
  21.         end
  22.         C1(i,j) = C1(i,j)*(sum(rates(:,i))-1)^2;
  23.     end
  24. end
  25. C2 = (sum(sum(rates))-1)^2;
  26. QUBO = Q - C1 - lambda*C2;
  27. %qubo_solver 通常用于解决二次无约束二元优化问题(QUBO)或二次无约束整数规划问题(QUIP)
  28. solution = qubo_solver(qubo_matrix, 'qbsolv', 'timeout', 30, 'num_reads', 100);
  29. 。。。略,请下载完整代码
复制代码
4 下载





请添加图片描述

有任何问题,请联系我

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2024-7-15 18:52 | 显示全部楼层
目前更新:A题:更新思路1,更新参考论文(成品论文)+其他资料
B题:更新思路1,更新参考文献,更新思路2
C题:更新思路1,更新参考文献、更新思路2(包含模型建立求解、问题分析、论文模板共6页)、思路2更新第1-3问视频+matlab程序、更新思路3(内含python代码+参考文章)
D题:更新原创第一版思路,更新第1-4问视频讲解+建模过程+数据处理方式,更新思路3(含1、4问python代码),更新参考文献,更新思路4(包含完整建模过程)
D题进阶思路:合作团队原创思路,包含思路+代码
下文包含:2023Mathorcup高校数学建模挑战赛(妈妈杯)思路解析、妈妈杯参赛时间及规则信息及Mathorcup高校数学建模挑战赛如何准备。
C君将会第一时间发布选题建议、所有题目的思路解析、相关代码、参考文献、参考论文等多项资料,帮助大家取得好成绩。
需要团队最新的更新数据集、思路、代码、论文等,可以看我的这篇文章:(第一时间更新)
2023Mathorcup高校数学建模挑战赛思路助攻汇总D题参考论文:


选题建议如下:
2023Mathorcup挑战赛(妈妈杯)选题建议提示:本科同学尽量选择C、D题进行作答,获奖率相对会高。C君认为的难度:D<C<B=A,开放度:B<C<A<D
A题 量子计算机在信用评分卡组合优化中的应用
这道题目是传统的运筹学题目。需要建立客户信用等级的模型,根据不同的信用评分卡进行组合来实现最佳的风险控制策略。建议解题过程可以使用评价类算法、多目标规划(建议利用lingo、matlab进行求解),由于题目规定使用QUBO 模型,它是指二次无约束二值优化(Quadratic Unconstrained Binary Optimization)模型,它是一种用于解决组合优化问题的数学模型。
在QUBO模型中,需要将问题转化为一个决策变量为二值变量,目标函数是一个二次函数形式优化模型。所以可以使用PCA(主成分分析)等降维方法将决策变量降维为2维,目标函数使用多元非线性回归将其中一个变量或两个变量设置为2次形式。C君建议统计学、数学等相关专业同学选择,难度较易,开放度较低,可能存在最优解或最优解范围。(后续会出思路、代码、参考文献、参考论文等)
B题 城市轨道交通列车时刻表优化问题
题目为数据分析类题目。列车时刻表优化问题是轨道交通领域行车组织方式的经典问题之一。此题给出了一套相对复杂的背景理论,需要建立多个决策模型进行求解。
其中问题一、二属于多目标规划问题,存在最优解,建议选择此题的同学在最后对对答案,问题三可以使用部分网上的新闻、论文,充实文字部分。此题的难点在于如何充分利用不同的附件数据集,设置合理的模型指标,从而建立所需的数学建模。数据可视化也比较重要,C君建议计算机等相关专业同学选择,不建议小白选择,难度适中,开放度较低,可能存在最优解或最优解范围。(后续会出思路、代码、参考文献等)




C题 电商物流网络包裹应急调运与结构优化问题
这道题目是传统的数据分析类题目。这道题目需要预测各物流场地及线路的包裹数量(以下简称货量),管理者将可以提前安排运输、分拣等计划,从而降低运营成本,提高运营效率。特别地,在某些场地临时或永久停用时,基于预测结果和各个物流场地的处理能力及线路的运输能力,设计物流网络调整方案,将会大大降低物流场地停用对物流网络的影响,保障物流网络的正常运行。
第一问需要建立预测模型,常用的预测算法为ARIMA(一种时间序列分析算法)、随机森林、xgboost、神经网络(可以选择近几年的模型)等,第二、三问可以使用多目标规划,最终需要建立合适的决策模型。第四问需要对模型进行评价,可以使用AUC、一些评价类算法、灵敏度分析等方式对结果进行评价。此题难度较适中,开放度较高。(后续会出思路、代码、参考文献、参考论文等)


D题 航空安全风险分析和飞行技术评估问题(推荐选择,优先更新)
这道题目是传统的数据分析类题目。为了聚焦飞行安全问题,强化航空安全研究,综合利用现有数据强化科学管理,通过有针对性、系统性的管控手段有效提升从业人员的素质,监测和预警风险,进而降低飞行事故的发生几率。
第一问其实是对题目进行探索性数据分析并进行相关性分析,剩余会在早上更新思路的,题目比较经典,在其他比赛中基本每次都有类似题目,大家可以参考以往的相关论文,需要部分语文建模内容和可视化内容填充论文,使论文逻辑丰富有层次感。C君建议所有专业同学选择,难度较易,开放度较高。(后续会出思路、代码、参考文献等)


ABCD题思路如下:
D题思路:(示例)
2023MathorCup 高校数学建模挑战赛D题思路解析ABC:
2023Mathorcup高校数学建模挑战赛思路助攻汇总很高兴,2月份的美赛和去年的回答帮助了上千队伍,下面展示了去年美赛的回答:
2022年美赛C题思路下面将给到大家一些团队的国一选手之前的参赛经历及如何准备数学建模竞赛的方法:
本文非常适合各个阶段的建模er观看,干货满满!(超详细攻略,完整版在下方回答):

如何评价2022年数学建模国赛?
如下为2023美赛的分工建议:(类比一下,得到mathorcup分工)
比赛时间:2023年2月17日 6:00 ~ 2月21日 9:00
一、赛前一天,16日
17日晚上,保证充足睡眠。
二、比赛第一天,17日
选题阶段:
6:00下载和翻译题目,半小时内每个人翻译2

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2024-7-15 18:53 | 显示全部楼层
A 题 量子计算机在信用评分卡组合优化中的应用
附件 1 中共包含 100 张信用评分卡,每张卡可设置 10 种阈值之一,并对应各自的通过率与坏账率共 200 列,其中 t1 代表信用评分卡 1 的通过率共 10 项,h1 代表信用评分卡 1 的坏账率共 10 项,依次类推 t100 代表信用评分卡 100 的通过率,h100 代表信用评分卡 100 的坏账率。


根据上面的赛题说明及附件 1 中的数据,请你们团队通过建立数学模型完成如下问题 1 至问题 3。

问题一:
在 100 个信用评分卡中找出一张及其对应阈值,使最终收入最多,该问题可以转化为求解一个线性规划问题,该问题的模型可以表示为:

其中,x 是信用评分卡对应的收入特征,Q 是一组决策变量,它们对应着不同的阈值,Qx 表示每个阈值对应的收入特征的线性组合。
由于这是一个线性规划问题,我们可以使用 QUBO 形式进行求解。具体来说,我们可以将问题转化为一个优化器(optimizer)和一个目标函数(target function)的形式:
优化器的目标是最大化目标函数的值,而目标函数则是对每个决策变量求其对应的线性组合的导数。因此,我们可以将问题表示为:
最大化  
其中,y 是最终收入。
我们可以使用线性规划求解器(Linear Programming Solver)来求解这个问题。具体的求解步骤如下:
1. 初始化优化器和目标函数的值。
2. 对每个决策变量,计算其对应的线性组合的导数,并将其添加到目标函数中。
3. 重复步骤 2,直到所有决策变量的目标函数值都不发生变化。
4. 返回最终目标函数的值。
通过求解 QUBO 形式的问题,我们可以得到一张及其对应阈值的组合,从而实现使最终收入最多的目标。
当建模信用评分卡时,我们可以采用以下思路:
1. 确定特征:信用评分卡的特征通常包括年龄、性别、职业、收入、婚姻状况、教育程度、居住地区等。我们可以将这些特征视为变量,并将它们输入到模型中。
2. 确定模型:我们需要选择一个适当的模型来建模。常见的模型包括线性回归、逻辑回归、决策树、随机森林等。我们可以根据实际情况选择适合的模型。
3. 确定损失函数:损失函数是用于衡量模型预测结果与实际结果之间差异的函数。常见的损失函数包括均方误差(MSE)、交叉熵损失函数等。我们可以根据实际情况选择适合的损失函数。
均方误差(MSE):用于衡量模型预测结果与实际结果之间差异的损失函数。MSE的计算公式为:

   其中,n 是样本数量,yi 是第i个样本的预测结果,ŷi 是第i个样本的实际结果,2 是元素平方的符号。
4. 优化模型:我们需要使用优化算法来最小化损失函数。常见的优化算法包括梯度下降、随机梯度下降、共轭梯度法等。我们可以根据实际情况选择适合的算法。
交叉熵损失函数(Cross-Entropy Loss Function):用于衡量模型预测结果与实际结果之间差异的损失函数。交叉熵损失函数的计算公式为:
   交叉熵损失函数 =
   其中,P(y|x) 是模型预测的y与实际结果x之间的概率分布。
5. 预测新数据:使用已经训练好的模型来预测新数据。我们可以将新数据输入到模型中,并计算模型的预测结果。
6. 验证模型:使用验证数据集来验证模型的性能。我们可以将模型的预测结果与验证数据集的实际结果进行比较,以评估模型的性能。
我们可以建立一个基于线性规划的模型来求解。假设我们有一个目标函数 $f(x, y)$,其中 $x$ 表示信用评分卡的阈值,$y$ 表示最终的收入,我们通过优化这个函数来最大化我们的收益。
我们可以定义一个变量 $z_i$,它表示第 $i$ 个信用评分卡的通过率与坏账率。根据附件 1 中的数据,我们有以下方程:



接下来,我们可以定义一个 $x$ 变量 $u_i$,它表示第 $i$ 个信用评分卡对应的阈值。我们可以使用以下方程来约束 $u_i$:

最后,我们可以使用另一个 $x$ 变量 $v_i$ 来约束 :

将上述方程组转化为优化问题,我们可以使用线性规划求解器来求解:
  1. ```python
  2. import numpy as np
  3. from sklearn.linear_model import LinearRegression
  4. # 定义数据矩阵
  5. data = np.array([[t_1, t_1, t_1, t_1, t_1, t_1, t_1, t_1, t_1, t_1],
  6.                    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
  7.                    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
  8.                    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
  9.                    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
  10.                    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
  11.                    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
  12.                    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]])
  13. # 定义目标函数
  14. f = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  15.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  16.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  17.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  18.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  19.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  20.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  21.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
  22. # 定义约束条件
  23. u = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  24.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  25.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  26.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  27.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  28.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  29.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  30.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
  31. # 定义变量变量
  32. v = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  33.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  34.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  35.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  36.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  37.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  38.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  39.                    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
  40. #注:对应矩阵与变量通过题目给的文件处理,这里主要给个例子
  41. # 求解线性规划问题
  42. model = LinearRegression()
  43. # 求解最优解
  44. best_model = model.fit(data, v)
  45. best_value = best_model.predict(data[-1])
  46. # 输出最优解
  47. print("最优解为:", best_value[0])
复制代码
上述代码中,我们定义了一个数据矩阵 data,它包含了 100 个变量和 100 个约束条件。我们还定义了 10 个变量 和    分别表示第 i 个信用评分卡的通过率和坏账率。接下来,我们定义了目标函数 f 和约束条件 u。最后,我们定义了变量变量 v 和求解线性规划问题的代码。
将上述代码中的 u替换为 v,我们得到了一个关于信用评分卡阈值及其对应的收入的最大收益问题的线性规划模型,该模型可以用于预测收入。

问题 2:假设赛题说明 3 目前已经选定了数据集中给出的信用评分卡 1、
信用评分卡 2、信用评分卡 3 这三种规则,如何设置其对应的阈值,使最
终收入最多,请针对该问题进行建模,将模型转为 QUBO 形式并求解。
详见下面!
问题 3:从所给附录中 100 个信用评分卡中任选取 3 种信用评分卡,
并设置合理的阈值,使得最终收入最多,请针对该问题进行建模,并将模
型转为 QUBO 形式并求解。
详见下面!


持续更新!后续的思路来这里看!
2023 Mathorcup(A题)深度剖析|数学建模完整代码+建模过程全解全析

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-8 09:47 , Processed in 0.104015 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表