我是鹿鹿学长,就读于上海交通大学,截至目前已经帮2000+人完成了建模与思路的构建的处理了~
本篇文章是鹿鹿学长经过深度思考,独辟蹊径,实现综合建模。独创复杂系统视角,帮助你解决研赛的难关呀。

完整内容可以在文章末尾领取!

为了有效解决第一个问题——励磁波形分类,我们需要依赖于附件一中给出的磁通密度数据进行分析,并通过特征提取和分类模型实现对三种励磁波形(正弦波、三角波和梯形波)的识别。以下内容将详细阐述该问题的分析步骤和模型构建。

2024年华为杯数学建模研赛(C题) 建模解析| 磁芯损耗建模 | 小鹿学长带队指引全代码文章与思路-LMLPHP

1. 磁通密度分布特征及波形形状特征提取

1.1 数据预处理

首先,我们从附件一中获取用于分类的磁通密度数据。磁通密度的采样为1024个点,表示一个完整的周期。为了分析波形的不同特征,我们将磁通密度数据进行归一化处理,使得其取值范围在[0, 1]之间,以消除不同波形间的幅度影响。

1.2 特征提取

我们将从磁通密度的时间序列中提取一些关键特征,包括但不限于:

  • 均值(Mean):反映波形的直流分量。
  • 标准差(Standard Deviation):反映波形的波动程度。
  • 最大值(Max)和最小值(Min):用于分析波形的动态范围。
  • 峰值因子(Crest Factor):计算公式为 Crest Factor = Peak Value RMS Value \text{Crest Factor} = \frac{\text{Peak Value}}{\text{RMS Value}} Crest Factor=RMS ValuePeak Value,可用于区分形状特征。
  • 自相关系数(Autocorrelation):用于分析波形的周期性。
  • 傅里叶变换参数 (Fourier Transform):频域特征提取,判断波形的各次谐波成分。

通过这些特征,我们可以构建出一个多维特征空间来进一步分析。

2. 分类模型构建

我们将使用机器学习算法,如随机森林(Random Forest)或支持向量机(Support Vector Machine,SVM),来训练模型进行波形分类。选择随机森林的原因在于它在复杂特征空间中的表现通常较好,并且能够处理特征间的非线性关系。

2.1 数据集划分

我们将数据分为训练集(依据附件一的四个数据表)和测试集(依据附件二)。训练集用于模型训练,而测试集用于验证模型的预测能力。

2.2 模型训练

以提取的特征作为输入,目标变量为励磁波形类型(正弦波、三角波、梯形波),使用随机森林进行训练:

  1. 设定分类器的参数,如树的数量和最大深度。
  2. 训练模型并使用交叉验证(如k-fold)来避免过拟合。
2.3 模型评估

使用精度(Accuracy)、召回率(Recall)和F1-score等指标评估分类器的性能。此外,绘制混淆矩阵以直观展示各类别之间的识别准确性。

3. 分类结果应用

对附件二中的样本,我们使用构建的分类模型进行波形识别,并将结果填入附件四的第二列中,标记方法如下:1表示正弦波,2表示三角波,3表示梯形波。接下来需求统计各个波形的数量并呈现特定样本的分类结果。

2024年华为杯数学建模研赛(C题) 建模解析| 磁芯损耗建模 | 小鹿学长带队指引全代码文章与思路-LMLPHP

4. 结果统计与示例展示

分类后,我们统计得到三种波形的数量并记录在论文正文中。例如:

  • 正弦波数量:X
  • 三角波数量:Y
  • 梯形波数量:Z

特定样本的分类结果如下表所示:

结论

通过上述分析与建模,我们能够有效识别励磁波形的类型。这为进一步分析磁芯损耗特性和优化磁性元件设计打下了基础。其方法不仅能在理论上提升对磁芯损耗的理解,同时也能在实际应用中提高功率变换器的设计效率。

附录

在整个过程中,建议使用Python中的

问题一:励磁波形分类

1. 磁通密度的分布特征分析

为了分析磁通密度的分布特征,我们需要从附件一中提取磁通密度数据,并绘制其波形图。在此基础上,需要计算一些反映磁通密度随时间变化的统计特征,包括,但不限于:

  • 均值 ( μ \mu μ): 描述磁通密度的中心位置。

μ = 1 N ∑ i = 1 N B ( t i ) \mu = \frac{1}{N} \sum_{i=1}^{N} B(t_i) μ=N1i=1NB(ti)

  • 标准差 ( σ \sigma σ): 衡量磁通密度的波动范围。

σ = 1 N ∑ i = 1 N ( B ( t i ) − μ ) 2 \sigma = \sqrt{\frac{1}{N} \sum_{i=1}^{N} (B(t_i) - \mu)^2} σ=N1i=1N(B(ti)μ)2

  • 峰度和偏度: 描述波形的尖锐程度和对称性。

  • 波形特征变量:可以提取的特征变量包括最大值、最小值、零交越点、波峰与波谷的个数等。

2. 形状特征变量提取

提取的特征将在波形分类中起到重要作用。可以提取以下特征变量:

  • 最大磁通密度 ( B m a x B_{max} Bmax): 整个波形中的最高点。

B m a x = max ⁡ ( B ( t i ) ) B_{max} = \max(B(t_i)) Bmax=max(B(ti))

  • 最小磁通密度 ( B m i n B_{min} Bmin): 整个波形中的最低点。

B m i n = min ⁡ ( B ( t i ) ) B_{min} = \min(B(t_i)) Bmin=min(B(ti))

  • 周期 ( T T T): 波形的完整周期。

  • 斜率 ( s s s): 描述波形上升和下降的陡峭程度。

  • 波形面积 ( A w a v e A_{wave} Awave): 波形一次完整周期内的面积,计算公式为:

A w a v e = ∫ 0 T B ( t ) d t A_{wave} = \int_0^T B(t) dt Awave=0TB(t)dt

3. 建立分类模型

在特征提取后,可以采用机器学习算法建立分类模型。以下给出一个基本的分类模型步骤:

  1. 数据准备: 使用提取的特征变量作为输入变量,波形的类型(正弦波、三角波和梯形波)作为标签进行训练。
  2. 选择模型: 可以使用支持向量机(SVM)、决策树(DT)、随机森林(RF)或深度学习模型进行分类。
  3. 训练模型: 将训练集进行划分,训练分类模型。
  4. 验证模型: 用交叉验证(如K折交叉验证)评估模型的精度,确保模型的泛化能力。
4. 对附件二样本进行波形识别

使用训练好的模型对附件二中的样本进行波形分类,并将识别的波形类型填入附件四的相应位置。

5. 统计各波形数量

统计附件二中三种波形的数量,并提供结果。一旦完成分类,结果表格将列出:

6. 特定样本的结果展示

表格形式展示特定样本(样本序号1、5、15、25、35、45、55、65、75、80)的分类结果:

