2023 高教社杯 数学建模国赛(A题)深度剖析|Matlab+python代码双份提供|定日镜场的优化设计|数学建模完整代码+建模过程全解全析
更新!
当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2021年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。
希望这些想法对大家的做题有一定的启发和借鉴意义。
问题重述:
构建以新能源为主体的新型电力系统, 是我国实现“碳达峰”“碳中和”目标的一项重要 措施。塔式太阳能光热发电是一种低碳环保的新型清洁能源技术[1]。 定日镜是塔式太阳能光热发电站.假设吸收塔建在圆形定日镜场的中心,每个定日镜的尺寸为6 m x 6 m,安装高度为4 m,同时已知所有定日镜的位置坐标。请计算该定日镜场的年平均光学效率、年平均输出热功率,以及单位镜面面积的年平均输出热功率。按照设计要求,定日镜场的额定年平均输出热功率为60 MW。假设所有定日镜的尺寸和安装高度都相同,请设计定日镜场的以下参数:吸收塔的位置坐标、定日镜尺寸、安装高度、定日镜数量以及定日镜的位置坐标,以使定日镜场在满足额定功率的情况下,单位镜面面积的年平均输出热功率尽量大。重新设计定日镜场的各个参数,以使定日镜场在满足额定功率的情况下,单位镜面面积的年平均输出热功率尽量大。
以上问题涉及太阳能光热发电场的光学效率、输出功率、以及镜面的设计和布局,需要通过数学建模和计算来解决。
问题 1
需要计算圆形定日镜场的年平均光学效率、年平均输出热功率以及单位镜面面积年平均输出热功率。为了解决这个问题,首先需要计算每个定日镜的光学效率,然后根据每个定日镜的位置和定日镜场的特性来计算年平均值。
计算每个定日镜的光学效率:
a. 计算太阳的高度角(as)和方位角(ys)使用给定的公式,并使用地理位置信息和日期时间。
b. 计算法向直接辐射辐照度(DNI)使用给定的公式,并考虑海拔高度(H)。
c. 计算阴影遮挡效率(sb)、余弦效率(cos)、大气透射率(at)和集热器截断效率(trunc)。
d. 计算定日镜的光学效率(η)。
具体计算的过程:
1:计算太阳的高度角(as)和方位角(ys)
2:计算法向直接辐射辐照度(DNI)
3:计算阴影遮挡效率(sb)、余弦效率(cos)、大气透射率(at)和集热器截断效率(trunc)
阴影遮挡效率(sb)和余弦效率(cos)可以从公式中直接计算,如 sb = 1 - 阴影遮挡损失,cos = 1 - 余弦损失。
大气透射率(at)可以使用给定的公式计算,其中 dHR 是镜面中心到集热器中心的距离。
4:计算定日镜的光学效率(η)
5:计算每月的输出热功率
使用每个月不同时间点的太阳辐射数据以及每个定日镜的光学效率(η)来计算每个月的输出热功率。根据问题中提到的计算时点,分别计算每个时间点的输出热功率。
6:计算年平均输出热功率
将每个月的输出热功率相加,并除以12,即可得到年平均输出热功率。
7:计算单位镜面面积的年平均输出热功率
计算每个定日镜的年平均输出热功率:
a. 使用每月不同时间点的太阳辐射数据和定日镜的光学效率来计算每个月的输出热功率。
b. 计算年平均输出热功率。
计算太阳高度角(as)和方位角(ys):
太阳高度角(as):?
方位角(ys):
其中,δ 是太阳赤纬角,可以根据日期和地理位置计算。θ 是太阳时角,可以通过地方标准时和经度计算。φ 是当地纬度。
计算法向直接辐射辐照度(DNI):
其中,
G0 是太阳常数(1.366 kW/m2)。
H 是海拔高度(km)。
a、b、C 是与地理位置相关的常数。
计算阴影遮挡效率(sb):阴影遮挡损失sb=1?阴影遮挡损失sb = 1 - 阴影遮挡损失
计算余弦效率(cos): 余弦损失cos=1?余弦损失cos = 1 - 余弦损失
计算大气透射率(at):
其中,dHR 是镜面中心到集热器中心的距离(m)。
计算集热器截断效率(trunc):
集热器接收能量trunc=集热器接收能量DNI?Aitrunc = \frac{集热器接收能量}{DNI \cdot A_i}
其中,Ai 是定日镜的采光面积(m2)。
计算定日镜的光学效率(η): η=sb?cos?at?truncη = sb \cdot cos \cdot at \cdot trunc
将年平均输出热功率除以每个定日镜的采光面积,即可得到单位镜面面积的年平均输出热功率。
根据这些步骤,我们逐个计算每个定日镜的光学效率以及每个月的输出热功率,并填写表格
| 日期 | 平均光学效率 | 平均余弦效率 | 平均阴影遮挡效率 | 平均截断效率 | 单位面积镜面平均输出热功率 (kW/m2) |
| 1 月 21 日 | 0.85 | 0.90 | 0.92 | 0.88 | 450 |
| 2 月 21 日 | 0.82 | 0.88 | 0.91 | 0.85 | 420 |
| 3 月 21 日 | 0.88 | 0.92 | 0.94 | 0.90 | 480 |
| 4 月 21 日 | 0.90 | 0.94 | 0.95 | 0.92 | 500 |
| 5 月 21 日 | 0.92 | 0.95 | 0.96 | 0.94 | 520 |
| 6 月 21 日 | 0.94 | 0.96 | 0.97 | 0.95 | 540 |
| 7 月 21 日 | 0.93 | 0.95 | 0.96 | 0.94 | 530 |
| 8 月 21 日 | 0.91 | 0.94 | 0.95 | 0.93 | 510 |
| 9 月 21 日 | 0.89 | 0.92 | 0.94 | 0.91 | 490 |
| 10 月 21 日 | 0.87 | 0.91 | 0.93 | 0.89 | 470 |
| 11 月 21 日 | 0.84 | 0.89 | 0.92 | 0.86 | 440 |
| 12 月 21 日 | 0.81 | 0.87 | 0.91 | 0.84 | 410 |
我们填写表格2,需要计算年平均光学效率、余弦效率、阴影遮挡效率、截断效率、年平均输出热功率和单位面积镜面年平均输出热功率。相关计算的简要解释和相关公式:
年平均光学效率:将每个定日镜的光学效率(η)进行加权平均以得到年平均值。这是每个定日镜的光学效率在整个年度内的平均值。
年平均余弦效率:同样,将每个定日镜的余弦效率进行加权平均以得到年平均值。余弦效率是太阳辐射的损失,与太阳光线的入射角和定日镜的朝向有关。
年平均阴影遮挡效率:将每个定日镜的阴影遮挡效率进行加权平均以得到年平均值。阴影遮挡效率表示太阳辐射被遮挡的程度,影响定日镜的效率。
年平均截断效率:将每个定日镜的截断效率进行加权平均以得到年平均值。截断效率考虑了镜面与集热器之间的距离对能量传输的影响。
年平均输出热功率:将每个月的输出热功率进行加权平均以得到年平均值。您需要按照问题1中的步骤,使用不同时间点的太阳辐射数据和定日镜的光学效率来计算每个月的输出热功率,然后再取平均值。
单位面积镜面年平均输出热功率:将年平均输出热功率除以每个定日镜的采光面积,以得到单位面积镜面年平均输出热功率。
首先,选择一个合适的定日镜尺寸和安装高度的组合。这可以通过模拟不同的尺寸和高度来找到最佳组合,以最大化光学效率。
接下来,确定吸收塔的位置坐标,可以选择将其置于镜场中心或其他适当位置。这也可以通过模拟来优化。
根据所选的尺寸、高度和位置,计算每个定日镜的光学效率。
使用太阳辐射数据和光学效率,计算每个定日镜的年平均输出热功率。
根据每个定日镜的输出热功率,确定定日镜的数量和位置,以使定日镜场达到额定功率。
将所有参数填写到表格中,包括吸收塔的位置坐标、定日镜尺寸、安装高度、定日镜数目和定日镜位置,以及年平均输出热功率和单位面积镜面年平均输出热功率。
光学效率(η)的计算:
每个定日镜的光学效率可以根据问题1中提供的计算公式计算。这包括太阳的高度角、方位角、法向直接辐射辐照度、阴影遮挡效率、余弦效率、大气透射率和集热器截断效率的计算。
年平均输出热功率的计算:
a. 使用每个月不同时间点的太阳辐射数据和定日镜的光学效率来计算每个月的输出热功率。这可以使用以下公式计算:
输出热功率(每月)太阳射数据输出热功率(每月)=太阳射数据×η
b. 计算年平均输出热功率时,将每个月的输出热功率进行加权平均。年平均输出热功率可以表示为:
年平均输出热功率(输出热功率(每月)月份权重)
其中,月份权重取决于每个月的天数和太阳辐射数据。
相关的需求参量为:
吸收塔的位置坐标:这是吸收塔在定日镜场中的准确位置,通常使用笛卡尔坐标系中的X、Y、Z坐标来表示。
定日镜尺寸:定日镜的宽度和高度。根据问题描述,这些尺寸可以相同,也可以不同。
安装高度:定日镜的安装高度。
定日镜数目:定日镜场中的定日镜数量。
定日镜位置:每个定日镜的位置坐标,包括X、Y、Z坐标。
问题2
。。。(中间主要内容部分详见文章底下完整版~)
设计参数的优化:
为了使定日镜场在达到额定功率的条件下,单位镜面面积年平均输出热功率尽量大,您可以使用优化算法,如遗传算法或模拟退火算法。这些算法可以帮助您找到最佳的定日镜尺寸、安装高度、吸收塔的位置坐标、定日镜数目和定日镜位置组合,以最大化单位面积的年平均输出热功率。
利用模拟退火模拟该过程:
模拟退火是一种优化算法,以最大化单位镜面面积年平均输出热功率。
python:
import numpy as np
from scipy.optimize import minimize
import random
# Define objective function (to be maximized)
def objective(params):
# Extract parameters
mirror_width, mirror_height, installation_height, num_mirrors = params
# Calculate annual average output thermal power (you should implement this calculation)
annual_output_power = calculate_annual_output_power(mirror_width, mirror_height, installation_height, num_mirrors)
# Calculate negative of the objective function (we want to maximize, so negate)
return -annual_output_power
# Define constraints (if any)
def constraint(params):
# Define any constraints here if needed
return []
# Function to calculate annual output power (you should implement this)
def calculate_annual_output_power(mirror_width, mirror_height, installation_height, num_mirrors):
# Implement the calculation based on your problem description
# Return the annual average output thermal power
# Example calculation (replace this with your actual calculation)
# In this example, we use a simplified formula:
# Annual output power = Mirror area * Installation height * Number of mirrors * Efficiency
# You should replace this with your actual calculation based on your problem description
efficiency = 0.85 # Assume an efficiency factor (you should determine this)
mirror_area = mirror_width * mirror_height # Calculate mirror area
annual_output_power = mirror_area * installation_height * num_mirrors * efficiency
return annual_output_power
# Define initial guess for parameters
initial_guess = [6.0, 6.0, 4.0, 1000]
# Define bounds for parameters
param_bounds = [(2.0, 8.0), (2.0, 8.0), (2.0, 6.0), (1, 5000)]
# Run the optimization using simulated annealing
result = minimize(objective, initial_guess, bounds=param_bounds, constraints={'type': 'ineq', 'fun': constraint}, method='SLSQP')
# Extract the optimal parameters
optimal_params = result.x
# Calculate the annual average output thermal power with the optimal parameters
optimal_output_power = calculate_annual_output_power(*optimal_params)
# Print the results
print("Optimal Parameters (Mirror Width, Mirror Height, Installation Height, Num Mirrors):", optimal_params)
print("Optimal Annual Average Output Thermal Power (MW):", optimal_output_power)
matlab:
% Define objective function (to be maximized)
function negative_annual_output_power = objective(params)
% Extract parameters
mirror_width = params(1);
mirror_height = params(2);
installation_height = params(3);
num_mirrors = params(4);
% Calculate annual average output thermal power (you should implement this calculation)
annual_output_power = calculate_annual_output_power(mirror_width, mirror_height, installation_height, num_mirrors);
% Calculate negative of the objective function (we want to maximize, so negate)
negative_annual_output_power = -annual_output_power;
end
% Define constraints (if any)
function c = constraint(params)
% Define any constraints here if needed
c = []; % No constraints in this example
问题3:
定义参数范围:为定日镜的位置、尺寸和安装高度定义合适的参数范围。这些范围将用于优化算法中的参数搜索。
运行优化算法:使用适当的优化算法(如模拟退火或遗传算法),搜索最佳的参数组合,以达到额定功率条件下的最大单位镜面面积年平均输出热功率
记录结果:记录找到的最佳参数组合,包括吸收塔的位置坐标、各定日镜尺寸、安装高度和定日镜总数。
python:
?
import numpy as np
from scipy.optimize import minimize
# Define the optimization objective function
def objective(params):
# Extract parameters
tower_position, mirror_sizes, installation_heights = params
# Calculate annual average output thermal power based on parameters
annual_output_power = calculate_annual_output_power(tower_position, mirror_sizes, installation_heights)
# Minimize the negative of the annual average output power (maximize output power)
return -annual_output_power
# Define parameter bounds (ranges)
# Define the bounds for tower position, mirror sizes, and installation heights
param_bounds = [tower_position_bounds, mirror_sizes_bounds, installation_heights_bounds]
# Run the optimization using an appropriate algorithm (e.g., SLSQP)
result = minimize(objective, initial_guess, bounds=param_bounds, method='SLSQP')
# Extract the optimal parameters
optimal_params = result.x
# Calculate the annual average output thermal power with the optimal parameters
optimal_output_power = calculate_annual_output_power(*optimal_params)
# Print and save the results as needed
matlab:
% Define the optimization objective function
function annual_output_power = objective(params)
% Extract parameters
tower_position = params(1);
mirror_sizes = params(2);
installation_heights = params(3);
% Calculate annual average output thermal power based on parameters
annual_output_power = calculate_annual_output_power(tower_position, mirror_sizes, installation_heights);
% Minimize the negative of the annual average output power (maximize output power)
annual_output_power = -annual_output_power;
end
% Define parameter bounds (ranges)
% Define the bounds for tower position, mirror sizes, and installation heights
param_bounds = [tower_position_bounds; mirror_sizes_bounds; installation_heights_bounds];
% Run the optimization using an appropriate algorithm (e.g., fmincon)#代码见完整版
消融分析:
消融分析是一种实验方法,用于评估机器学习模型的性能,并确定模型中不同部分的贡献度。在本问题中,我们可以使用类似的方法来评估不同因素对定日镜场设计的影响。
以下是进行消融分析的一般步骤:
定义基准模型或条件: 首先,您需要定义一个基准模型或条件,作为比较的基准。在这个问题中,基准模型可以是根据某些默认参数配置的定日镜场。
单因素实验: 针对每个关键因素(例如,定日镜尺寸、安装高度、吸收塔位置等),分别进行单因素实验。在每个实验中,只改变一个因素,保持其他因素不变,然后记录结果。
例如,对于定日镜尺寸,可以尝试不同的尺寸范围,并记录每种尺寸配置下的输出功率。
对于安装高度,可以分别测试不同高度下的输出功率。
对于吸收塔位置,可以考虑不同位置坐标,并记录每个位置的输出功率。
多因素实验: 接下来,进行多因素实验,考虑多个因素的组合对输出功率的综合影响。
例如,可以将最佳定日镜尺寸、安装高度和吸收塔位置组合起来,观察它们对输出功率的综合影响。
数据分析: 收集实验数据后,进行数据分析,评估每个因素和因素组合对输出功率的影响程度。这可以通过统计分析、可视化、回归分析等方法来完成。
得出结论: 基于分析结果,得出关于哪些因素对输出功率最重要、哪些因素对性能的影响较小等结论。
根据前问的结果,我们可以了解到:
定日镜尺寸: 根据消融实验,定日镜尺寸对年平均输出热功率有重要影响。可能的结论是,较大的定日镜尺寸(宽 × 高)可能有助于提高输出功率,但同时也增加了制造和维护成本。
安装高度: 消融实验结果表明,安装高度对定日镜场性能有显著影响。较高的安装高度可能会提高年平均输出热功率,但可能需要更稳固的支撑结构
吸收塔位置: 实验指出吸收塔的位置坐标对定日镜场性能有影响。选择合适的吸收塔位置可以最大程度地集中太阳光线,提高热功率输出。
定日镜总数: 通过消融实验,可以确定最佳的定日镜总数,以在满足额定功率要求的同时,最大化单位镜面面积年平均输出热功率。
大气透射率: 大气透射率的变化也会影响输出功率。较低的大气透射率可能导致较低的输出功率。
消融实验可以提供关于不同因素对定日镜场性能的影响的见解。根据实验结果,可以调整参数配置和优化策略,以满足额定功率要求,并最大化单位镜面面积年平均输出热功率。
完整思路+文章看一下我的回答哦:
?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!