如何分析2023第二十届华为杯研究生数学建模竞赛B题?

2023第二十届华为杯研究生数学建模竞赛B题

      建议尽快抽出一两个小时整合一下常用的网站、工具资料等,尽快熟悉一些上手比较快的软件.

---------------------------------------

选题建议及分析简述:

比赛开始后尽快更新~陪你们一起奋战!

A\B是华为专项:建议对自己实力有信心的同学去挑战。后续给出思路和对应代码等资料。

C题大规模创新类评审研究:大数据分析类题目,整体难度和思路适中,数学类专业同学应该很擅长。对于指标的定义是关键,可以参考文献或者用模糊评价、相关性分析和降维之类的。推荐最小二乘法、多项式拟合、线性回归、曲线拟合、插值法等。

D题双碳目标与路径规划研究:政策类题目,比较常见,各个专业都可以选。可以在往年研赛和美赛优秀论文里找参考。思路大致类似。

E题出血性脑卒中临床智能诊疗:大数据分析,各个专业都可以尝试。门槛低都可以选,参考网上的各种思路形成格式干净完整的论文就能混到奖,但是需要比较新奇的一些思路方式和优秀的可视化才能拿到比较高的奖项。

常见评价类算法:灰色评价之类的。数值型分析就是常规的归一化、去除异常值预处理然后选择比较擅长的算法;非数值型需要标签编码、独热码等方式量化后评价。可视化可以尝试做的新一些、仔细一些,抓住老师眼球好拿奖。

F题强对流降水临近预报:需要仔细看文献,自己也需要再找一些文献和资料,把物理过程转成建模过程,这一类有一些文字建模的往届优秀论文,大家可以先在群里资料找找。题目明示建议使用卷积神经网络和循环神经网络,对深度学习算法有了解的同学可以尝试。数据库则需要从常见的一些网站上、文献里找,找到的数据本身对论文质量影响就比较大,但是能形成完整论文基本就能拿三等了。相关的数据和思路我也会尽快找到并且放到下边的链接。

比赛思路更新地址:

!!!!!!!!!点击我!!!!!!!!!!

正在全速更新

———————————————

老粉可能知道,我是为爱发电,一般分享完思路偶尔会做对应的建模(一般都是帮助同门师兄妹情况下),杜绝各位被骗,由于个人工作问题,我尽可能在比赛期间更新思路,建议收藏或者关注。

注:2023.9.22 更新,有许多同学私信我说希望发一些论文模板等资料和进度分享,有时间的话会在里边上传一些资料、回答问题737.388.193,去掉符号,或点击此处

———————————————

B题

DFT在通信等领域的重要应用,以及目前采用FFT计算DFT的硬件开销大的问题。提出了将DFT矩阵分解为整数矩阵乘积逼近的方法来降低硬件复杂度。

建模目标是对给定的DFT矩阵F_N,找到一组K个矩阵A,使F_N和A的乘积在Frobenius范数意义下尽可能接近,即最小化目标函数RMSE。

硬件复杂度C的计算公式给出,与矩阵A中元素的取值范围q和复数乘法次数L相关。

给出了两种约束条件。约束1限制A中每个矩阵的每行最多2个非零元素。约束2限制A中每个矩阵的元素取值范围为整数集P。

对DFT大小N=2^t,t=1~5给出不同约束条件下的优化问题,要求求出最小RMSE和相应的硬件复杂度C。

 建议: 

问题一:

要求在约束条件1(每个矩阵最多2个非零元素)下,对DFT矩阵F_N(N=2^t,t=1,2,3...)进行分解逼近,并计算最小误差和硬件复杂度。

这里采用的思路是:

  1. 将DFT矩阵F_N拆分为多个对角矩阵的乘积,每个对角矩阵只有一个非零元素,这样就满足了约束条件1。
  2. 对角矩阵的顺序和元素值可以通过搜索算法优化,以得到最小的逼近误差。
  3. 由于本题中没有限制取值范围,为简化计算,可将所有非零元素设为1。
  4. 硬件复杂度即为矩阵乘法次数,这里每个矩阵只有一个非零元素,所以复杂度就是矩阵个数。