注意事项

  • 请在实现过程中使用合适的编程语言(如Python,使用Scikit-learn库)进行数据处理和模型构建。
  • 确保准确记录每一步过程,并保存训练和测试的结果。
  • 统计数量与结果表格应该在最终的论文中有清晰的呈现。

通过上述步骤,我们可以有效地识别出不同的励磁波形,并统计其数量。
为了解决第一个问题“励磁波形分类”,我们需要首先提取磁通密度的形状特征,然后利用这些特征建立分类模型来识别三种励磁波形(正弦波、三角波和梯形波)。以下是一个基于Python的示例代码,这段代码使用了pandas来处理数据,numpy来进行数值计算,同时使用scikit-learn中的分类模型(如随机森林)来进行样本分类。

import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
import glob

# 读取数据
data_frames = []
for file in glob.glob("附件一/*.xlsx"):  # 假设附件一的数据在这个文件夹下
    df = pd.read_excel(file)
    data_frames.append(df)

# 合并所有磁芯材料的数据
data = pd.concat(data_frames)

# 提取特征:计算一些统计特征
def extract_features(df):
    features = {}
    features['mean'] = np.mean(df.values)
    features['std'] = np.std(df.values)
    features['max'] = np.max(df.values)
    features['min'] = np.min(df.values)
    features['rms'] = np.sqrt(np.mean(np.square(df.values)))  # 均方根值
    features['peak'] = np.max(np.abs(df.values))  # 峰值
    return features

# 提取特征并形成特征矩阵
features_list = []
labels = []
for index, row in data.iterrows():
    temp_features = extract_features(row[4:])  # 磁通密度从第5列开始
    features_list.append(temp_features)
    labels.append(row[3])  # 励磁波形类型在第4列

# 将特征和标签转换为DataFrame
feature_df = pd.DataFrame(features_list)
label_df = pd.DataFrame(labels, columns=['waveform'])

# 将数据分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(feature_df, label_df['waveform'], test_size=0.2, random_state=42)

# 训练分类器
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train, y_train)

# 预测测试集
y_pred = clf.predict(X_test)

# 输出分类结果
print(classification_report(y_test, y_pred))

# 对附件二中的样本进行波形分类
test_samples = pd.read_excel("附件二.xlsx")  # 读取附件二中的测试样本
test_features = []

for index, row in test_samples.iterrows():
    temp_features = extract_features(row[4:])  # 磁通密度特征提取
    test_features.append(temp_features)

test_feature_df = pd.DataFrame(test_features)
test_predictions = clf.predict(test_feature_df)

# 将结果填入附件四
test_samples['classified_waveform'] = test_predictions
test_samples.to_excel("附件四.xlsx", index=False)  # 保存预测结果

# 统计各个波形的数量
waveform_counts = test_samples['classified_waveform'].value_counts()
print(waveform_counts)

# 打印特定样本的分类结果
specific_samples = [1, 5, 15, 25, 35, 45, 55, 65, 75, 80]
specific_results = test_samples[test_samples.index.isin(specific_samples)]
print(specific_results[['样本序号', 'classified_waveform']])

第二个问题是关于修正斯坦麦茨方程(Steinmetz-equation)。具体描述如下:

问题二 斯坦麦茨方程(Steinmetz-equation)修正

在传统磁芯损耗模型中,斯坦麦茨方程(Steinmetz-equation)虽作为经典模型被广泛应用,却显著受限于其特定的适用条件,如:该方程主要针对正弦波形设计;对于不同种类的磁芯材料及工作温度的变化,SE方程会造成较大的误差,这在实际工程应用中带来了诸多不便与复杂性。目前已经有针对非正弦波形下磁芯损耗模型进行修正(见公式(7)、(8))。

请通过分析斯坦麦茨方程(公式(2)),在同一种磁芯材料、正弦波形下,对于不同温度变化,磁芯损耗预测效果存在的差异性,构造一种可适用于不同温度变化的磁芯损耗修正方程(即在原斯坦麦茨方程基础上,增加温度这个因素,以适应不同温度变化,使磁芯损耗预测效果更好);并以附件一材料1中正弦波形的数据为例,分析你构造的修正方程与斯坦麦茨方程,他们预测磁芯损耗的效果(误差)哪个更好?

2024年华为杯数学建模研赛(C题) 建模解析| 磁芯损耗建模 | 小鹿学长带队指引全代码文章与思路-LMLPHP

问题二:斯坦麦茨方程(Steinmetz-equation)修正

在传统的斯坦麦茨方程(Steinmetz-equation,SE)中,磁芯损耗 P c o r e P_{core} Pcore被表示为:

P c o r e = k ⋅ f a ⋅ B m a x b P_{core} = k \cdot f^a \cdot B_{max}^b Pcore=kfaBmaxb

其中:
- P c o r e P_{core} Pcore为磁芯损耗(单位:W/m³)
- k k k为材料相关的系数
- f f f为频率(单位:Hz)
- B m a x B_{max} Bmax为磁通密度的峰值(单位:T)
- a a a b b b为经验系数

该方程在正弦波励磁下具有一定的准确性。然而,当温度变化时,尤其在高温情况下,材料的磁性特性发生变化,导致斯坦麦茨方程的预测效果显著下降。因此,有必要对该模型进行修正,以考虑温度的影响。

修正方程构造

为此,我们在原斯坦麦茨方程的基础上引入温度 T T T(单位:°C),构造修正方程如下:

P c o r e ′ = k ( T ) ⋅ f a ⋅ B m a x b P_{core}' = k(T) \cdot f^a \cdot B_{max}^b Pcore=k(T)faBmaxb

其中 k ( T ) k(T) k(T)是根据温度进行修正的系数,可以根据实验数据拟合得到。假设 k ( T ) k(T) k(T)线性变化,则可以表示为:

k ( T ) = k 0 + k 1 ⋅ ( T − T 0 ) k(T) = k_0 + k_1 \cdot (T - T_0) k(T)=k0+k1(TT0)

其中 k 0 k_0 k0为基准温度 T 0 T_0 T0下的系数, k 1 k_1 k1为温度变化引起的基准系数的梯度。

数据分析

为分析修正方程与斯坦麦茨方程的效果,我们需要使用附件一中材料1的数据。我们将尝试以下步骤:

  1. 数据准备和清洗:选择正弦波励磁的数据,提取频率、磁通密度的峰值和在不同温度下的磁芯损耗值。
  2. 参数拟合
    • 对斯坦麦茨方程的参数 k k k a a a b b b进行拟合。
    • 对修正方程的参数 k 0 k_0 k0 k 1 k_1 k1进行拟合,以找出温度对损耗的影响。
  3. 模型预测
    • 使用斯坦麦茨方程和修正方程分别预测磁芯损耗 P c o r e P_{core} Pcore P c o r e ′ P_{core}' Pcore
  4. 误差分析
    • 计算预测结果与实测值之间的绝对误差和相对误差。
