记录一下研究生第一次参加数模的心路和思路历程
比赛时间:
5月21日8:00-5月25日9:00
赛前准备:
本科期间只参加过校级比赛,数模基础很差。疫情结束返校是5月17日,所以这次比赛属于边赛边准备,做好了充当分母的准备。
- 找队友,直接在实验室找了两个同门,大家数模基础都是半斤八两。
- 报名,然后官网会提供往年的题目和去年的优秀论文,熟悉出题规律和论文书写套路和格式。
- 准备,好在大家都有Matlab和python的基础,所以主要准备一些数模常用的算法。推荐《MATLAB在数学建模中的应用》(卓金武)这本书,我们就是分工分别看了一下组合优化算法(粒子群、遗传算法)、评价算法(熵权法、层次分析法)等。
选题:
mathorcup是研究生可以从A、B中选择一道,今年两道题都是数据分析题,这种题相比于组合优化,对参赛者的基础要求也低一些,这也是我们走运的地方吧。一般是花费一个上午时间确定选题,但我们可能看完题就选完了,首先A题思路比较清晰,其次B题没有提供数据集还需要自己找,而且感觉题目要求也更偏向经管类,最后几个同学的初步意愿也是A题。
问题描述:
A题涉及了一个新概念:无车承运人平台,该平台需要根据不同的货运任务给实际货车承运人提出报价,目标就是花费更少的成本让所有任务都完成。过程中可以对报价进行调价以确保任务被承接。同时题目附带了一个历史货运成交数据集,数据集行为1万6千多个任务,列为其对应的63个任务信息,其中包括很关键的总里程、交易时长、需求紧急程度等信息,也包括不太重要的交易创建时间等信息。以下为题目的四问:
- 通过定量分析的方法,研究影响无车承运人平台进行货运线路定价的主要因素有哪些。
- 根据附件1数据,建立数学模型,对历史交易数据中的定价进行评价。
- 建立关于线路定价的数学模型,给出附件2的线路任务的三次报价及总成本定价,给出调价策略并评价给出定价。
- 根据研究结果,给无车承运平台提出合理可性的建议。
思路:
这个题目涉及到了两种价格,即 线路的成本价 和 给出的报价。影响两种价格的因素是不完全一样的,比如线路成本价就不会和需求紧急程度、调价类型等因素相关,通过剥离出与之相关的量并找到数学关系,我们就可以根据几个变量预测线路成本价;
那么接下来就只需要考虑三次报价分别是多少了?
我们的出价策略是:第一次逼近历史成交价格下限,第二次采用预测成交价即合理价,第三次采用历史成交价格上限以保证交易不会黄掉。
但这显然是不合理的,举个例子,比如一次短途货运的第三次报价却是历史最高价(长途+非常紧急需求)以保证不流单。
所以我们不再考虑预测报价,转而预测调价比例。这样的话,如果历史交易中只要把价格定为成本价的3倍,任务就一定会成交,那么针对短途货运就可以将第三次报价设为其3倍(后续还要删除过大的离群值来找到这个倍数)。
所以我们通过历史交易来得到预测调价比例的模型,针对给定新的任务信息算出调价比例,将其与成本价相乘即为预测成交价即为第二次报价,再通过记录下历史中的最小和最大调价比例,就能得到第一次和第三次报价。
具体方法:
第一问:
首先对附件1数据集进行预处理(空数据、汉字信息、非连续量、归一化),由于不熟悉数据处理的题,这一步在我们实际比赛中花费了大量的时间,后续还随着对题目了解的深入反复调整数据集。得出新数据集后,利用python进行相关性的热力图分析(用这个方法主要是因为结果图好看)
然后利用SPSS中的因子分析法对筛选后的16个指标进行降维,最终会得到一个成分矩阵,在每一个成分中找到与其显著正相关的指标,即为最后分析出的:影响线路成本价的重要影响因素。
第二问:
需要建立评价模型,评价指标为快速促进成交和较低的承运成本,从附件数据中可以直接转换成交易完成时间和调价比例。这一问一开始尝试用层次分析法,但是发现评价指标只有两项,构建权重矩阵后会抵消;尝试熵权法又只能单纯的给所有任务打分,并不能得到区分任务的定价为优、良、差;所以最后查资料选择了主观评价法的秩和比方法。
第三问:
这一问是A题的核心了,思路在前面已经写了。具体的,我们在SPSS中利用多元线性回归并结合第一问中的重要因素,求出了线路成本价的预测模型。然后就是预测调价比例了。我们通过相关性分析发现调价比例与调价类型直接相关,调价类型本身只有调高、调低和不调整三种情况,当不调整价格时,定价直接为线路成本价取整,故忽略此情况后,调价类型可以变为0-1分类问题。于是我们利用数据集对BP神经网络进行训练,让其可以预测调价类型并将其分为调低0和调高1。随后再次利用SPSS的多元线性回归,结合调节类型、交易对象、是否续签、地区类型,预测具体的调价比例数值。
- 蓝色散点为附件1历史实际调价比例,其中应该包含历史中调价比例的最大值和最小值;
- 橙黄色实线为回归调价比例,即我们通过附件1数据得出的预测模型,其应该接近大部分蓝色散点;
- 橙黄色虚线为调整调价比例,A、B为历史数据集离拟合预测曲线偏差较大(正向、反向偏差)的两个点,也就是说当拟合曲线补足这个偏离量时,应包括了调价比例的波动范围。
- 红色、黑色实线为调价比例上下限,即为防止调价比例偏差幅度太大而用历史数据集中的调价比例最大最小值。
所以在matlab中计算历史数据集与预测模型的偏离值,去除部分离群点后得到调价比例上下限,即为第三次和第一次调价比例值。
第四问:
语文建模,结合预测模型、评价模型和结果提提意见就可以了。
总结:
- 本次比赛也只在最后一晚通宵了,早上六点提交了论文和支撑材料。
- 由于三个人都是第一次参加数模国赛,也没有做过数据处理类的题目,第一天花费了很多的时间在寻找思路,中途想放弃也及时刹住了车,多亏了师兄等人的指导。
- 对数据预处理的步骤还没理清楚就开工了,导致后期数据集不够完善又要增补删改。
- 文件、数据、代码管理混乱,最后一天的晚上手忙脚乱。
- 结果还不错,拿了一个二等奖。我一定好好学数模,备战华为杯~