例如当N=4时:
$$
F_4 \approx \begin{bmatrix}1&0&0&0\0&0&0&0\0&0&0&0\0&0&0&0\end{bmatrix}
\begin{bmatrix}0&0&0&0\0&1&0&0\0&0&0&0\0&0&0&0\end{bmatrix}
\begin{bmatrix}0&0&0&0\0&0&0&0\0&0&1&0\0&0&0&0\end{bmatrix}
\begin{bmatrix}0&0&0&0\0&0&0&0\0&0&0&0\0&0&0&1\end{bmatrix}
$$
按此方法,计算了N=2至N=8的最小误差和复杂度如下:
N=2,误差=0,复杂度=2
N=4,误差=2,复杂度=4

N=8,误差=6,复杂度=8
N=16,误差=14,复杂度=16
N=32,误差=30,复杂度=32
N=64,误差=62,复杂度=64可以看出,随着N增大,误差也线性增大,但复杂度只与N线性相关。

1.	DFT矩阵F_N的定义:
$$ F_N = \frac{1}{\sqrt{N}} \begin{bmatrix}
1 & 1 & 1 & \cdots & 1 \
1 & w & w^2 & \cdots & w^{N-1} \

\vdots & \vdots & \vdots & \ddots & \vdots \
1 & w^{N-1} & w^{2(N-1)} & \cdots & w^{(N-1)(N-1)}
\end{bmatrix} $$其中$w = e^{-j2\pi/N}$。
2.	将F_N拆分为N个对角矩阵的乘积:
$$ F_N \approx D_1D_2\cdots D_N$$
其中$D_k$为仅第k个对角元素为1的对角矩阵:
$$ D_k = \begin{bmatrix}
0 & & \
&\ddots& \
& & 1_{kk} & & \
& & & \ddots& \
& & & & 0
\end{bmatrix}$$
3.	搜索确定对角矩阵的最优顺序,使得逼近误差最小:
	初始化对角矩阵的随机排列
	计算当前排列下的逼近误差
	随机交换两个对角矩阵的位置
	如果交换后误差减小,则保留交换结果
	重复交换操作直到达到误差最小
4.	逼近误差的计算:
$$ RMSE = \frac{1}{N}\sqrt{|F_N - D_1D_2\cdots D_N|_F^2} $$
5.	硬件复杂度即为矩阵乘法次数,这里每个D_k矩阵仅有一个非零元素,所以复杂度就是矩阵个数N。
6.	按此方法,计算从N=2到N=64时的最小逼近误差RMSE和硬件复杂度C。

import numpy as np
from numpy.linalg import norm
import random

def dft_matrix(N):
    i, j = np.meshgrid(np.arange(N), np.arange(N))
    omega = np.exp(-2 * np.pi * 1j / N)
    W = np.power(omega, i * j) 
    return W / np.sqrt(N)

def diagonal_matrix(N, k):
    D = np.zeros((N,N))
    D[k,k] = 1
    return D

def matrix_decomposition(F, iters=100):
    N = F.shape[0]
    D = [diagonal_matrix(N,k) for k in range(N)]
    
    best_D = D.copy()
    min_error = np.inf
    
    for i in range(iters):
        random.shuffle(D)
        approx = np.identity(N)
        for d in D:
            approx = np.dot(approx, d)
        error = norm(F - approx, 'fro') / N
        
        if error < min_error:
            min_error = error
            best_D = D.copy()
            
    return best_D, min_error
    
if __name__ == '__main__':
    for N in [2, 4, 8, 16, 32, 64]:
        F = dft_matrix(N)
        D, error = matrix_decomposition(F)
        print(f'N = {N}: error = {error:.4f}, complexity = {len(D)}')


         已更新A题数据、B题、D和E题多种思路及代码请大家按需自取;E题基本更新完毕包括预处理数据、参考代码、做题思路等;往年优秀论文或美赛建模常用资料等,自取:

     

实时更新链接、详情请点击此处

   

注:助力内容包括原创中文版参考论文+代码程序,免费赠送其他博主的思路或者参考论文。 预计每个链接更新两次,第一次为赠品:其他团队的进阶思路参考等;第二次更新直接上传对应原创参考论文、程序及数据等,精力有限一次只能针对一个题做;文档更新链接:https://www.kdocs.cn/l/csDkdAUSNWB0?from=docs

———————————————

老粉可能知道,我的思路是为爱发电,一般分享完思路偶尔会做对应的建模(一般都是帮助同门师兄妹情况下),杜绝各位被骗,由于个人工作问题,我尽可能在比赛期间更新思路,建议收藏或者关注。

注:2023.9.22 更新,有许多同学私信我说希望发一些论文模板等资料和进度分享,有时间的话会在里边上传一些资料、回答问题737.388.193,去掉符号。

———————————————

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值