结果与比较

通过拟合与预测,我们假设得到了如下的结果(具体数值需通过计算得出):

  • 对于斯坦麦茨方程的预测结果:

    • 平均误差 E S E = 平均 ( P c o r e ′ − P c o r e ) E_{SE} = \text{平均}(P_{core}' - P_{core}) ESE=平均(PcorePcore)
  • 对于修正方程的预测结果:

    • 平均误差 E 修正 = 平均 ( P c o r e ′ − P c o r e ′ ) E_{修正} = \text{平均}(P_{core}' - P_{core}') E修正=平均(PcorePcore)

根据结果分析,可以得出:

  • 如果 E 修正 < E S E E_{修正} < E_{SE} E修正<ESE,则修正方程的预测效果更佳,能够更准确地反映温度对磁芯损耗的影响。
  • 使用修正方程后,损耗预测的准确性得到了提高,研究生也能够更好地设计磁性元件以优化其性能。

总结

根据以上分析,构造的修正斯坦麦茨方程能够更有效地预测不同温度下的磁芯损耗,尤其适用于电力电子领域中的高频磁性元件设计。这一模型的提出,旨在解决斯坦麦茨方程在实际应用中面临的局限性,具有重要的理论价值和工程应用意义。
为了解决斯坦麦茨方程(Steinmetz-equation)的局限性,确保能够适用于不同温度变化的环境,我们可以构造一种修正方程来加强该模型的适应性和预测精度。传统的斯坦麦茨方程如下:

P S E = k ⋅ f a ⋅ B m a x b P_{\mathrm{SE}} = k \cdot f^a \cdot B_{\mathrm{max}}^b PSE=kfaBmaxb

其中:
- P S E P_{\mathrm{SE}} PSE表示磁芯损耗,
- f f f表示频率,
- B m a x B_{\mathrm{max}} Bmax是磁通密度的峰值,
- k , a , b k, a, b k,a,b是通过实验数据拟合得到的系数。

鉴于温度的变化对磁性材料的损耗特性有重要影响,我们可以引入一个温度校正因子 θ ( T ) \theta(T) θ(T),以构造修正的斯坦麦茨方程:

P M S E = k ( T ) ⋅ f a ⋅ B m a x b P_{\mathrm{MSE}} = k(T) \cdot f^a \cdot B_{\mathrm{max}}^b PMSE=k(T)faBmaxb

在这里, k ( T ) k(T) k(T)是一个关于温度 T T T的函数,表示温度对损耗系数的影响。可以选择简单的线性模型或更复杂的形式来表示这个关系。例如,可以假设 k ( T ) k(T) k(T)是个线性函数:

k ( T ) = k 0 + k 1 ⋅ ( T − T 0 ) k(T) = k_0 + k_1 \cdot (T - T_0) k(T)=k0+k1(TT0)

其中 T 0 T_0 T0是参考温度(例如25°C), k 0 , k 1 k_0, k_1 k0,k1是通过实验数据拟合得到的参数。

实验分析

我们可以利用附件一的材料1中正弦波形的数据,通过以下步骤分析斯坦麦茨方程和修正方程的预测效果:

  1. 数据准备:提取温度、频率、磁通密度和对应的磁芯损耗数据。

  2. 拟合模型:使用正弦波形的数据分别拟合斯坦麦茨方程的参数 k , a , b k, a, b k,a,b和修正方程的温度相关参数 k 0 , k 1 k_0, k_1 k0,k1

  3. 预测过程

    • 对于每个样本,首先利用原斯坦麦茨方程 P S E P_{\mathrm{SE}} PSE进行损耗预测。
    • 然后使用引入温度校正因子的修正方程 P M S E P_{\mathrm{MSE}} PMSE进行损耗预测。
  4. 误差分析:计算两种模型的预测误差,常用的误差指标准备如下:

MAE = 1 n ∑ i = 1 n ∣ P t r u e − P p r e d i ∣ \text{MAE} = \frac{1}{n} \sum_{i=1}^n |P_{\mathrm{true}} - P_{\mathrm{pred}}^i| MAE=n1i=1nPtruePpredi

RMSE = 1 n ∑ i = 1 n ( P t r u e − P p r e d i ) 2 \text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^n (P_{\mathrm{true}} - P_{\mathrm{pred}}^i)^2} RMSE=n1i=1n(PtruePpredi)2

其中, P t r u e P_{\mathrm{true}} Ptrue是实际测量的损耗, P p r e d i P_{\mathrm{pred}}^i Ppredi是模型预测的损耗。

结果讨论

通过实验分析和实际数据进行评估,将能得出以下独特见解:

  • 通过引入温度因子后,修正方程 P M S E P_{\mathrm{MSE}} PMSE能够提供更接近实际损耗的预测值,减少在不同温度条件下的误差。
  • 与传统的斯坦麦茨方程相比,修正方程显著提高了对于不同工作温度的适应能力,尤其在温度变化时,损耗的变化更为非线性,传统模型难以捕捉这一特性。
  • 若实验结果显示修正方程的MAE和RMSE显著低于斯坦麦茨方程,则表明引入温度因子的必要性和重要性。

结论

因此,构建的新模型不仅填补了传统斯坦麦茨方程在温度变化条件下的空白,而且为磁芯损耗的预测提供了更强的精度和适应性,为电力电子部件的设计与优化提供了重要的基础和指导。
问题二 斯坦麦茨方程(Steinmetz-equation)修正

在分析斯坦麦茨方程(Steinmetz-equation, SE)之前,我们回顾该方程的形式:

P c o r e = k ⋅ f a ⋅ B m a x b P_{core} = k \cdot f^a \cdot B_{max}^b Pcore=kfaBmaxb
其中:
- P c o r e P_{core} Pcore是单位体积的磁芯损耗(瓦特/立方米);
- f f f是励磁频率(赫兹);
- B m a x B_{max} Bmax是磁通密度的峰值(特斯拉);
- k k k a a a b b b是通过实验数据拟合得到的系数。

该方程在其经典适用条件下,表现出良好的效果,但随着温度的变化,磁芯材料的特性和损耗机制也会发生变化。因此,为了提高预测的准确性,在斯坦麦茨方程的基础上,我们可以引入温度因素。可以构建如下修正方程:

P c o r e , 修正 = k ( T ) ⋅ f a ⋅ B m a x b P_{core,\text{修正}} = k(T) \cdot f^a \cdot B_{max}^b Pcore,修正=k(T)faBmaxb

这里的 k ( T ) k(T) k(T)可以通过引入温度 T T T来表达,采用类似Arrhenius类型的形式,即:

k ( T ) = k 0 ⋅ e ( − E a R T ) k(T) = k_0 \cdot e^{\left(-\frac{E_a}{RT}\right)} k(T)=k0e(RTEa)

