2022华为杯D题完整详细思路建模和程序

问题一思路

本问题的赛题总共包括两个子问题,需要同学们在满足上述数据依赖、控制依赖、以及各具体子问题的资源约束条件下进行资源排布,并充分考虑各子问题的优化目标,以求最大化芯片资源利用率。
问题1:给定资源约束条件如下:
(1)流水线每级的TCAM资源最大为1;
(2)流水线每级的HASH资源最大为2;
(3)流水线每级的ALU资源最大为56;
(4)流水线每级的QUALIFY资源最大为64;
(5)约定流水线第0级与第16级,第1级与第17级,…,第15级与第31级为折叠级数,折叠的两级TCAM资源加起来最大为1,HASH资源加起来最大为3。注:如果需要的流水线级数超过32级,则从第32开始的级数不考虑折叠资源限制;
(6)有TCAM资源的偶数级数量不超过5;
(7)每个基本块只能排布到一级。
在上述资源约束条件下进行资源排布,并以占用的流水线级数尽量短为优化目标。请给出资源排布算法,输出基本块排布结果,输出的结果格式如下
在这里插入图片描述
思路解析:D题显然是一个混合整数规划问题。
针对子问题一:
Step1:因为我们的目标是确定板块的最小数量,但如果设置一个整数变量表示板块的数量作为决策变量会对后续的约束条件的挖掘和设置造成巨大干扰。因此设置变量c 表示每个板块。针对于本问,我们可以设置较大长度的板块数量(长度可以自己确定,比如80),然后在这个基础上建立0,1变量。
在这里插入图片描述
在这里插入图片描述
Step2: 寻找约束条件
这里最好对数据进行先进行处理,比如附件三的数据,最好设置成一个0,1变量的矩阵表示是否可以链接。这样方便我们对每一个板块里面的基本信息进行控制。这里可以设置一个二维变量,比如aij,i表示第i个板块,j表示第j个基本块。
在这里插入图片描述
通过上述式子,这样就可以控制每个板块里面的基本块信息了。之后还需要根据它们的链接关系进行板块顺序的调整,其中数据三有向的基本块链接信息就决定了相邻板块之间,后一板块的任意基本块必须可以被上一板块的某一基本块链接(类似旅行商)。最后用Σaij控制ci时可以采用大M法对其控制(技巧)。这样比较隐藏的约束条件就找齐了,剩下的就是题目给出的约束条件了,这里就不在过多重述。

综合以上建模思路即可建立混合整数规划模型。在模型求解这里推荐的编程语言不要用lingo,matlab的原始求解器。因为数据量太大,属于大型整数规划,求解速度会非常大,最好用python,或者用智能优化算法去近似求解,运行速度快一些。(有条件的同学可以用并行计算在服务器上跑)

可能有些同学觉着控制约束比较少,因为以上这些都是重点也是难点。其他约束都在子问题下写的非常清楚,就没有必要再重复一遍了。如果有什么问题大家可以在评论区留言,我们会继续为大家服务。

最后强调一下,以上思路均是建模思路,临时不提供代码,祝各位同学获得优异成绩。

问题一建模过程和代码

建模:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
程序是python写的,获取方式:下方卡片加微信,文章放不了链接。

问题二思路

在这里插入图片描述

问题二程序

建模实在不想写了,复杂。。。只写了程序,其中一部分如下:
在这里插入图片描述
反正两个问题都是用gurobipy求解的。

获取方式:下方卡片加微信,文章放不了链接。

猜你喜欢

转载自blog.csdn.net/weixin_46211269/article/details/127218630
今日推荐