【Python代码实现】【XGBoost-Stress-Strain预测】不同孔径和应变率的开孔AlSi10Mg材料和开孔AlSi10Mg-SiC复合材料力学性能数据

本文介绍了一项关于开孔AlSi10Mg和AlSi10Mg-SiC复合材料的压缩性能研究,通过不同孔径和应变速率下的实验数据,详细展示了应力-应变曲线、能量吸收及效率。利用Python代码分析了这些数据,以支持材料设计和优化。同时,探讨了如何通过机器学习方法进一步挖掘数据中的特征和模式。
摘要由CSDN通过智能技术生成

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Python代码、数据、文章


💥1 概述

本数据文章描述了不同孔径和应变率的开孔AlSi10Mg材料和开孔AlSi10Mg-SiC复合材料的应力-应变曲线、能量吸收和能量吸收效率。数据是通过在60.0和01.0 s的应变速率下高达001%应变的准静态压缩载荷获得的−1符合 ISO 13,314:2011 标准。这些数据可用于比较孔径和应变率对材料压缩性能的影响。这些数据与题为“开孔AlSi10Mg-SiC复合材料的磨损行为的制造,实验调查和预测”的研究文章有关(Kolev,M.,Drenchev,L.和Petkov,V.(2023)。

  • 该数据提供了有关具有不同孔径和应变速率的开孔AlSi10Mg和AlSi10Mg-SiC材料的力学行为的全面信息,这些材料正在压缩,包括数值数据和应力-应变图,这些图由弹性区域,塑性平台和致密化区域组成,变形高达60%的测试多孔材料。

  • 该数据可用于比较孔径和应变速率对材料压缩性能的影响,如压缩强度、平台应力、平台端应力、平台端应变、能量吸收和能量吸收效率。

  • 有兴趣为航空航天、汽车或生物医学设备等各种工程应用设计、优化或评估开孔金属基复合材料的研究人员和工程师可以从此处提供的数据中受益。

  • 通过基于实验数据执行数值模拟或分析模型,可以使用/重复使用报告的数据来进一步了解和/或开发实验。

  • 高级数据分析技术,如机器学习或人工智能方法,也可以应用于从数据中提取更多特征或模式。

  • 本数据集旨在提供不同孔径和应变率的开孔AlSi10Mg材料和开孔AlSi10Mg-SiC复合材料的压缩性能的全面信息。这些复合材料是新型多孔金属复合材料,在高强度和轻质结构中具有潜在的应用前景,并且需要高摩擦性和耐磨性。该数据集包含准静态压缩载荷得到的材料应力-应变曲线、能量吸收和能量吸收效率特性。该数据集可用于比较孔径和应变速率对材料压缩行为的影响,以及验证用于预测其响应的数值模型或分析公式。该数据集与我们题为“开孔AlSi10Mg-SiC复合材料的磨损行为的制造,实验研究和预测”的原始研究文章[1]有关,我们在文章中制造并表征了复合材料。

📚2 运行结果

# Shadow effect objects with different transparency and smaller linewidth
pe1 = [patheffects.SimpleLineShadow(offset=(0.5,-0.5), alpha=0.4), patheffects.Normal()]

# create two subplots for the two multiplots
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 6))