其中:
- k 0 k_0 k0是与材料相关的常数;
- E a E_a Ea是活化能;
- R R R是气体常数(8.314 J/(mol·K));
- T T T是绝对温度(K)。

结合上述,修正方程变为:

P c o r e , 修正 = k 0 ⋅ e ( − E a R T ) ⋅ f a ⋅ B m a x b P_{core,\text{修正}} = k_0 \cdot e^{\left(-\frac{E_a}{RT}\right)} \cdot f^a \cdot B_{max}^b Pcore,修正=k0e(RTEa)faBmaxb

在实际应用中,我们可以从附件一中选择材料1的正弦波形数据进行分析。对于不同温度下的磁芯损耗,通过数据拟合可以分别得到 k ( T ) k(T) k(T)的具体值,进而计算相应的损耗。

预测效果的分析

我们会计算使用斯坦麦茨方程和修正后的方程所预测的损耗值,并计算它们与实际测量值之间的误差。假设:

  • 实测损耗为 P c o r e , 测量 P_{core,\text{测量}} Pcore,测量
  • 斯坦麦茨方程预测值为 P c o r e , SE P_{core,\text{SE}} Pcore,SE
  • 修正方程预测值为 P c o r e , 修正 P_{core,\text{修正}} Pcore,修正

两个误差分别为:

误差 S E = ∣ P c o r e , 测量 − P c o r e , SE ∣ \text{误差}_{SE} = |P_{core,\text{测量}} - P_{core,\text{SE}}| 误差SE=Pcore,测量Pcore,SE

误差 修正 = ∣ P c o r e , 测量 − P c o r e , 修正 ∣ \text{误差}_{修正} = |P_{core,\text{测量}} - P_{core,\text{修正}}| 误差修正=Pcore,测量Pcore,修正

预测效果比较

通过计算,可以得到两种预测方式的误差进行比较,确定哪种方式更优。例如,通过收集多种温度下的数据,我们可以统计各自的平均误差,结果会直接反映出修正方程相对于传统斯坦麦茨方程在预测精度上的改进程度。

最后,如果修正方程的误差显著低于斯坦麦茨方程的误差,我们就可以认为所构建的温度修正方程在预测磁芯损耗方面效果更优,适用于更广泛的工况条件。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import mean_squared_error

# 导入数据
data = pd.read_excel('附件一.xlsx', sheet_name='材料1')  # 假设附件一为一个Excel文件,表名为材料1
data = data[data['励磁波形类型'] == '正弦波']  # 仅选择正弦波数据

# 提取温度、频率、磁通密度和损耗
temperatures = data['温度'].values
frequencies = data['频率'].values
flux_densities = data.iloc[:, 5:1029].values  # 假设磁通密度从第5列到第1029列
losses = data['磁芯损耗'].values

# 根据斯坦麦茨方程构造损耗预测
def steinmetz_equation(B, f, k1, k2):
    return k1 * f**k2 * B**1.5  # k1和k2需要根据数据拟合

# 通过数据拟合获得k1和k2,假设固定k1为0.1,k2为2.2(这里应替换为通过实际数据拟合得到的值)
k1 = 0.1  # 示例值
k2 = 2.2  # 示例值

# 计算斯坦麦茨方程预测的损耗
predicted_losses_se = steinmetz_equation(flux_densities.mean(axis=1), frequencies, k1, k2)

# 新的温度修正方程,假设是对损耗进行线性修正
def adjusted_loss(B, f, T):
    base_loss = steinmetz_equation(B, f, k1, k2)
    return base_loss * (1 + 0.005 * (T - 25))  # 假设温度每上升1度损耗增加0.5%

# 计算修正方程的损耗预测
predicted_losses_adjusted = adjusted_loss(flux_densities.mean(axis=1), frequencies, temperatures)

# 计算误差
mse_se = mean_squared_error(losses, predicted_losses_se)
mse_adjusted = mean_squared_error(losses, predicted_losses_adjusted)

# 输出结果
print(f"MSE of Steinmetz Equation: {mse_se}")
print(f"MSE of Adjusted Equation: {mse_adjusted}")

# 可视化比较
plt.figure(figsize=(10, 5))
plt.plot(losses, label='Observed Losses', marker='o')
plt.plot(predicted_losses_se, label='Predicted Losses (SE)', marker='x')
plt.plot(predicted_losses_adjusted, label='Predicted Losses (Adjusted)', marker='s')
plt.legend()
plt.xlabel('Sample Index')
plt.ylabel('Loss (W/m^3)')
plt.title('Comparison of Loss Predictions')
plt.show()

解释:

  1. 数据读取: 代码假设实验数据存储在一个名为“附件一.xlsx”的Excel文件中,其中一个工作表叫做“材料1”。
  2. 数据筛选: 筛选出正弦波形的实验数据。
  3. 损耗模型: 实现了斯坦麦茨方程以及一个基于温度的修正方程。
  4. 误差计算: 使用均方误差(MSE)来评估不同模型的预测效果。
  5. 结果可视化: 将真实损耗、斯坦麦茨方程预测的损耗和温度修正后的损耗绘制成图,以便直观比较。

请根据实际数据对参数进行合适的调整和拟合。
第三个问题是关于磁芯损耗因素分析。具体描述如下:

在磁性元件的设计与优化领域,磁芯损耗是一个核心指标,其大小直接关系到设备的效率与稳定性。在众多影响磁芯损耗的因素中,温度、励磁波形以及磁芯材料被公认为是最常见且比较重要的三大要素。为了精准提升磁性元件的性能,需要依托实验数据,深入剖析这三者如何独立或协同作用于磁芯损耗,并探索实现最低损耗的最优条件。
2024年华为杯数学建模研赛(C题) 建模解析| 磁芯损耗建模 | 小鹿学长带队指引全代码文章与思路-LMLPHP

要求进行的具体分析包括:

  1. 独立影响分析:分析温度、励磁波形和磁芯材料这三个因素,是如何独立影响着磁芯损耗。
  2. 协同影响分析:讨论这三者之间的两两协同影响。
  3. 影响程度:指出这三个因素各自对磁芯损耗的影响程度。
  4. 最小损耗条件:提供在什么条件下(温度、频率、波形、磁通密度峰值及磁芯材料),磁芯损耗可能达到最小的结果。

磁芯损耗因素分析

磁芯损耗的独立及协同影响分析可以通过建立线性回归模型、交互项分析和方差分析等方法进行。以下是对此问题的详细分析:

1. 独立影响分析

为了分析各个因素对磁芯损耗的独立影响,我们可以使用线性回归模型。首先,我们设计模型的基本形式为:

P = β 0 + β 1 T + β 2 F + β 3 W + β 4 M + ϵ P = \beta_0 + \beta_1 T + \beta_2 F + \beta_3 W + \beta_4 M + \epsilon P=β0+β1T+β2F+β3W+β4M+ϵ

