2020五一建模:C题 饲料混合加工问题 题解
我觉得蒸米的时候米与水的配比是一个NP-hard问题
问题一题解
分析
问题1研究16个加工原料两两之间的亲缘值,并进行统计分析。根据题目所给的16个加工原料的基因序列信息,进行两两比对,若两个加工原料有N个相同位点的基因序列标记相同,就认为这两个加工原料的亲缘值为N。用python进行编程编写计算亲缘度的函数,遍历所有原料两两之间的组合,统计他们的亲缘值并记录在一个16*16的方阵中,并做统计学分析。
求解
首先根据题目所给亲缘值定义:两个加工原料如果有 N 个相同位点的基 因序列标记相同,就认为这两个加工原料的亲缘值为 N(如果 N 大于 0,则说明 这两种加工原料之间具有亲缘关系)。由于两两原料之间没有先后顺序关系,故利用排列组合知识对每一种原料组合的亲缘度进行计算求解。
根据题目所给表 1 各加工原料的品种代码、总重量、效能率和基因序列标记,使用python编写程序计算得到一个16*16的方阵,对应任意两个加工原料间的亲缘度,并对数据进行处理。处理结果如图1,数据分析结果如图2。
根据图3、4可知,16种加工原料两两组合方式有120种,其中具有亲缘关系的加工原料两两组合种类有40种,亲缘值最小为1,最大为6,均值为3.0500。
问题二题解
分析
问题 2 要求将 16 种加工原料全部放入 9 个加工窖中进行加工,建立数学模型,求出能得出饲料质量最高的混合并给出每个加工包的亲缘度。仅从亲缘度角度考虑混合加工饲料的质量,亲缘度越高,饲料质量就越高,则问题二最终目标转化为求取亲缘度最优值问题,并给出饲料质量最高的混合方案。
将16种加工原料进行混合投放到9个加工窖中进行加工,根据亲缘关系进行组合,构成一个排列组合问题,但由于直接对所有组合求取全局最优解所需要时间代价太大,因此使用随机选取的方式来不断选取局部最大值,在局部优化的基础上找到近似的全局最优解。同时在选择方案时,需要考虑加工窖的质量范围约束。
求解
问题2要求将16种原料分别放入9个加工窖中进行加工,求出饲料质量最高的混合方案并给出每个加工包的亲缘度。问题二的假设是饲料质量仅取决于亲缘度,所以我们的优化目标就是使得不同的满足条件的分配,其亲缘度最大。
将16种原料分别放入9个加工窖中进行加工,这样的分配方案有很多种,每种方案的加工包亲缘度也不同,分配方案具有随机性质。又因为直接进行全局考虑十分耗时,代码的运行时间超出实际承受范围。因此我们在最终处理的循环中可以考虑使用随机选取的方式来不断选取局部最大值,在局部优化的基础上找到近似的全局最优解。
目标函数的建立:
最终的优化对象为总亲缘值,即
K = ∑ i = 1 9 K i × W i ∑ i = 1 9 W i K=\frac{\sum_{i=1}^9K_i \times W_i}{\sum_{i=1}^9W_i} K=∑i=19Wi∑i=19Ki×Wi
其中, W i W_i Wi表示第i个加工包的加工重量
W i = ∑ j = 1 16 w i j × E j W_i=\sum_{j=1}^{16}w_{ij}\times E_j Wi=j=1∑16wij×Ej
混合的方案则为 w i j w_{ij} wij
原料总重量:
W M j = ∑ i = 1 9 w i j WM_j=\sum_{i=1}^9 w_{ij} WMj=i=1∑9wij
加工包总重量:
W C i = ∑ j = 1 16 w i j WC_i=\sum_{j=1}^{16} w_{ij} WCi=j=1∑16wij
加工包总重量要符合加工窖标准:
P i m ≤ W C i ≤ P h m P_{im}\le WC_i \le P_{hm} Pim≤WCi≤Phm
n=1时,加工窖只有一种原料,重量要超过500kg:
W C i ≥ 500 , n = 1 WC_i \ge 500,n=1 WCi≥500,n=1
j=10时,原料10必须混合才能加工:
W C i − w i j > 0 , j = 10 , n ≥ 2 WC_i-w_{ij}>0,j=10,n \ge 2 WCi−wij>0,j=10,n≥2
只有一种原料时亲缘值为10:
K i = 10 , n = 1 K_i=10,n=1 Ki=10,n=1
加工包必须任意两个原料亲缘值不为0:
C i ∈ B C_i \in B Ci∈B
根据上述条件建立问题2的优化模型,即:
m a x K = ∑ i = 1 9 K i × W i ∑ i = 1 9 W i max \quad K=\frac{\sum_{i=1}^9K_i \times W_i}{\sum_{i=1}^9W_i} maxK=∑i=19Wi∑i=19Ki×Wi
s . t . { W i = ∑ j = 1 16 w i j × E j W C i = ∑ j = 1 16 w i j P i m ≤ W C i ≤ P h m W C i ≥ 500 , n = 1 W C i − w i j > 0 , j = 10 , n ≥ 2 K i = 10 , n = 1 C i ∈ B s.t.\left\{ \begin{aligned} W_i&=\sum_{j=1}^{16}w_{ij}\times E_j \\ WC_i&=\sum_{j=1}^{16} w_{ij}\\ P_{im}&\le WC_i \le P_{hm}\\ WC_i &\ge 500,n=1\\ WC_i&-w_{ij}>0,j=10,n \ge 2\\ K_i&=10,n=1\\ C_i &\in B \end{aligned} \right. s.t.⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧WiWCiPimWCiWCiKiCi=j=1∑16wij×Ej=j=1∑16wij≤WCi≤Phm≥500,n=1−wij>0,j=10,n≥2=10,n=1∈B
模型求解:
1. w i j w_{ij} wij分配的求解过程:考虑不同混合方案对 w i j w_{ij} wij分配不同,每种个原料都可以拆分,因此以每一种原料重量的1/10为步长进行循环迭代,结合随机数的选取,不停的考虑不同情况的分配,直至求到局部最优解。
2.根据1求解后的结果,读取亲缘值表,计算出各加工窖的亲缘值,最终求得总亲缘值。
求解结果:
模型优化求解后,可得按权重平均后的亲缘度为4.845937217,此时的饲料加工配比图如下图所示,即饲料加工质量最高的配比情况。经检验该配比满足所有的约束条件。
问题三题解
分析
问题 3 是将16 个加工原料进行混合全部放入9个加工窖中,求出平均效能率超过 80%的加工包数量最多的混合方案并给出每个加工包的效能率。问题三的求解与问题二类似,可以在问题二的基础上改变目标函数和约束条件,寻找加工原料的最优混合方案。
问题中包含16种元素,9个加工窖。假设在加工原料混合方案确定后,将混合原料投放到9个加工窖形成 9 个加工包,每一个加工包都有一个效能率。 因此需建立起优化目标函数,在问题2的基础之上结合题目所给的约束条件