# Plot of the actual vs predicted stress-strain as a function of  time for the first multiplot
ax1.scatter(X_test[:, 0], y_test,color='cyan',label='Actual test C', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax1.scatter(X_test[:, 0], y_pred,color='orange',label='Predicted test C', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax1.scatter(X_val[:, 0], y_val,color='green',label='Actual val C', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax1.scatter(X_val[:, 0], y_val_pred,color='magenta',label='Predicted val C', linewidth=0.5,alpha=0.9,zorder=1,marker='+',path_effects=pe1)
ax1.scatter(X1_test[:, 0], y1_test,color='blue',label='Actual test SC', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax1.scatter(X1_test[:, 0], y_pred1,color='red',label='Predicted test SC', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax1.scatter(X1_val[:, 0], y1_val,color='yellow',label='Actual val SC', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax1.scatter(X1_val[:, 0], y_val_pred1,color='black',label='Predicted val SC', linewidth=0.5,alpha=0.9,zorder=1,marker='+',path_effects=pe1)
ax1.set_xlabel('Stress, %', fontsize='15', fontweight='bold')
ax1.set_ylabel('Strain, MPa', fontsize='15', fontweight='bold')
ax1.legend(loc='lower right')

# Add title
ax1.set_title("Strain rate 0.01", fontsize='18', fontweight='bold')

# Add a legend with shadow and different font size 
ax1.legend(shadow=True, prop={'size':'12'}, loc='upper left')
# Set the x axis limit to 60
ax1.set_xlim(0, 60) # use set_xlim instead of xlim
# Set the y axis limit to 60
ax1.set_ylim(0, 60) # use set_ylim instead of ylim
# Change the axes numbering size and font
ax1.tick_params(axis='both', which='major', labelsize=12, labelcolor='black')
ax1.grid() # add grid to the second subplot


# Plot of the actual vs predicted stress-strain as a function of  time for the second multiplot
ax2.scatter(X2_test[:, 0], y2_test,color='cyan',label='Actual test C', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax2.scatter(X2_test[:, 0], y_pred2,color='orange',label='Predicted test C', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax2.scatter(X2_val[:, 0], y2_val,color='green',label='Actual val C', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax2.scatter(X2_val[:, 0], y_val_pred2,color='magenta',label='Predicted val C', linewidth=0.5,alpha=0.9,zorder=1,marker='+',path_effects=pe1)
ax2.scatter(X3_test[:, 0], y3_test,color='blue',label='Actual test SC', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax2.scatter(X3_test[:, 0], y_pred3,color='red',label='Predicted test SC', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax2.scatter(X3_val[:, 0], y3_val,color='yellow',label='Actual val SC', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax2.scatter(X3_val[:, 0], y_val_pred3,color='black',label='Predicted val SC', linewidth=0.5,alpha=0.9,zorder=1,marker='+',path_effects=pe1)
ax2.set_xlabel('Stress, %', fontsize='15', fontweight='bold')
ax2.set_ylabel('Strain, MPa', fontsize='15', fontweight='bold')


# Add title
ax2.set_title("Strain rate 0.001",fontsize='18', fontweight='bold')

# Add a legend with shadow and different font size 
ax2.legend(shadow=True, prop={'size':'12'}, loc='upper left')
# Set the x axis limit to 60
ax2.set_xlim(0, 60) # use set_xlim instead of xlim
# Set the y axis limit to 60
ax2.set_ylim(0, 60) # use set_ylim instead of ylim
# Change the axes numbering size and font
ax2.tick_params(axis='both', which='major', labelsize=12, labelcolor='black')
ax2.grid() # add grid to the second subplot

fig.show()
# Save the plot with dpi=500 in 'png'
fig.savefig('results/pred_stress-strain_c_multi.png', dpi=500)

部分代码:

# create a DataFrame from the variables for each dataset
df1 = pd.DataFrame({"Actual test": y_test, "Predicted test": y_pred, "Actual val": y_val, "Predicted val": y_val_pred})
df2 = pd.DataFrame({"Actual test": y1_test, "Predicted test": y_pred1, "Actual val": y1_val, "Predicted val": y_val_pred1})
df3 = pd.DataFrame({"Actual test": y2_test, "Predicted test": y_pred2, "Actual val": y2_val, "Predicted val": y_val_pred2})
df4 = pd.DataFrame({"Actual test": y3_test, "Predicted test": y_pred3, "Actual val": y3_val, "Predicted val": y_val_pred3})

# save the DataFrames to an Excel file with different sheets
with pd.ExcelWriter("results/pred_stress-strain_multi.xlsx") as writer:
 df1.to_excel(writer, sheet_name="C_0.01", index=False)
 df2.to_excel(writer, sheet_name="SC_0.01", index=False)
 df3.to_excel(writer, sheet_name="C_0.001", index=False)
 df4.to_excel(writer, sheet_name="SC_0.001", index=False)


# Descriptive statistics


# create a DataFrame from the descriptive statistics for each dataset
df1_stats = df1.describe()
df2_stats = df2.describe()
df3_stats = df3.describe()
df4_stats = df4.describe()

# rename the labels of the rows
df1_stats = df1_stats.rename(index={'50%': 'median'})
df2_stats = df2_stats.rename(index={'50%': 'median'})
df3_stats = df3_stats.rename(index={'50%': 'median'})
df4_stats = df4_stats.rename(index={'50%': 'median'})


# select only the standard deviation, mean, median, minimum, and maximum from each DataFrame
df1_stats = df1_stats.loc[['std', 'mean', 'median', 'min', 'max']]
df2_stats = df2_stats.loc[['std', 'mean', 'median', 'min', 'max']]
df3_stats = df3_stats.loc[['std', 'mean', 'median', 'min', 'max']]
df4_stats = df4_stats.loc[['std', 'mean', 'median', 'min', 'max']]

# print the selected statistics for each DataFrame
print("Statistics for C_0.01_stress-strain_data.xlsx")
print(df1_stats)
print("Statistics for SC_0.01_stress-strain_data.xlsx")
print(df2_stats)
print("Statistics for C_0.001_stress-strain_data.xlsx")
print(df3_stats)
print("Statistics for SC_0.001_stress-strain_data.xlsx")
print(df4_stats)

# save the DataFrames to an Excel file with different sheets
with pd.ExcelWriter("results/statistics_stress-strain.xlsx") as writer:
 df1_stats.to_excel(writer, sheet_name="C_0.01", index=True) # use index=True to write the row names
 df2_stats.to_excel(writer, sheet_name="SC_0.01", index=True) # use index=True to write the row names
 df3_stats.to_excel(writer, sheet_name="C_0.001", index=True) # use index=True to write the row names
 df4_stats.to_excel(writer, sheet_name="SC_0.001", index=True) # use index=True to write the row names

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Python代码、数据、文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值