其中:
- P P P为磁芯损耗。
- T T T为温度(摄氏度)。
- F F F为频率(赫兹)。
- W W W为波形(正弦波、三角波、梯形波,编码为数字)。
- M M M为磁芯材料(用材料标识编码)。
- β i \beta_i βi为回归系数。
- ϵ \epsilon ϵ为误差项。

通过拟合上述模型,可以得到各个因素的回归系数( β i \beta_i βi),以此判断各因素的独立影响程度。回归系数的绝对值越大,说明该因素对磁芯损耗的影响越显著。

2. 协同影响分析

对于温度、励磁波形和磁芯材料的协同影响,可以引入交互项,修改模型为:

P = β 0 + β 1 T + β 2 F + β 3 W + β 4 M + β 5 ( T ⋅ F ) + β 6 ( T ⋅ W ) + β 7 ( F ⋅ W ) + ϵ P = \beta_0 + \beta_1 T + \beta_2 F + \beta_3 W + \beta_4 M + \beta_5 (T \cdot F) + \beta_6 (T \cdot W) + \beta_7 (F \cdot W) + \epsilon P=β0+β1T+β2F+β3W+β4M+β5(TF)+β6(TW)+β7(FW)+ϵ

在这个模型中:
- T ⋅ F T \cdot F TF T ⋅ W T \cdot W TW F ⋅ W F \cdot W FW为交互项,表示不同因素之间的协同效应。

  • 可以通过显著性检验(如t检验或F检验)来判断这些交互项是否显著影响磁芯损耗,以此了解这些因素之间的相互关系和影响效果。
3. 影响程度

通过比较独立回归模型和含交互项的回归模型的回归系数及其显著性,我们可以得出影响程度的排序。例如:

  • β 1 \beta_1 β1的绝对值远大于 β 2 \beta_2 β2 β 3 \beta_3 β3,则温度对磁芯损耗的影响最大。
  • 协同影响的显著性以及交互作用的显著性也会影响最终的影响程度结论。
4. 最小损耗条件

为了找到磁芯损耗的最小条件,可以设置目标函数为磁芯损耗,约束条件为不同因素(温度、频率、波形、磁通密度峰值及材料)的取值范围。针对已有的数据,可以使用最小化优化算法(如梯度下降、遗传算法等)来求解最小损耗。

例如,目标函数形式为:

min ⁡ P ( T , F , W , M ) \min P(T,F,W,M) minP(T,F,W,M)

其中:约束条件可设置为 T ∈ [ 25 , 90 ] T \in [25, 90] T[25,90] F ∈ [ 50000 , 500000 ] F \in [50000, 500000] F[50000,500000] W ∈ { 1 , 2 , 3 } W \in \{1, 2, 3\} W{1,2,3} M ∈ { 材料 1 , 材料 2 , 材料 3 , 材料 4 } M \in \{材料1, 材料2, 材料3, 材料4\} M{材料1,材料2,材料3,材料4}。通过优化算法,可以找到对应的最佳参数组合,以得到最低的磁芯损耗。

结论

通过以上模型的建立与分析,我们能够有效识别并量化温度、励磁波形及磁芯材料对磁芯损耗的独立影响与协同影响,并在此基础上进一步寻找最小化磁芯损耗的最佳工作条件。具体数值与判别结果需依赖于附件提供的实验数据进行实际的计算与分析。

磁芯损耗因素分析

在磁性元件的设计与优化中,深入理解温度、励磁波形和磁芯材料这三大因素对磁芯损耗的独立影响及其协同作用至关重要。以下为详细分析:

1. 独立影响分析
  1. 温度的影响
    温度对磁芯损耗的影响主要体现在材料的磁性能变化以及电阻率变化。一般而言,随着温度的升高,材料中的铁磁病态磁畴的活动增加,导致磁滞损耗显著上升。涡流损耗也因电阻率降低而增加。因此,温度的升高通常会导致磁芯损耗的增加。公式可表示为:
    L = L 0 ⋅ e α ( T − T 0 ) L = L_0 \cdot e^{\alpha(T - T_0)} L=L0eα(TT0),其中 L L L为温度 T T T下的损耗, L 0 L_0 L0为基准温度 T 0 T_0 T0下的损耗, α \alpha α为温度系数。

  2. 励磁波形的影响
    励磁波形直接影响磁通密度的变化率,进而影响磁芯内的损耗特性。正弦波励磁下,磁芯损耗较为可预测,而对非正弦波(如三角波和梯形波)的处理则相对复杂,因为它们会导致频繁变化的磁通密度,这将显著增强涡流损耗。此外,波形的陡度也将影响磁滞损失。公式可以表示为:
    W = W s e ⋅ f ( B m a x , T ) W = W_{se} \cdot f(B_{max}, T) W=Wsef(Bmax,T),其中 W s e W_{se} Wse为基于斯坦麦茨模型的损耗, B m a x B_{max} Bmax为磁通密度的峰值, f f f为与温度 T T T和励磁波形特性有关的函数。

  3. 磁芯材料的影响
    不同的磁芯材料对于磁通密度和频率的响应不同,对损耗的贡献程度也不同。高导磁率材料(如非晶磁材料)通常在低频应用中表现更优,而在高频应用中,铁氧体材料则表现出较低的涡流损耗。材料的不同导致了不同的磁滞回线面积,从而影响此类损耗的表现。公式为:
    P c o r e = a ⋅ B m a x b ⋅ f C P_{core} = a \cdot B_{max}^b \cdot f^C Pcore=aBmaxbfC,其中 a , b , C a, b, C a,b,C为材料特定的系数,基于Timothy-Bertotti原理推导。

2. 协同影响分析
  1. 温度与励磁波形的协同影响
    温度升高会改变材料的磁性,同时不同励磁波形在特定温度下的损耗表现将更加复杂,比如在高温下,非正弦波形的损耗更为明显。这种协同作用意味着为了降低损耗,需对工作温度与励磁波形的匹配进行精确控制。

  2. 温度与磁芯材料的协同影响
    磁芯材料的性能随温度变化而变化,温度是材料损耗的关键参数,对于同一种材料,温度的变化会引起材料的磁导率、损耗系数等发生变化,因此,在选择材料时,考虑其使用温度的变化至关重要。

  3. 励磁波形与材料的协同影响
    不同材料的损耗特性对于不同励磁波形的敏感程度各异,开关电源设计中,选择合适波形(与材料特性匹配)将能显著减少损耗。例如,从内耗角度讲,高导磁材料应优先考虑使用在正弦波下,而对于非正弦波,选择高电阻率材料将更有利于减少涡流损耗。

3. 影响程度

通过多元线性回归分析或机器学习模型(如随机森林、XGBoost等),可以量化这三者对磁芯损耗的影响程度。在这些模型中,可以为温度、励磁波形和材料分配重要性分数。例如,通常情况下,温度的影响可能占总体损耗的约40%,波形影响约30%,材料影响约30%。

4. 最小损耗条件

基于实验数据的分析结果,磁芯损耗能够达到最小的条件通常包括:

  • 材料选择:选择低
    为深入分析磁芯损耗的影响因素,我们将分别探讨温度、励磁波形和磁芯材料对磁芯损耗的独立和协同影响。以下是详细的分析结构和对应的数学公式。

一、独立影响分析

  1. 温度的影响

    • 磁芯损耗通常随温度升高而增加。材料的电阻率随着温度的上升而变化,导致涡流损耗的增加。此外,温度影响了材料的磁滞特性。从实验数据中可以观察到,温度对磁芯损耗的影响可以表示为:
      P c o r e , t e m p = k 1 ⋅ T + b 1 P_{core, temp} = k_1 \cdot T + b_1 Pcore,temp=k1T+b1
      其中, P c o r e , t e m p P_{core, temp} Pcore,temp为温度导致的磁芯损耗, k 1 k_1 k1为温度对损耗的影响系数, T T T为温度(摄氏度), b 1 b_1 b1为常数项。
  2. 励磁波形的影响

    • 不同的励磁波形会导致不同的磁场动态,进而影响磁芯损耗。例如,正弦波具有较小的涡流损耗,而梯形波和三角波可能导致更高的损耗。因此其影响可以表示为:
      P c o r e , w a v e = k 2 ⋅ f w a v e + b 2 P_{core, wave} = k_2 \cdot f_{wave} + b_2 Pcore,wave=k2fwave+b2
      其中, P c o r e , w a v e P_{core, wave} Pcore,wave为励磁波形导致的磁芯损耗, k 2 k_2 k2为波形影响系数(如正弦波=1, 三角波=2, 梯形波=3), f w a v e f_{wave} fwave表示波形类型的数值化, b 2 b_2 b2为常数项。
  3. 磁芯材料的影响

    • 磁芯材料的特性例如磁导率和饱和磁通密度直接影响其损耗,材料的选择对损耗有显著影响,其影响可以表示为:
      P c o r e , m a t = k 3 ⋅ M t y p e + b 3 P_{core, mat} = k_3 \cdot M_{type} + b_3 Pcore,mat=k3Mtype+b3
      其中, P c o r e , m a t P_{core, mat} Pcore,mat为材料类型导致的磁芯损耗, M t y p e M_{type} Mtype表示材料特性的数值化(如不同材料设为不同值), k 3 k_3 k3为材料影响系数, b 3 b_3 b3为常数项。

二、协同影响分析

  • 在分析温度、励磁波形和磁芯材料的协同作用时,我们可以构建一个多元线性回归模型,表示为:
    P c o r e = a + k 1 T + k 2 f w a v e + k 3 M t y p e + k 12 ( T ⋅ f w a v e ) + k 13 ( T ⋅ M t y p e ) + k 23 ( f w a v e ⋅ M t y p e ) P_{core} = a + k_1 T + k_2 f_{wave} + k_3 M_{type} + k_{12}(T \cdot f_{wave}) + k_{13}(T \cdot M_{type}) + k_{23}(f_{wave} \cdot M_{type}) Pcore=a+k1T+k2fwave+k3Mtype+k12(Tfwave)+k13(TMtype)+k23(fwaveMtype)
    其中, a a a为常数, k 12 k_{12} k12 k 13 k_{13} k13 k 23 k_{23} k23分别为温度与波形、温度与材料、波形与材料的协同影响系数。

三、影响程度

  • 通过分析回归模型的系数,可以确定温度、励磁波形和磁芯材料对损耗的相对影响程度。通常,通过标准化回归系数,可以得到影响程度的排序,如:
    I m p o r t a n c e = k i ∑ j = 1 n ∣ k j ∣ Importance = \frac{k_i}{\sum_{j=1}^{n} |k_j|} Importance=j=1nkjki
    其中, i i i表示对应于温度、波形和材料的系数。

四、最小损耗条件

  • 确定磁芯损耗的最小条件,通常依赖于实际测得的数据进行优化。通过对温度、频率、波形和磁通密度峰值的联合分析,可以得出:
    min P c o r e = g ( T , f , W , B ) \text{min} \quad P_{core} = g(T, f, W, B) minPcore=g(T,f,W,B)
    在特定条件 T o p t T_{opt} Topt f o p t f_{opt} fopt W o p t W_{opt} Wopt B o p t B_{opt} Bopt下实现最小化,具体需要通过实验数据进行插值或拟合回归分析以得到最优参数。

总结

以上分析旨在为理解磁芯损耗的因素及其相互作用提供理论基础。通过深入的数据分析与建模,我们能够提出更具针对性的设计优化策略,从而在实际应用中实现更高的效率和稳定性。
以下是关于磁芯损耗因素分析的Python代码示例,代码利用pandas库进行数据处理,并通过统计分析评估温度、励磁波形和磁芯材料对磁芯损耗的独立及协同影响:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 读取实验数据
data = pd.read_excel('附件一.xlsx', sheet_name=None)

# 假设数据表命名为'Material1', 'Material2', 'Material3', 'Material4'
combined_data = pd.concat(data.values())
# 重命名列方便后续处理
combined_data.columns = ['Temperature', 'Frequency', 'CoreLoss', 'Waveform'] + [f'Sample_{i}' for i in range(1, 1025)]

# 独立影响分析
temperature_effect = combined_data.groupby('Temperature')['CoreLoss'].mean().reset_index()
waveform_effect = combined_data.groupby('Waveform')['CoreLoss'].mean().reset_index()
material_effect = combined_data['CoreLoss'].mean()

# 输出独立分析结果
print("独立影响分析:")
print("温度对损耗的影响:\n", temperature_effect)
print("励磁波形对损耗的影响:\n", waveform_effect)
print(f"原材料对损耗的平均影响: {material_effect}")

# 协同影响分析:创建特征用于模型
combined_data['Waveform_Num'] = combined_data['Waveform'].map({'正弦波': 1, '三角波': 2, '梯形波': 3})
X = combined_data[['Temperature', 'Frequency', 'Waveform_Num']]
y = combined_data['CoreLoss']

# 数据划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 建立决策树模型
model = DecisionTreeRegressor()
model.fit(X_train, y_train)

# 预测及误差计算
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)

print(f"\n预测模型均方误差: {mse}")

# 影响程度分析
feature_importance = model.feature_importances_
print("\n各特征对损耗的影响程度:")
print(f"温度影响程度: {feature_importance[0]}")
print(f"频率影响程度: {feature_importance[1]}")
print(f"励磁波形影响程度: {feature_importance[2]}")

# 最小损耗条件分析(简单示例,可能需结合实际应用情况)
min_loss_row = combined_data.loc[combined_data['CoreLoss'].idxmin()]
print("\n最小损耗条件:")
print(f"最小损耗温度: {min_loss_row['Temperature']} °C")
print(f"最小损耗频率: {min_loss_row['Frequency']} Hz")
print(f"最小损耗波形: {min_loss_row['Waveform']}")
print(f"最小损耗磁通密度: {min_loss_row['Sample_1']}{min_loss_row['Sample_1024']} T")

这段代码执行了以下任务:

  1. 读取实验数据并进行整合。
  2. 计算各个因素(温度、励磁波形、材料)对磁芯损耗的独立影响。
  3. 使用决策树模型来分析各因素的协同影响并计算其影响程度。
  4. 查找达到最小磁芯损耗的因素组合。

问题四:基于数据驱动的磁芯损耗预测模型
在磁芯损耗的研究领域中,尽管存在着众多传统模型(如文首“背景”所述),这些模型各自在不同的条件下展现了一定的应用价值,但普遍面临精度不足或适用范围受限的挑战。当前,业界缺乏一个既广泛适用又能提供高精度预测结果的磁芯损耗模型,这直接制约了磁性元件设计中对损耗的精确评估,进而影响了整体功率变换器效率的有效预估。鉴于这一现状,业界对构建更为便捷、精准的数据驱动模型寄予了厚望,旨在开发出一个能够跨越不同材料类型与工况条件的磁芯损耗预测模型。这样的模型将极大提升磁性元件设计的精确性与效率,为电力电子技术的进一步发展奠定坚实基础。

请利用附件一中的实验数据,通过数据分析与建模技术,构建磁芯损耗预测模型,分析模型的预测精度、泛化能力,以及对业界的各种指导意义;同时对附件三中样本的磁芯损耗进行预测,把预测结果填入附件四(Excel表格)中第3列,要求:

  1. 按样本序号填入相应的磁芯损耗预测结果,只保留小数点后1位;
  2. 结果填入附件四后,保留原文件名,(与问题一的结果一起)以附件材料上传;
  3. 特别把附件三中样本序号为:16、76、98、126、168、230、271、338、348、379的磁芯损耗预测结果,以表格形式呈现在论文正文中。

问题四:基于数据驱动的磁芯损耗预测模型

1. 数据准备与探究

首先,从附件一中读取实验数据,用以构建磁芯损耗预测模型。数据集中包含以下特征:

  • 温度
  • 频率
  • 磁通密度
  • 励磁波形类型

我们将磁芯损耗作为目标变量进行预测。为此,首先对数据进行预处理,包括缺失值处理、特征标准化和数据集划分(训练集和测试集)。

2. 特征工程

从原始数据中提取有效特征:

  • 温度、频率和磁通密度采用数值直接输入;
  • 将励磁波形类型进行独热编码(One-Hot Encoding),转化为数值形式。

在数据预处理完成后,将数据分为训练集(例如80%)和测试集(例如20%)。

3. 模型选择与训练

为实现高精度的磁芯损耗预测模型,可以采用多种机器学习模型,包括但不限于:

  • 线性回归(Linear Regression)
  • 支持向量机(Support Vector Machine,SVM)
  • 随机森林(Random Forest)
  • 梯度增强树(Gradient Boosting Tree,GBT)
  • 神经网络(Neural Network)

在此,我们选择随机森林模型作为基础模型,因其在处理回归任务时的鲁棒性和性能。

from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import pandas as pd

# 读取数据
data = pd.read_csv('磁芯损耗数据.csv')
# 预处理数据
# 特征工程省略,如独热编码、归一化等
# 划分数据集
X = data.drop(['磁芯损耗'], axis=1)
y = data['磁芯损耗']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 模型训练
model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# 预测与评估
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f'Model MSE: {mse}')
4. 模型评估与精度分析

利用平均绝对误差(MAE)、均方误差(MSE)、以及决定系数( R 2 R^2 R2)等指标评估预测模型的性能。特别关注如何处理不同材料及工作条件下的泛化能力。

from sklearn.metrics import mean_absolute_error, r2_score

mae = mean_absolute_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print(f'Model MAE: {mae}, R²: {r2}')
5. 预测附件三中的数据

接下来,使用训练好的模型对附件三中的样本进行预测,将预测结果填写至附件四中。

# 读取附件三测试数据
test_data = pd.read_csv('测试集数据.csv')
# 特征处理与独热编码同样应用至测试数据
X_test_data = test_data.drop(['磁芯材料'], axis=1)

# 进行预测
predictions = model.predict(X_test_data)

# 将结果保留至附件四
output = pd.DataFrame({'样本序号': test_data['样本序号'], '预测磁芯损耗': predictions})
output['预测磁芯损耗'] = output['预测磁芯损耗'].round(1)  # 保留1位小数
output.to_excel('附件四结果.xlsx', index=False)
6. 结果展示

特别展示附件三中样本序号为:16、76、98、126、168、230、271、338、348、379的磁芯损耗预测结果。

问题四:基于数据驱动的磁芯损耗预测模型

为了构建一个准确的磁芯损耗预测模型,我们将利用附件一中的实验数据,并采用数据分析与机器学习技术。我们主要关注如何通过适当的特征选择和模型设计,提高对磁芯损耗的预测精度和泛化能力。

数据预处理

  1. 特征选择:根据附件一的数据结构,我们得到以下特征:

    • 温度(Temperature)
    • 频率(Frequency)
    • 励磁波形(Waveform Type,转化为分类变量)
    • 磁通密度的1024个采样点(将这些数据通过某种统计特征(如均值、方差等)进行压缩,或使用关键点提取方法如FFT频谱分析等)。
  2. 标签:目标变量是磁芯损耗(Core Loss)。

  3. 数据划分:将数据集划分为训练集和测试集,以便于后续的模型验证。

构建模型

  1. 模型选择:选择合适的机器学习模型来建立预测模型。常见的选择包括:

    • 线性回归(Linear Regression)
    • 随机森林回归(Random Forest Regressor)
    • 梯度提升回归(Gradient Boosting Regressor)
    • 深度神经网络(Deep Neural Network)

    其中,随机森林和梯度提升因其良好的非线性拟合能力而成为主要候选。

  2. 模型训练:在训练集上进行模型训练。随机森林和梯度提升模型的超参数需要通过交叉验证进行调优,以找到最佳参数组合。

  3. 模型评估:使用测试集来评估模型的性能,主要指标包括:

    • 均方误差(MSE)
    • 平均绝对误差(MAE)
    • 决定系数(R²)

预测与结果填充

在测试集上完成模型训练与评估之后,可以对附件三中的样本进行预测。将预测的磁芯损耗结果填入附件四中相应的列中。我将只保留小数点后1位。

预测结果示例表(包含特定样本序号):

在建模过程中,除了关注单一特征与磁芯损耗的关系外,还应考虑特征之间的交互作用。例如,温度、频率和波形的组合对损耗的影响可能是非平稳的,利用交互特征能够帮助模型捕捉到复杂的关系。此外,建议使用集成学习方法(如模型融合),将多个模型的预测结果进行加权融合,以提高预测的鲁棒性和准确性。在实际应用场景中,实时采集的数据还可以持续优化模型,使其保持高效的预测性能。

通过上述步骤构建的磁芯损耗预测模型,不仅能在多种材料类型及工况下提供较高的预测精度,也为电力电子技术的进一步发展提供了坚实的基础。
为了构建基于数据驱动的磁芯损耗预测模型,我们可以使用机器学习方法,特别是回归模型,从附件一中获取的数据来进行训练和测试。

2024年华为杯数学建模研赛(C题) 建模解析| 磁芯损耗建模 | 小鹿学长带队指引全代码文章与思路-LMLPHP

1. 数据整理与预处理

首先,需要导入附件一中的数据,进行基本的数据清洗和特征选择。我们将考虑以下特征作为输入:

  • 温度(Temperature)
  • 频率(Frequency)
  • 励磁波形(Waveform Type)
  • 磁通密度(Magnetic Flux Density Samples, 从第5列到第1028列)

目标变量为磁芯损耗(Core Loss Density)。

2. 特征提取

在此步骤中,我们需要数据重塑,将磁通密度样本提取成有意义的统计特征。例如,可以计算每个样本的均值、最大值、最小值和标准差等,为模型提供更多的信息。

Mean = 1 n ∑ i = 1 n B i \text{Mean} = \frac{1}{n} \sum_{i=1}^{n} B_i Mean=n1i=1nBi

Max = max ⁡ ( B 1 , B 2 , … , B n ) \text{Max} = \max(B_1, B_2, \ldots, B_n) Max=max(B1,B2,,Bn)

Min = min ⁡ ( B 1 , B 2 , … , B n ) \text{Min} = \min(B_1, B_2, \ldots, B_n) Min=min(B1,B2,,Bn)

Standard Deviation = 1 n ∑ i = 1 n ( B i − Mean ) 2 \text{Standard Deviation} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (B_i - \text{Mean})^2 } Standard Deviation=n1i=1n(BiMean)2

3. 模型选择与训练

选择合适的回归算法如线性回归、决策树回归或随机森林回归,使用交叉验证来评估模型的性能。线性回归的基本形式为:

y = β 0 + β 1 x 1 + β 2 x 2 + … + β k x k + ϵ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \ldots + \beta_k x_k + \epsilon y=β0+β1x1+β2x2++βkxk+ϵ

其中, y y y是目标变量(磁芯损耗), x i x_i xi是输入特征, β i \beta_i βi是模型参数, ϵ \epsilon ϵ是误差项。

训练模型时,最小化均方误差(MSE):

MSE = 1 n ∑ i = 1 n ( y i − y i ^ ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y_i})^2 MSE=n1i=1n(yiyi^)2

4. 模型评估

使用测试集评估模型的预测准确性,考虑的评估指标包括均方根误差(RMSE)和决定系数( R 2 R^2 R2):

RMSE = 1 n ∑ i = 1 n ( y i − y i ^ ) 2 \text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y_i})^2 } RMSE=n1i=1n(yiyi^)2

R 2 = 1 − ∑ i = 1 n ( y i − y i ^ ) 2 ∑ i = 1 n ( y i − y ˉ ) 2 R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y_i})^2 }{\sum_{i=1}^{n} (y_i - \bar{y})^2 } R2=1i=1n(yiyˉ)2i=1n(yiyi^)2

5. 进行预测

使用训练模型对附件三中的样本进行预测,计算得到磁芯损耗值。

6. 数据填充与结果展示

将预测结果填入附件四的第3列,并保留原文件名。此外,对于样本序号为:16、76、98、126、168、230、271、338、348、379的预测结果,应以表格形式呈现在论文中。

结论与意义

基于数据驱动的磁芯损耗预测模型不仅可以提升预测的准确性,还有助于设计更高效的电力电子元件。这一模型为工程应用提供了理论依据和参考,为进一步的材料研究和应用开发奠定了基础。

希望这些详细步骤和公式对构建基于数据驱动的磁芯损耗预测模型有所帮助。如果有进一步的数据分析需求或问题,请随时询问。

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.metrics import mean_squared_error

# 1. 读取训练数据
data = pd.DataFrame()

# 假设附件一的数据文件为'attachment_one.xlsx'
for material in range(1, 5):
    temp_data = pd.read_excel('attachment_one.xlsx', sheet_name=f'Material{material}')
    data = pd.concat([data, temp_data], ignore_index=True)

# 2. 数据预处理
# 将励磁波形转换为分类变量
data['励磁波形类型'] = data['励磁波形类型'].map({'正弦波': 1, '三角波': 2, '梯形波': 3})

# 特征列(假设为温度、频率、波形和磁通密度)
features = data.iloc[:, [0, 1, 3] + list(range(4, 1029))]  # 温度、频率、励磁波形、磁通密度
# 目标列(磁芯损耗)
target = data.iloc[:, 2]  # 磁芯损耗

# 3. 将数据分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42)

# 4. 构建预测模型(使用梯度提升回归树作为示例)
model = GradientBoostingRegressor(n_estimators=100, learning_rate=0.1, max_depth=3, random_state=42)
model.fit(X_train, y_train)

# 5. 进行预测
y_pred = model.predict(X_test)

# 6. 评估模型性能
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
print(f'模型的均方根误差: {rmse}')

# 7. 读取附件三的数据以进行损耗预测
test_data = pd.read_excel('attachment_three.xlsx')

# 将波形类型转换
test_data['励磁波形类型'] = test_data['磁芯材料'].map({'材料1': 1, '材料2': 2, '材料3': 3, '材料4': 4})

# 预测损耗
test_features = test_data.iloc[:, [1, 2, 3] + list(range(4, 1029))]  # 温度、频率、波形、磁通密度
test_predictions = model.predict(test_features)

# 8. 将预测结果添加到附件四的第三列
output_data = pd.read_excel('attachment_four.xlsx')
output_data['磁芯损耗预测'] = np.round(test_predictions, 1)  # 只保留小数点后1位

# 9. 保存结果
output_data.to_excel('attachment_four.xlsx', index=False)

# 10. 显示特定样本的预测结果
specific_samples = [16, 76, 98, 126, 168, 230, 271, 338, 348, 379]
sample_predictions = output_data.loc[output_data['样本序号'].isin(specific_samples), ['样本序号', '磁芯损耗预测']]
print(sample_predictions)

更多内容可以点击下方名片详细了解,让小鹿学长带你冲刺研赛夺奖之路!
敬请期待我们的努力所做出的工作!记得关注 鹿鹿学长呀!

09-21 18:01