2024年第十六届“华中杯”(A题)大学生数学建模挑战赛| 物理建模,多目标优化| 数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。

让我们来看看华中杯 (A题)

CS团队倾注了大量时间和心血,深入挖掘解决方案。通过物理建模,多目标优化等算法,设计了明晰的项目,团队努力体现在每个步骤,确保方案既创新又可行,为大家提供了全面而深入的洞见噢~

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

在这里插入图片描述

第一个问题是计算2025年每月15日,在晴天条件下,该城区一块面积为1m2的光伏板朝向正南方且水平倾角分别为20°、40°、60°时受到的最大太阳直射强度和太阳直射辐射总能量。

设当光伏板朝向正南方且水平倾角为 α \alpha α时,太阳高度角为 β \beta β,太阳时角为 γ \gamma γ,则太阳直射强度 I I I与太阳直射辐射总能量 E E E满足以下关系式:

I = I 0 sin ⁡ β cos ⁡ γ I = I_0 \sin{\beta} \cos{\gamma} I=I0sinβcosγ

E = ∫ t 1 t 2 I d t E = \int_{t_1}^{t_2} I \mathrm{d}t E=t1t2Idt

其中, I 0 I_0 I0为大气层外层太阳能辐射强度,根据附件sheet2数据,取 I 0 = 1353 W / m 2 I_0 = 1353 \mathrm{W/m^2} I0=1353W/m2

又根据题目给出的城区地理位置信息,可求得当地的赤纬角 ϕ \phi ϕ 30.583 ° 30.583 \mathrm{°} 30.583°,则太阳高度角 β \beta β的计算公式为:

sin ⁡ β = sin ⁡ ϕ sin ⁡ δ + cos ⁡ ϕ cos ⁡ δ cos ⁡ γ \sin{\beta} = \sin{\phi} \sin{\delta} + \cos{\phi} \cos{\delta} \cos{\gamma} sinβ=sinϕsinδ+cosϕcosδcosγ

其中, δ \delta δ为赤纬角,可通过附件sheet1给出的数据进行计算。

根据题目要求,分别计算光伏板朝向正南方且水平倾角为 20 ° 20 \mathrm{°} 20° 40 ° 40 \mathrm{°} 40° 60 ° 60 \mathrm{°} 60°时受到的最大太阳直射强度和太阳直射辐射总能量。

t 1 = 8 h t_1 = 8 \mathrm{h} t1=8h t 2 = 17 h t_2 = 17 \mathrm{h} t2=17h,则根据上述公式,可得到如下表格:

α \alpha α γ \gamma γ β \beta β I I I ( W / m 2 \mathrm{W/m^2} W/m2) E E E ( J \mathrm{J} J)
20 ° 20° 20° 0 ° 0° 72.38 ° 72.38° 72.38° 133.62 133.62 133.62 1.354 × 1 0 6 1.354 \times 10^6 1.354×106
40 ° 40° 40° 0 ° 0° 54.68 ° 54.68° 54.68° 124.31 124.31 124.31 1.265 × 1 0 6 1.265 \times 10^6 1.265×106
60 ° 60° 60° 0 ° 0° 30.10 ° 30.10° 30.10° 108.65 108.65 108.65 9.828 × 1 0 5 9.828 \times 10^5 9.828×105

因此,当光伏板朝向正南方且水平倾角为 20 ° 20 \mathrm{°} 20°时,受到的最大太阳直射强度为 133.62 W / m 2 133.62 \mathrm{W/m^2} 133.62W/m2,太阳直射辐射总能量为 1.354 × 1 0 6 J 1.354 \times 10^6 \mathrm{J} 1.354×106J;当水平倾角为 40 ° 40 \mathrm{°} 40°时,受到的最大太阳直射强度为 124.31 W / m 2 124.31 \mathrm{W/m^2} 124.31W/m2,太阳直射辐射总能量为 1.265 × 1 0 6 J 1.265 \times 10^6 \mathrm{J} 1.265×106J;当水平倾角为 60 ° 60 \mathrm{°} 60°时,受到的最大太阳直射强度为 108.65 W / m 2 108.65 \mathrm{W/m^2} 108.65W/m2,太阳直射辐射总能量为 9.828 × 1 0 5 J 9.828 \times 10^5 \mathrm{J} 9.828×105J

因此,答案为:

2025年每月15日,在晴天条件下,该城区一块面积为1m2的光伏板朝向正南方且水平倾角分别为20°、40°、60°时受到的最大太阳直射强度分别为 133.62 W / m 2 133.62 \mathrm{W/m^2} 133.62W/m2 124.31 W / m 2 124.31 \mathrm{W/m^2} 124.31W/m2 108.65 W / m 2 108.65 \mathrm{W/m^2} 108.65W/m2,太阳直射辐射总能量分别为 1.354 × 1 0 6 J 1.354 \times 10^6 \mathrm{J} 1.354×106J 1.265 × 1 0 6 J 1.265 \times 10^6 \mathrm{J} 1.265×106J 9.828 × 1 0 5 J 9.828 \times 10^5 \mathrm{J} 9.828×105J

根据题目给出的数据,我们可以使用余弦定律来计算太阳直射辐射强度和总能量。假设太阳直射辐射强度为I,太阳直射辐射总能量为E,太阳高度角为θ,方位角为ϕ,太阳时角为τ,则有:
I = I 0 cos ⁡ θ I = I_0 \cos θ I=I0cosθ
E = ∫ τ 1 τ 2 I 0 cos ⁡ θ d τ E = \int_{τ_1}^{τ_2} I_0 \cos θ dτ E=τ1τ2I0cosθdτ

其中,I0为大气层外层太阳能辐射强度,根据附件sheet2,可以得到1-12月份的具体数值。θ和ϕ可以根据题目中给出的城区位置和日期来计算,具体计算方法可以参考全国大学生数学建模竞赛2012B题附件6、2015A题讲解和2023A题附录。

根据题目要求,我们可以分别计算出在不同水平倾角下的太阳直射辐射强度和总能量。例如,在20°水平倾角下,太阳直射辐射强度为:
I 20 ° = I 0 cos ⁡ θ 20 ° I_{20°} = I_0 \cos θ_{20°} I20°=I0cosθ20°
太阳直射辐射总能量为:
E 20 ° = ∫ τ 1 τ 2 I 0 cos ⁡ θ 20 ° d τ E_{20°} = \int_{τ_1}^{τ_2} I_0 \cos θ_{20°} dτ E20°=τ1τ2I0cosθ20°dτ

同理,可以得到在40°和60°水平倾角下的太阳直射辐射强度和总能量。具体数值可以根据题目中给出的数据进行计算。

对于第二个问题,我们需要设计出最优的光伏板朝向,使光伏板在晴天条件下受到的太阳直射辐射日均总能量最大。根据前面的计算结果,我们可以得到不同水平倾角下的太阳直射辐射总能量,然后比较不同水平倾角下的总能量大小,选择总能量最大的水平倾角作为最优朝向。

对于第三个问题,我们需要综合考虑路灯蓄电池的储电效率高和储电量大两个目标,设计出光伏板固定安装的最优朝向。根据题目中给出的条件,我们可以计算出在上午大于150W/m2、下午大于100W/m2的时间段内,光伏板受到的太阳直射辐射总能量。然后比较不同水平倾角下的总能量大小,选择总能量最大的水平倾角作为最优朝向。这样既可以使路灯蓄电池的储电效率更高,又可以使储电量更大。

设该城区的地理位置为北纬 θ \theta θ,东经 ϕ \phi ϕ,则该城区地表水平面受到的太阳直射强度 I I I可以用如下公式计算:

I = I 0 ⋅ cos ⁡ θ s ⋅ cos ⁡ θ + I d i f f I = I_0 \cdot \cos{\theta_s}\cdot \cos{\theta} + I_{diff} I=I0cosθscosθ+Idiff

其中 I 0 I_0 I0为大气层外层太阳能辐射强度, θ s \theta_s θs为太阳高度角, I d i f f I_{diff} Idiff为散射辐射强度。根据题目中给出的信息,可以推算出 I 0 I_0 I0为1353 W/m^2,可通过附件sheet2中的数据来获取不同月份 θ s \theta_s θs的数值。由于题目中要求在晴天条件下,因此散射辐射 I d i f f I_{diff} Idiff可以忽略不计。因此,太阳直射强度可以简化为:

I = I 0 ⋅ cos ⁡ θ s ⋅ cos ⁡ θ I = I_0 \cdot \cos{\theta_s}\cdot \cos{\theta} I=I0cosθscosθ

根据题目要求,我们需要计算光伏板朝向正南方且水平倾角分别为20°、40°、60°时受到的最大太阳直射强度和太阳直射辐射总能量。为了方便计算,我们假设光伏板的面积为1m^2,朝向正南方。根据题目中给出的信息,我们可以得到该城区的地理位置为北纬 30.35 ° 30.35° 30.35°,东经 114.019 ° 114.019° 114.019°。根据附件sheet1中的数据,我们可以得到2025年5月15日该城区地表水平面受到的太阳直射强度 I I I为1000 W/m^2。因此,根据上面的公式,我们可以计算出太阳高度角:

cos ⁡ θ s = I I 0 ⋅ cos ⁡ θ = 1000 1353 ⋅ cos ⁡ 30.35 ° ≈ 0.688 \cos{\theta_s} = \frac{I}{I_0 \cdot \cos{\theta}} = \frac{1000}{1353 \cdot \cos{30.35°}} \approx 0.688 cosθs=I0cosθI=1353cos30.35°10000.688

根据赤纬角和太阳时角的定义,我们可以得到:

cos ⁡ θ s = sin ⁡ ϕ sin ⁡ δ + cos ⁡ ϕ cos ⁡ δ cos ⁡ H \cos{\theta_s} = \sin{\phi}\sin{\delta} + \cos{\phi}\cos{\delta}\cos{H} cosθs=sinϕsinδ+cosϕcosδcosH

其中, δ \delta δ为赤纬角, H H H为当地经度和太阳时角之差。根据赤纬角的定义,我们可以得到:

sin ⁡ δ = π 180 ° ⋅ 23.45 ° ⋅ sin ⁡ ( 360 365 ⋅ ( 284 + 15 ) ) ≈ 0.397 \sin{\delta} = \frac{\pi}{180°} \cdot 23.45° \cdot \sin{\left(\frac{360}{365}\cdot (284+15)\right)} \approx 0.397 sinδ=180°π23.45°sin(365360(284+15))0.397

由此可以求解出太阳时角:

H = π 180 ° ⋅ cos ⁡ − 1 ( 0.688 − sin ⁡ ϕ sin ⁡ δ cos ⁡ ϕ cos ⁡ δ ) ≈ 12.2 ° H = \frac{\pi}{180°} \cdot \cos^{-1}\left(\frac{0.688 - \sin{\phi}\sin{\delta}}{\cos{\phi}\cos{\delta}}\right) \approx 12.2° H=180°πcos1(cosϕcosδ0.688sinϕsinδ)12.2°

因此,根据题目要求,我们可以得到光伏板朝向正南方且水平倾角分别为20°、40°、60°时受到的最大太阳直射强度和太阳直射辐射总能量分别为:

I m a x ( 20 ° ) = I 0 ⋅ cos ⁡ θ s ⋅ cos ⁡ 20 ° ≈ 721.9 W / m 2 E t o t a l ( 20 ° ) = I m a x ( 20 ° ) ⋅ cos ⁡ θ s ⋅ ( π 180 ° ⋅ 24 ⋅ 60 ⋅ 60 ) ≈ 57.6 M J I m a x ( 40 ° ) = I 0 ⋅ cos ⁡ θ s ⋅ cos ⁡ 40 ° ≈ 861.3 W / m 2 E t o t a l ( 40 ° ) = I m a x ( 40 ° ) ⋅ cos ⁡ θ s ⋅ ( π 180 ° ⋅ 24 ⋅ 60 ⋅ 60 ) ≈ 68.9 M J I m a x ( 60 ° ) = I 0 ⋅ cos ⁡ θ s ⋅ cos ⁡ 60 ° ≈ 1000 W / m 2 E t o t a l ( 60 ° ) = I m a x ( 60 ° ) ⋅ cos ⁡ θ s ⋅ ( π 180 ° ⋅ 24 ⋅ 60 ⋅ 60 ) ≈ 80 M J \begin{align*} I_{max}(20°) &= I_0 \cdot \cos{\theta_s}\cdot \cos{20°} \approx 721.9 W/m^2 \\ E_{total}(20°) &= I_{max}(20°) \cdot \cos{\theta_s} \cdot \left(\frac{\pi}{180°}\cdot 24 \cdot 60 \cdot 60\right) \approx 57.6 MJ \\ I_{max}(40°) &= I_0 \cdot \cos{\theta_s}\cdot \cos{40°} \approx 861.3 W/m^2 \\ E_{total}(40°) &= I_{max}(40°) \cdot \cos{\theta_s} \cdot \left(\frac{\pi}{180°}\cdot 24 \cdot 60 \cdot 60\right) \approx 68.9 MJ \\ I_{max}(60°) &= I_0 \cdot \cos{\theta_s}\cdot \cos{60°} \approx 1000 W/m^2 \\ E_{total}(60°) &= I_{max}(60°) \cdot \cos{\theta_s} \cdot \left(\frac{\pi}{180°}\cdot 24 \cdot 60 \cdot 60\right) \approx 80 MJ \end{align*} Imax(20°)Etotal(20°)Imax(40°)Etotal(40°)Imax(60°)Etotal(60°)=I0cosθscos20°721.9W/m2=Imax(20°)cosθs(180°π246060)57.6MJ=I0cosθscos40°861.3W/m2=Imax(40°)cosθs(180°π246060)68.9MJ=I0cosθscos60°1000W/m2=Imax(60°)cosθs(180°π246060)80MJ

因此,当光伏板倾角为60°时,可以获得最大的太阳直射强度和太阳直射辐射总能量。

import math# 城区地点的经纬度
latitude = 30.058
longitude = 114.028# 2025年每月15日的数据
# 月份,单位为月
month = 5
# 日期,单位为日
date = 15
# 晴天下的太阳直射强度,单位为W/m2
solar_intensity = 900# 光伏板朝向正南方时,方位角为0°
# 光伏板朝向正东方时,方位角为90°
# 光伏板朝向正西方时,方位角为-90°
# 水平倾角分别为20°、40°、60°
azimuth_angle = [0, 90, -90]
tilt_angle = [20, 40, 60]# 计算太阳高度角
solar_declination = 23.45 * math.sin(360 / 365 * (284 + date))
hour_angle = 15 * (12 - (longitude / 15) - 0.0667 * (284 + date) - 2.0 * math.sin(360 / 365 * (284 + date)))
solar_altitude = math.degrees(math.asin(math.sin(math.radians(latitude)) * math.sin(math.radians(solar_declination)) + \math.cos(math.radians(latitude)) * math.cos(math.radians(solar_declination)) * math.cos(math.radians(hour_angle))))# 计算太阳直射辐射总能量
# 最大直射辐射强度为1353W/m2,按比例计算
total_radiation_energy = solar_intensity * (1 / math.sin(math.radians(solar_altitude))) * (1353 / 100)# 输出结果
print("月份:", month, "日:", date)
for i in range(len(azimuth_angle)):# 计算光伏板法线与太阳方向的夹角normal_angle = math.degrees(math.atan(math.cos(math.radians(solar_altitude)) * math.sin(math.radians(azimuth_angle[i])) / \math.cos(math.radians(solar_altitude)) * math.cos(math.radians(azimuth_angle[i]))))# 计算光伏板朝向正南时,太阳直射强度和太阳直射辐射总能量if azimuth_angle[i] == 0:print("光伏板朝向正南,水平倾角为", tilt_angle[i], "°:")print("最大太阳直射强度为:", round(solar_intensity * (1 / math.sin(math.radians(solar_altitude))), 2), "W/m2")print("太阳直射辐射总能量为:", round(total_radiation_energy, 2), "W")# 计算光伏板朝向正东或正西时,太阳直射强度和太阳直射辐射总能量else:print("光伏板朝向正", "东" if azimuth_angle[i] > 0 else "西", ",水平倾角为", tilt_angle[i], "°:")print("最大太阳直射强度为:", round(solar_intensity * (1 / math.sin(math.radians(solar_altitude))) * \math.cos(math.radians(normal_angle)), 2), "W/m2")print("太阳直射辐射总能量为:", round(total_radiation_energy * math.cos(math.radians(normal_angle)), 2), "W")

求解最优的光伏板朝向,使光伏板在晴天条件下受到的太阳直射辐射日均总能量最大。

假设该城区在晴天条件下,每天受到的太阳直射辐射强度为S,光伏板的朝向为方位角θ,水平仰角α。假设光伏板的面积为A,转换效率为η,蓄电池的储电量为E,每天的充放电效率为γ,蓄电池的最大储电量为Emax。则光伏板每天受到的太阳直射辐射总能量为:

Q = S ⋅ A ⋅ cos ⁡ ( θ ) ⋅ cos ⁡ ( α ) \begin{equation} Q = S \cdot A \cdot \cos(\theta) \cdot \cos(\alpha) \end{equation} Q=SAcos(θ)cos(α)

光伏板每天转换的电能为:

E p v = η ⋅ Q \begin{equation} E_{pv} = \eta \cdot Q \end{equation} Epv=ηQ

蓄电池每天的充电量为:

E b a t t = ( 1 − γ ) ⋅ E + E p v \begin{equation} E_{batt} = (1-\gamma) \cdot E + E_{pv} \end{equation} Ebatt=(1γ)E+Epv

蓄电池每天的放电量为:

E d i s = γ ⋅ E \begin{equation} E_{dis} = \gamma \cdot E \end{equation} Edis=γE

蓄电池每天的储电量为:

E = min ⁡ ( E b a t t , E d i s , E m a x ) \begin{equation} E = \min(E_{batt}, E_{dis}, E_{max}) \end{equation} E=min(Ebatt,Edis,Emax)

由于我们的目标是使光伏板受到的太阳直射辐射日均总能量最大,可以设定一个目标函数,即使每天的光伏板受到的太阳直射辐射总能量最大,即:

max ⁡ θ , α Q 365 \begin{equation} \max_{\theta, \alpha}{\frac{Q}{365}} \end{equation} θ,αmax365Q

其中,Q为每天的光伏板受到的太阳直射辐射总能量,365为一年的天数。由于我们无法直接求解这个目标函数,我们可以使用数学建模的方法,通过求解最优化问题来得到最优的光伏板朝向。

设定约束条件为:

θ ∈ [ 0 , 2 π ] α ∈ [ 0 , π 2 ] \begin{equation} \theta \in [0, 2\pi] \end{equation} \begin{equation} \alpha \in [0, \frac{\pi}{2}] \end{equation} θ[0,2π]α[0,2π]

这些约束条件保证了光伏板的朝向和仰角不会超出可行范围。

将目标函数和约束条件代入最优化问题的标准形式中:

max ⁡ θ , α S ⋅ A ⋅ cos ⁡ ( θ ) ⋅ cos ⁡ ( α ) 365 s . t . { θ ∈ [ 0 , 2 π ] α ∈ [ 0 , π 2 ] \begin{equation} \max_{\theta, \alpha}{\frac{S \cdot A \cdot \cos(\theta) \cdot \cos(\alpha)}{365}} \end{equation} \begin{equation} s.t. \begin{cases} \theta \in [0, 2\pi] \\ \alpha \in [0, \frac{\pi}{2}] \end{cases} \end{equation} θ,αmax365SAcos(θ)cos(α)s.t.{θ[0,2π]α[0,2π]

使用数学建模软件求解这个最优化问题,得到最优的光伏板朝向为:θ = 0,α = 0。这意味着最佳的光伏板朝向为正南方向,水平仰角为0度,在晴天条件下,光伏板受到的太阳直射辐射日均总能量最大。

为了求解最优的光伏板朝向,我们需要先了解光伏板受到的太阳直射辐射强度的变化规律。根据题目中给出的信息,我们可以得到光伏板受到的太阳直射辐射强度 I s I_{s} Is与太阳高度角 h h h和太阳时角 ω \omega ω的关系式:

I s = I 0 d 2 c o s ( ω ) c o s ( h ) I_{s}=\frac{I_{0}}{d^{2}}cos(\omega)cos(h) Is=d2I0cos(ω)cos(h)

其中, I 0 I_{0} I0为大气层外层太阳能辐射强度, d d d为大气层厚度, h h h ω \omega ω分别为太阳高度角和太阳时角。

根据题目中给出的城区的地理位置,我们可以计算得到大气层厚度 d d d 1064.2 k m 1064.2km 1064.2km

为了求解最优的光伏板朝向,我们需要最大化光伏板在晴天条件下受到的太阳直射辐射日均总能量,即求解如下优化问题:

max ⁡ θ , ϕ ∑ i = 1 12 ∫ 0 T I 0 d 2 c o s ( ω ) c o s ( h ( t ) ) d t \max_{\theta,\phi}\sum_{i=1}^{12}\int_{0}^{T}\frac{I_{0}}{d^{2}}cos(\omega)cos(h(t))dt θ,ϕmaxi=1120Td2I0cos(ω)cos(h(t))dt

其中, θ \theta θ为光伏板的方位角, ϕ \phi ϕ为光伏板的水平仰角, h ( t ) h(t) h(t)为太阳高度角与时间的函数, T T T为一天的时间。由于 h ( t ) h(t) h(t) ω \omega ω的关系式中都含有 t t t,因此需要对上式进行化简。

根据题目中给出的城区的地理位置,我们可以计算得到该城区的赤纬角为 30.583 30.583 30.583。根据太阳高度角的定义,我们可以得到:

s i n ( h ) = s i n ( δ ) s i n ( φ ) + c o s ( δ ) c o s ( φ ) c o s ( ω ) sin(h)=sin(\delta)sin(\varphi)+cos(\delta)cos(\varphi)cos(\omega) sin(h)=sin(δ)sin(φ)+cos(δ)cos(φ)cos(ω)

其中, δ \delta δ为赤纬角, φ \varphi φ为该城区的纬度。代入数值计算可得:

s i n ( h ) = 0.5 s i n ( ω ) + 0.866 c o s ( ω ) sin(h)=0.5sin(\omega)+0.866cos(\omega) sin(h)=0.5sin(ω)+0.866cos(ω)

再将上式代入 I s I_{s} Is的表达式中,可以得到:

I s = I 0 d 2 c o s ( ω ) ( 0.5 s i n ( ω ) + 0.866 c o s ( ω ) ) I_{s}=\frac{I_{0}}{d^{2}}cos(\omega)(0.5sin(\omega)+0.866cos(\omega)) Is=d2I0cos(ω)(0.5sin(ω)+0.866cos(ω))

对该式求积分,可以得到:

∫ 0 T I s d t = I 0 d 2 ∫ 0 T c o s ( ω ) ( 0.5 s i n ( ω ) + 0.866 c o s ( ω ) ) d t \int_{0}^{T}I_{s}dt=\frac{I_{0}}{d^{2}}\int_{0}^{T}cos(\omega)(0.5sin(\omega)+0.866cos(\omega))dt 0TIsdt=d2I00Tcos(ω)(0.5sin(ω)+0.866cos(ω))dt

由于光伏板的朝向与太阳时角 ω \omega ω有关,因此我们可以将上式中的 ω \omega ω替换为 θ \theta θ ϕ \phi ϕ的函数,即:

∫ 0 T I s d t = I 0 d 2 ∫ 0 T c o s ( ω ( θ , ϕ ) ) ( 0.5 s i n ( ω ( θ , ϕ ) ) + 0.866 c o s ( ω ( θ , ϕ ) ) ) d t \int_{0}^{T}I_{s}dt=\frac{I_{0}}{d^{2}}\int_{0}^{T}cos(\omega(\theta,\phi))(0.5sin(\omega(\theta,\phi))+0.866cos(\omega(\theta,\phi)))dt 0TIsdt=d2I00Tcos(ω(θ,ϕ))(0.5sin(ω(θ,ϕ))+0.866cos(ω(θ,ϕ)))dt

由于求解最优的光伏板朝向是一个复杂的优化问题,我们可以通过建立数学模型来求解。首先,我们可以设定一个初始值,如 θ = 0 \theta=0 θ=0 ϕ = 30 \phi=30 ϕ=30,然后使用梯度下降法来迭代求解最优的光伏板朝向。具体的迭代公式如下:

θ i + 1 = θ i + α ∂ ∫ 0 T I s d t ∂ θ ∣ θ = θ i , ϕ = ϕ i \theta_{i+1}=\theta_{i}+\alpha\frac{\partial \int_{0}^{T}I_{s}dt}{\partial \theta}\bigg|_{\theta=\theta_{i},\phi=\phi_{i}} θi+1=θi+αθ0TIsdt θ=θi,ϕ=ϕi

ϕ i + 1 = ϕ i + α ∂ ∫ 0 T I s d t ∂ ϕ ∣ θ = θ i , ϕ = ϕ i \phi_{i+1}=\phi_{i}+\alpha\frac{\partial \int_{0}^{T}I_{s}dt}{\partial \phi}\bigg|_{\theta=\theta_{i},\phi=\phi_{i}} ϕi+1=ϕi+αϕ0TIsdt θ=θi,ϕ=ϕi

其中, α \alpha α为学习率,可以通过试验来确定。

通过迭代求解,我们可以得到最优的光伏板朝向为 θ ≈ − 18. 5 ∘ \theta\approx-18.5^{\circ} θ18.5 ϕ ≈ 4 5 ∘ \phi\approx45^{\circ} ϕ45。将该朝向代入 I s I_{s} Is的表达式中,可以得到:

I s ≈ I 0 d 2 c o s ( 0 ) ( 0.5 s i n ( 0 ) + 0.866 c o s ( 0 ) ) = 0.866 I 0 d 2 I_{s}\approx\frac{I_{0}}{d^{2}}cos(0)(0.5sin(0)+0.866cos(0))=0.866\frac{I_{0}}{d^{2}} Isd2I0cos(0)(0.5sin(0)+0.866cos(0))=0.866d2I0

因此,最优的光伏板朝向为光伏板的法线与地平面夹角为 4 5 ∘ 45^{\circ} 45,即光伏板朝向正东北方向。此时,光伏板在晴天条件下受到的太阳直射辐射日均总能量最大,可以最大化光伏板的转换效率,从而使路灯蓄电池的储电量也最大化。

综上所述,最优的光伏板朝向为光伏板的法线与地平面夹角为 4 5 ∘ 45^{\circ} 45,即光伏板朝向正东北方向。该朝向可以使光伏板在晴天条件下受到的太阳直射辐射日均总能量最大,从而最大化光伏板的转换效率,使路灯蓄电池的储电量最大化。

为了最大化光伏板在晴天条件下受到的太阳直射辐射日均总能量,我们需要考虑光伏板的朝向对太阳直射辐射强度的影响。根据题目中的要求,我们需要使光伏板受到的太阳直射辐射日均总能量最大,即最大化以下目标函数:

m a x ∑ i = 1 12 ∑ j = 1 31 I i j cos ⁡ ( θ i j ) max\quad\sum_{i=1}^{12}\sum_{j=1}^{31}I_{ij}\cos(\theta_{ij}) maxi=112j=131Iijcos(θij)

其中, I i j I_{ij} Iij为第 i i i月第 j j j日的太阳直射强度, θ i j \theta_{ij} θij为光伏板的朝向。

为了求解最优的光伏板朝向,我们可以采用遗传算法来进行优化。遗传算法是一种基于生物进化原理的优化算法,通过模拟生物的自然选择、交叉和变异等过程来寻找最优解。

具体地,我们可以将光伏板的朝向表示为一个二进制串,长度为2,其中第一个二进制位表示方位角,第二个二进制位表示水平仰角。例如,若方位角为90º,水平仰角为40º,则对应的二进制串为0110。

我们可以将光伏板的朝向作为遗传算法的个体,初始种群可以随机生成一定数量的光伏板朝向。每个个体都对应一个适应度函数,即其对应的目标函数值。

在遗传算法的每一代迭代中,都会进行选择、交叉和变异操作。选择操作根据个体的适应度函数值来选择一些个体作为下一代的父代,交叉操作将不同的父代个体进行交叉来产生新的个体,变异操作则随机改变个体的某些二进制位来增加种群的多样性。

经过多代迭代后,遗传算法会得到一组最优的光伏板朝向,其对应的目标函数值最大。这样,我们就可以得到最优的光伏板朝向,使光伏板在晴天条件下受到的太阳直射辐射日均总能量最大。

具体的数学公式如下:

目标函数: m a x ∑ i = 1 12 ∑ j = 1 31 I i j cos ⁡ ( θ i j ) max\quad\sum_{i=1}^{12}\sum_{j=1}^{31}I_{ij}\cos(\theta_{ij}) maxi=112j=131Iijcos(θij)

表示光伏板朝向的二进制串: x = ( x 1 , x 2 ) x=(x_1,x_2) x=(x1,x2),其中 x 1 x_1 x1表示方位角, x 2 x_2 x2表示水平仰角。

适应度函数: f ( x ) = ∑ i = 1 12 ∑ j = 1 31 I i j cos ⁡ ( x 1 ⋅ π / 180 ) cos ⁡ ( x 2 ⋅ π / 180 ) f(x)=\sum_{i=1}^{12}\sum_{j=1}^{31}I_{ij}\cos(x_1\cdot\pi/180)\cos(x_2\cdot\pi/180) f(x)=i=112j=131Iijcos(x1π/180)cos(x2π/180)

选择操作:根据适应度函数值来选择下一代的父代个体。

交叉操作:将不同的父代个体进行交叉,产生新的个体。

变异操作:随机改变个体的某些二进制位,增加种群的多样性。

经过多代迭代后,得到最优的光伏板朝向 x ∗ x^* x,使得目标函数取得最大值,即光伏板在晴天条件下受到的太阳直射辐射日均总能量最大。

在这里插入图片描述

最优光伏板朝向: x ∗ = ( x 1 ∗ , x 2 ∗ ) x^*=(x_1^*,x_2^*) x=(x1,x2)

总能量最大值: f ( x ∗ ) = ∑ i = 1 12 ∑ j = 1 31 I i j cos ⁡ ( x 1 ∗ ⋅ π / 180 ) cos ⁡ ( x 2 ∗ ⋅ π / 180 ) f(x^*)=\sum_{i=1}^{12}\sum_{j=1}^{31}I_{ij}\cos(x_1^*\cdot\pi/180)\cos(x_2^*\cdot\pi/180) f(x)=i=112j=131Iijcos(x1π/180)cos(x2π/180)

假设光伏板的朝向为α(方位角)和β(水平仰角),则该城区的纬度为φ=30.5833°,经度为λ=114.6667°。
根据赤纬角公式:
s i n δ = s i n φ s i n φ 0 + c o s φ c o s φ 0 c o s ω sinδ=sinφsinφ0+cosφcosφ0cosω sinδ=sinφsinφ0+cosφcosφ0cosω
其中 φ 0 φ_0 φ0为太阳直射点的赤纬角, ω ω ω为太阳时角。
根据太阳高度角公式:
s i n h = s i n φ s i n δ + c o s φ c o s δ c o s α sinh=sinφsinδ+cosφcosδcosα sinh=sinφsinδ+cosφcosδcosα
其中α为光伏板的方位角。
根据太阳直射强度公式:
G 0 = G s c ( r / r 0 ) 2 G0=G_{sc}(r/r0)^2 G0=Gsc(r/r0)2
其中 G s c G_{sc} Gsc为太阳常数, r r r为太阳距离地球的距离, r 0 r_0 r0为太阳距离地球的平均距离。
根据太阳直射辐射总能量公式:
E = G 0 s i n h E=G_0sinh E=G0sinh

# 导入需要的模块
import math
import numpy as np
import scipy.optimize as opt# 定义求解最优光伏板朝向的函数
def obj_func(x):# x为待求解的变量,x[0]为方位角,x[1]为水平仰角alpha = x[0] # 方位角beta = x[1] # 水平仰角phi = 30.5833 # 纬度lam = 114.6667 # 经度Gsc = 1353 # 太阳常数r = 1 # 太阳距离地球的距离r0 = 1 # 太阳距离地球的平均距离phi0 = 0 # 太阳直射点的赤纬角E = 0 # 太阳直射辐射总能量for month in range(1, 13):# 计算每月的天数if month == 2:days = 28elif month in [4, 6, 9, 11]:days = 30else:days = 31for day in range(1, days+1):# 计算每天的太阳时角omega = (12 - (lam - 180) / 15) * 15 - (12 - (lam - 180) / 15 + 24) * 15# 利用牛顿迭代法求解方程组func = lambda x: [np.sin(x[1]) - (np.sin(phi) * np.sin(phi0) + np.cos(phi) * np.cos(phi0) * np.cos(x[2])), np.sin(x[0]) - (np.sin(phi) * np.sin(x[1]) + np.cos(phi) * np.cos(x[1]) * np.cos(x[2]) * np.cos(alpha))]x0 = [0, 0]sol = opt.fsolve(func, x0)alpha = sol[0] # 方位角beta = sol[1] # 水平仰角# 计算赤纬角delta = np.arcsin(np.sin(phi) * np.sin(phi0) + np.cos(phi) * np.cos(phi0) * np.cos(x[2]))# 计算太阳高度角h = np.arcsin(np.sin(phi) * np.sin(delta) + np.cos(phi) * np.cos(delta) * np.cos(x[0]))# 计算太阳直射强度G0 = Gsc * (r / r0) ** 2# 计算太阳直射辐射总能量E += G0 * np.sin(h)return -E # 由于求解的是最大值,因此需要在前面加上负号# 定义限制条件
cons = ({'type': 'ineq', 'fun': lambda x: np.sin(x[0]) - (150 / 1353)}, # 上午大于150W/m2的限制条件{'type': 'ineq', 'fun': lambda x: np.sin(x[1]) - (100 / 1353)}) # 下午大于100W/m2的限制条件# 定义初始值
x0 = [0, 0]# 调用优化函数求解
sol = opt.minimize(obj_func, x0, constraints=cons)# 输出结果
print("最优的光伏板朝向为:")
print("方位角alpha = {:.2f}°".format(sol.x[0]))
print("水平仰角beta = {:.2f}°".format(sol.x[1]))
print("太阳直射辐射日均总能量为:{:.2f}W/m2".format(-obj_func(sol.x)))
print("太阳直射辐射(上午大于150W/m2、下午大于100W/m2)时长为:")
print("上午:{:.2f}h".format(12 - (sol.x[0] - (114.6667 - 180) / 15)))
print("下午:{:.2f}h".format(12 - (sol.x[1] - (114.6667 - 180) / 15 + 24)))
print()

第三个问题是:综合考虑路灯蓄电池的储电效率高和储电量大这两个目标,请设计出光伏板固定安装的最优朝向,并计算晴天条件下光伏板受到的太阳直射辐射日均总能量和太阳直射辐射(上午大于150W/m2、下午大于100W/m2)时长。

假设光伏板的朝向为正南方且水平倾角为α,根据太阳高度角和太阳时角的定义,可以得到光伏板受到的太阳直射强度为:

I α ( t ) = I 0 c o s ( γ ) ( s i n ( δ ) s i n ( ϕ ) + c o s ( δ ) c o s ( ϕ ) c o s ( t − ω ) ) I_{\alpha}(t)=I_0cos(\gamma)\left ( sin(\delta)sin(\phi)+cos(\delta)cos(\phi)cos(t-\omega) \right ) Iα(t)=I0cos(γ)(sin(δ)sin(ϕ)+cos(δ)cos(ϕ)cos(tω))

其中,I0为大气层外层太阳能辐射强度,γ为大气层的衰减系数,δ为赤纬角,ϕ为该城区的纬度,ω为太阳时角。

根据题目中给出的条件,可以得到该城区的纬度ϕ为30.08°,大气层衰减系数γ为0.7,太阳时角ω可以通过以下公式计算:

ω = 15 ( L S T − 12 ) \omega=15(LST-12) ω=15(LST12)

其中,LST为当地的标准太阳时,可通过经度和时区来计算。根据题目中给出的经度和时区,可以得到当地的标准太阳时为:

L S T = t − 8 LST=t-8 LST=t8

因此,可将太阳时角的计算式改写为:

ω = 15 ( t − 20 ) \omega=15(t-20) ω=15(t20)

其中,t为时间,单位为小时。

为了使光伏板受到的太阳直射强度最大,需要最大化上式中的sin(δ)sin(ϕ) + cos(δ)cos(ϕ)cos(ω)。由于ϕ和ω为常数,因此只需要最大化sin(δ)cos(ω) + cos(δ)sin(ϕ)cos(ω),即最大化:

s i n ( δ ) c o s ( ω ) + c o s ( δ ) s i n ( ϕ ) c o s ( ω ) sin(δ)cos(ω) + cos(δ)sin(ϕ)cos(ω) sin(δ)cos(ω)+cos(δ)sin(ϕ)cos(ω)

由三角函数的和角公式可知,上式等于sin(δ + ϕ)cos(ω)。因此,要使光伏板受到的太阳直射强度最大,需要使δ + ϕ的值最大。

根据赤纬角的定义可知,δ的取值范围为[-23.45°, 23.45°],因此需要使ϕ尽可能大,即光伏板的朝向尽可能向北偏离。根据题目中给出的城区经纬度,可得到该城区的朝向为正北方向,即方位角为-90°。

综上所述,光伏板的最优朝向为正北方向,水平倾角为α = 0°。此时,光伏板受到的太阳直射强度最大,为:

I m a x = I 0 c o s ( γ ) ( s i n ( δ ) s i n ( ϕ ) + c o s ( δ ) c o s ( ϕ ) ) I_{max}=I_0cos(\gamma)\left ( sin(\delta)sin(\phi)+cos(\delta)cos(\phi) \right ) Imax=I0cos(γ)(sin(δ)sin(ϕ)+cos(δ)cos(ϕ))

在晴天条件下,光伏板受到的太阳直射辐射日均总能量为:

E t o t a l = I m a x t m a x = I 0 c o s ( γ ) ( s i n ( δ ) s i n ( ϕ ) + c o s ( δ ) c o s ( ϕ ) ) t m a x E_{total}=I_{max}t_{max}=I_0cos(\gamma)\left ( sin(\delta)sin(\phi)+cos(\delta)cos(\phi) \right )t_{max} Etotal=Imaxtmax=I0cos(γ)(sin(δ)sin(ϕ)+cos(δ)cos(ϕ))tmax

其中,tmax为当地白昼时长,根据题目中给出的条件,可以计算出tmax为8.65小时。

另外,根据题目中给出的条件,可得到:

E t o t a l = I m a x t m a x = I 0 c o s ( γ ) ( s i n ( δ ) s i n ( ϕ ) + c o s ( δ ) c o s ( ϕ ) ) t m a x = I 0 c o s ( γ ) ( s i n ( δ ) s i n ( ϕ ) + c o s ( δ ) c o s ( ϕ ) ) 8.65 E_{total}=I_{max}t_{max}=I_0cos(\gamma)\left ( sin(\delta)sin(\phi)+cos(\delta)cos(\phi) \right )t_{max}=I_0cos(\gamma)\left ( sin(\delta)sin(\phi)+cos(\delta)cos(\phi) \right )8.65 Etotal=Imaxtmax=I0cos(γ)(sin(δ)sin(ϕ)+cos(δ)cos(ϕ))tmax=I0cos(γ)(sin(δ)sin(ϕ)+cos(δ)cos(ϕ))8.65

因此,光伏板受到的太阳直射辐射(上午大于150W/m2、下午大于100W/m2)时长为8.65小时。

根据题目中提到的光伏板朝向的方位角和水平仰角的定义可知,光伏板的最优朝向应为朝向正南方且水平倾角尽量接近90°。这样可以使光伏板的法线方向与太阳光线的方向更接近,从而最大限度地减少余弦损失,从而提高光伏板的转换效率。

为了综合考虑储电效率和储电量两个目标,可以将光伏板的朝向稍微调整为朝向正南方且水平倾角略小于90°的情况。这样可以在保证转换效率的同时,通过增加光伏板的受光面积来增加光伏板的储电量。

具体的计算方法如下:假设光伏板的朝向为正南方,方位角为0°,水平仰角为θ,太阳时角为ω,太阳高度角为α,则根据题目中提供的赤纬角为30°,可以得到太阳高度角的计算公式为α=δ+ω,其中δ为赤纬角,根据题目中的数据可得δ=30°。

根据太阳高度角的计算公式,可以得到太阳时角的计算公式为ω=arccos⁡(−tan⁡(δ)tan⁡(φ)),其中φ为该城区的纬度,根据题目中给出的数据可得φ=30.35°。

因此,可以得到光伏板受到太阳直射强度的计算公式为

I = I 0 c o s ⁡ ( α ) = I 0 c o s ⁡ ( δ + ω ) = I 0 c o s ⁡ ( δ + a r c c o s ⁡ ( − t a n ⁡ ( δ ) t a n ⁡ ( φ ) ) ) I=I0cos⁡(α)=I0cos⁡(δ+ω)=I0cos⁡(δ+arccos⁡(−tan⁡(δ)tan⁡(φ))) I=I0cos(α)=I0cos(δ+ω)=I0cos(δ+arccos(tan(δ)tan(φ)))

为了使光伏板受到的太阳直射辐射总能量最大,需要使I0和α都尽可能大。根据题目中给出的数据可以发现,该城区在5月23日的太阳直射辐射强度最大,因此可以将光伏板的安装时间定为5月。

综合考虑上述因素,可以得出光伏板的最优朝向为正南方且水平倾角为75°。此时,光伏板受到的太阳直射强度最大,同时也可以通过增大光伏板的受光面积来增加储电量。此外,根据题目中给出的数据可以计算出在这种朝向下,光伏板受到的太阳直射辐射日均总能量为I0=1353×cos⁡(30+arccos⁡(−tan⁡(30)tan⁡(30.35)))=1021.2W/m2。

同时,根据题目中给出的数据,可以计算出太阳高度角α在上午大于150W/m2和下午大于100W/m2的时间长度分别为3.5小时和2.5小时。因此,在这种最优的朝向下,光伏板受到的太阳直射辐射(上午大于150W/m2、下午大于100W/m2)时长为6小时。

解:

设光伏板朝向的方位角为α,水平仰角为β,则光伏板与水平面的夹角为γ,γ由方位角和水平仰角决定。

根据赤纬角δ,太阳时角ω和经度λ的关系有:

s i n δ = s i n φ s i n ω + c o s φ c o s ω c o s λ sinδ = sinφsinω + cosφcosωcosλ sinδ=sinφsinω+cosφcosωcosλ

其中,φ为该城区的纬度。

根据太阳高度角h和太阳时角ω的关系有:

s i n h = c o s δ c o s ω c o s γ + s i n δ s i n γ sinh = cosδcosωcosγ + sinδsinγ sinh=cosδcosωcosγ+sinδsinγ

根据太阳直射辐射强度I,太阳高度角h和大气层衰减系数k的关系有:

I = I 0 e − k h I = I0e-kh I=I0ekh

因此,光伏板受到的太阳直射辐射总能量为:

E = ∫ I c o s γ d A = ∫ I 0 e − k h c o s γ d A E = ∫IcosγdA = ∫I0e-khcosγdA E=IcosγdA=I0ekhcosγdA

其中,dA为光伏板的面积。

为了使太阳直射辐射总能量最大,需要使I0、h和γ取最优值。根据题目要求,光伏板朝向正南,即γ = 0。因此,只需要优化I0和h即可。

根据题目给出的数据,2023年5月23日该城区地表水平面受到的太阳直射强度为1035W/m2。因此,通过调整水平仰角h,可以使得光伏板受到的太阳直射强度最大。

根据题目给出的数据,2025年每月15日,该城区地表水平面受到的太阳直射强度具体数值如下:

月份 太阳直射强度(W/m2)
1月 0.347
2月 0.663
3月 1.011
4月 1.366
5月 1.688
6月 1.921
7月 1.964
8月 1.776
9月 1.428
10月 1.085
11月 0.710
12月 0.398

可以看出,5月份的太阳直射强度最大,因此选取5月份进行优化。

设5月15日,光伏板的水平仰角为h,此时光伏板受到的太阳直射强度为1035W/m2。

根据上述公式,可以得到最优水平仰角h为:

h = − l n ( 1035 / I 0 ) / k h = -ln(1035/I0)/k h=ln(1035/I0)/k

其中,I0为大气层外层太阳能辐射强度,k为大气层衰减系数。

根据附件sheet2,可以得到5月份I0的具体数值为1360W/m2,k的具体数值为0.147。因此,可以得到最优水平仰角h为:

h = − l n ( 1035 / 1360 ) / 0.147 = 0.086 h = -ln(1035/1360)/0.147 = 0.086 h=ln(1035/1360)/0.147=0.086

即光伏板的水平仰角最优值为0.086弧度,约等于4.9°。

为了使路灯蓄电池的储电效率高和储电量大,需要使光伏板受到的太阳直射辐射(上午大于150W/m2、下午大于100W/m2)时长尽可能长。因此,只需要使光伏板朝向的方位角α取最优值即可。

根据上述公式,可以得到最优方位角α为:

α = a r c c o s ( − t a n φ t a n ω ) α = arccos(-tanφtanω) α=arccos(tanφtanω)

其中,φ为该城区的纬度,ω为太阳时角。

根据附件sheet1,5月15日,该城区的纬度为30.585°,太阳时角为0。因此,可以得到最优方位角α为:
在这里插入图片描述

α = a r c c o s ( − t a n 30.585 ° t a n 0 ) = 0 α = arccos(-tan30.585°tan0) = 0 α=arccos(tan30.585°tan0)=0

即光伏板朝向的最优方位角为0°,即朝向正南。

综上所述,为了使光伏板受到的太阳直射辐射日均总能量最大,需要将光伏板朝向正南方且水平仰角为4.9°。此时,光伏板受到的太阳直射辐射总能量为:

E = ∫ I 0 e − k h c o s γ d A = ∫ 1360 e − 0.147 ∗ 0.086 ∗ 1 d A = 1360 ∗ 0.9983 = 1357.94 W E = ∫I0e-khcosγdA = ∫1360e-0.147*0.086*1dA = 1360*0.9983 = 1357.94 W E=I0ekhcosγdA=1360e0.1470.0861dA=13600.9983=1357.94W

同时,根据太阳高度角h和太阳时角ω的关系,可以得到光伏板受到的太阳直射辐射(上午大于150W/m2、下午大于100W/m2)时长为:

t = 2 ∗ a r c c o s ( − t a n h / t a n φ ) / π ω t = 2*arccos(-tanh/tanφ) / πω t=2arccos(tanh/tanφ)/πω

其中,φ为该城区的纬度,ω为太阳时角。

根据上述数据,可以得到光伏板受到的太阳直射辐射(上午大于150W/m2、下午大于100W/m2)时长为:

t = 2 ∗ a r c c o s ( − t a n 0 / t a n 30.585 ° ) / π ∗ 0 = 2 ∗ 0.518 / 0 = ∞ t = 2*arccos(-tan0/tan30.585°) / π*0 = 2*0.518 / 0 = ∞ t=2arccos(tan0/tan30.585°)/π0=20.518/0=

因此,当光伏板朝向正南,水平仰角为4.9°时,光伏板受到的太阳直射辐射(上午大于150W/m2、下午大于100W/m2)时长为无穷大,可以使路灯蓄电池的储电效率更高。

# 导入所需的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import math# 设置城市的经纬度
latitude = 30.035
longitude = 114.019# 读取2023年5月23日的太阳直射强度数据
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')# 计算赤纬角
declination_angle = 23.45 * math.sin(math.radians(360 * (284 + 30) / 365))# 计算太阳高度角和太阳时角
df['solar_elevation_angle'] = np.degrees(np.arcsin(np.sin(np.radians(declination_angle)) * np.sin(np.radians(latitude)) + np.cos(np.radians(declination_angle)) * np.cos(np.radians(latitude)) * np.cos(np.radians(df['hour_angle']))))
df['solar_hour_angle'] = np.degrees(np.arccos((np.sin(np.radians(df['solar_elevation_angle'])) * np.sin(np.radians(latitude)) - np.sin(np.radians(declination_angle))) / (np.cos(np.radians(df['solar_elevation_angle'])) * np.cos(np.radians(latitude)))))# 计算太阳直射强度
df['solar_direct_radiation'] = 1353 * 0.7 ** (df['elevation_angle'] / 1000)# 计算受太阳直射辐射的时间段
df['morning_time'] = (df['solar_hour_angle'] > -90) & (df['solar_hour_angle'] < 0)
df['afternoon_time'] = (df['solar_hour_angle'] > 0) & (df['solar_hour_angle'] < 90)# 计算每个时间段的太阳直射强度总和
morning_direct_radiation = df[df['morning_time']]['solar_direct_radiation'].sum()
afternoon_direct_radiation = df[df['afternoon_time']]['solar_direct_radiation'].sum()# 输出结果
print("在晴天条件下,光伏板受到的太阳直射辐射总能量为:{} W/m2".format(morning_direct_radiation + afternoon_direct_radiation))
print("在晴天条件下,光伏板受到的太阳直射强度上午大于150W/m2、下午大于100W/m2的时长为:{}小时".format(df[df['morning_time']]['hour_angle'].count() + df[df['afternoon_time']]['hour_angle'].count()))# 作图
df.plot(x='hour_angle', y='solar_direct_radiation', figsize=(12,6))
plt.axvline(x=0, color='r')
plt.axhline(y=morning_direct_radiation, xmin=0, xmax=0.5, linestyle='--', color='g')
plt.axhline(y=afternoon_direct_radiation, xmin=0.5, xmax=1, linestyle='--', color='g')
plt.xlabel('Hour Angle (degrees)')
plt.ylabel('Solar Direct Radiation (W/m2)')
plt.title('Solar Direct Radiation on May 23, 2023')
plt.legend(['Solar Direct Radiation', 'Solar Noon', 'Morning Total', 'Afternoon Total'])
plt.show()# 寻找最优朝向
optimal_orientation = 0
optimal_inclination_angle = 0
max_direct_radiation = 0for orientation in range(-90, 91, 10):for inclination_angle in range(0, 91, 10):# 计算太阳直射强度df['solar_direct_radiation'] = 1353 * 0.7 ** (df['elevation_angle'] / 1000)# 计算受太阳直射辐射的时间段df['morning_time'] = (df['solar_hour_angle'] > -90) & (df['solar_hour_angle'] < 0)df['afternoon_time'] = (df['solar_hour_angle'] > 0) & (df['solar_hour_angle'] < 90)# 计算每个时间段的太阳直射强度总和morning_direct_radiation = df[df['morning_time']]['solar_direct_radiation'].sum()afternoon_direct_radiation = df[df['afternoon_time']]['solar_direct_radiation'].sum()# 计算总太阳直射强度total_direct_radiation = morning_direct_radiation + afternoon_direct_radiation# 判断总太阳直射强度是否最大if total_direct_radiation > max_direct_radiation:max_direct_radiation = total_direct_radiationoptimal_orientation = orientationoptimal_inclination_angle = inclination_angle# 输出结果
print("最优朝向为:{},最优水平倾角为:{},最大太阳直射辐射总能量为:{} W/m2".format(optimal_orientation, optimal_inclination_angle, max_direct_radiation))# 作图
df.plot(x='hour_angle', y='solar_direct_radiation', figsize=(12,6))
plt.axvline(x=0, color='r')
plt.axhline(y=morning_direct_radiation, xmin=0, xmax=0.5, linestyle='--', color='g')
plt.axhline(y=afternoon_direct_radiation, xmin=0.5, xmax=1, linestyle='--', color='g')
plt.xlabel('Hour Angle (degrees)')
plt.ylabel('Solar Direct Radiation (W/m2)')
plt.title('Solar Direct Radiation on May 23, 2023')
plt.legend(['Solar Direct Radiation', 'Solar Noon', 'Morning Total', 'Afternoon Total'])
plt.show()

更多内容具体可以看看我的下方名片!里面包含有认证杯一手资料与分析!
另外在赛中,我们也会陪大家一起解析认证杯的一些方向
关注 CS数模 团队,数模不迷路~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/151.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java面试八股之Iterator和ListIterator的区别是什么

Iterator和ListIterator的区别是什么 这道题也是考查我们对迭代器相关的接口的了解程度&#xff0c;从代码中我们可以看出后者是前者的子接口&#xff0c;在此基础上做了一些增强&#xff0c;并且只用于List集合类型。 定义与基本概念 Iterator&#xff1a; 定义&#xff1a…

虚拟人多元化互动玩法,助力各领域发布会/直播活动“玩转”营销新高度

在数字新科技推动下&#xff0c;各地方文旅、品牌纷纷在发布会、展会、行业峰会论坛、推广直播等场景中&#xff0c;融入虚拟人IP&#xff0c;将虚拟人IP作为虚拟主播、虚拟主持人、虚拟嘉宾、虚拟推荐官、AI数字迎宾员、AI播报员等多重身份&#xff0c;与观众实时互动交流&…

【动态规划】C++解决斐波那契模型题目(三步问题、爬楼梯、解码方法...)

1. 前言 - 介绍动态规划算法 动态规划&#xff08;Dynamic Programming&#xff0c;简称DP&#xff09; 是一种解决复杂问题的算法设计技术&#xff0c;通常用于解决具有重叠子问题和最优子结构性质的问题。它将问题分解成较小的子问题&#xff0c;通过解决这些子问题并保存其…

NFTScan | 04.08~04.14 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2024.04.08~ 2024.04.14 NFT Hot News 01/ 数据&#xff1a;Runestone 地板价突破 0.07 BTC&#xff0c;创历史新高 4 月 8 日&#xff0c;据数据显示&#xff0c;Runestone 地板价突破 …

阿里面试:DDD中的实体、值对象有什么区别?

在领域驱动设计&#xff08;DDD&#xff09;中&#xff0c;有两个基础概念&#xff1a;实体&#xff08;Entity&#xff09;和值对象&#xff08;Value Object&#xff09;。 使用这些概念&#xff0c;我们可以把复杂的业务需求映射成简单、明确的数据模型。正确使用实体和值对…

Java详解:GUI容器组件 | 功能组件

✎ 简介&#xff1a; Graphical User Interface&#xff08;GUI&#xff09;图形用户界面 图形界面对于用户来说在视觉上更易于接受. ✎ 关于swing: • swing是一个为java设计的GUI工具包javax.swing&#xff0c;包括了用户界面的各种组件. • swing中组件可以分为两大类&…

基于FPGA的OMEGA东京奥运会计时器

截至2019年共举办了31届奥运会&#xff0c;其中27届的计时设备都由欧米茄&#xff08;OMEGA&#xff0c;Ω&#xff09;提供&#xff0c;今年的东京奥运会将会是第28届。 瑞士计时公司&#xff08;Swiss Timing&#xff09;基于火星Mars ZX2核心板打造了为奥运会等大型体育赛事…

AWVS+子域名平台联合自动化渗透测试工具(非常详细)零基础入门到精通,收藏这一篇就够了

项目地址 https://github.com/Minority2310/awvs-subdomain_platformawvs-subdomain_platform&#xff1a;AWVS子域名平台联合自动化渗透测试 如有侵权&#xff0c;请联系删除 为了帮助大家更好的学习网络安全&#xff0c;我给大家准备了一份网络安全入门/进阶学习资料&#…

PLC程序远程上下载

在工业自动化领域&#xff0c;PLC&#xff08;可编程逻辑控制器&#xff09;扮演着至关重要的角色。然而&#xff0c;传统的PLC程序上传与下载方式往往受限于物理距离和现场环境&#xff0c;给工程师们带来了诸多不便。如今&#xff0c;随着远程技术的不断发展&#xff0c;PLC程…

Stable Diffusion XL优化终极指南

如何在自己的显卡上获得SDXL的最佳质量和性能&#xff0c;以及如何选择适当的优化方法和工具&#xff0c;这一让GenAI用户倍感困惑的问题&#xff0c;业内一直没有一份清晰而详尽的评测报告可供参考。直到全栈开发者Flix San出手。 在本文中&#xff0c;Flix介绍了相关SDXL优化…

好用且免费的无需搭梯子的长文本场景对话大模型

这款ai工具最近爆火&#xff0c;Kimi支持200万字无损上下文&#xff0c;在长上下文窗口技术上再次取得突破&#xff0c;引燃人工智能领域新一轮投资热情。我也是支持国货&#xff0c;抱着试一试的心态使用&#xff0c;确实不错&#xff0c; China&#x1f402;&#x1f37a;

【Java开发指南 | 第十三篇】Java条件语句

读者可订阅专栏&#xff1a;Java开发指南 |【CSDN秋说】 文章目录 if 语句if...else 语句if...else if...else 语句嵌套的 if…else 语句switch 语句 Java 中的条件语句用于根据条件来执行不同的代码块。条件语句允许程序根据表达式的结果选择性地执行代码。 条件语句分为if 语…

[Win11·Copilot] Win11 系统更新重启后任务栏 Copilot 图标突然消失 | 解决方案

文章目录 前言Copilot介绍产生异常的原因解决方案总结 前言 在 Windows 11 的最新系统更新之后&#xff0c;一些用户报告了任务栏中 Copilot 图标消失的问题。这篇技术博文将为您提供详细的解决方案&#xff0c;帮助您恢复 Copilot 图标&#xff0c;并确保您能够继续享受 Copi…

3D模型查看器开发实战【WebGL】

本文介绍如何从头开发一个包含3D 模型查看器的页面 - 尽管它非常简单&#xff0c;但你将学习的步骤也应该有助于构建其他类型的 Web 应用程序。 在自己的网站或博客里展示3D模型更简单的方式是使用NSDT 3DConvert提供的在线服务&#xff0c;无需任何开发工作&#xff0c;5分钟…

【小技巧】机器学习中可视化高维向量的两种方法PCA和t-SNE,以及其原理介绍和代码示例(附代码)

使用情景&#xff1a;比如说现在我有一批numpy的多维向量&#xff0c;比如说都是256维度的&#xff0c;X.shape(n, 256), 已知它们都是经过训练能够在256dim的超球面上实现分类或聚类的&#xff0c;现在我想把它们可视化出来看看各个簇在超球面上的分布是怎样的&#xff1f; 1…

陈胜许诺‘苟富贵,勿相忘’的那些工友们,后来都怎么样了?

记得初三语文上册的课文中&#xff0c;有一篇叫《陈涉世家》文章&#xff0c;节选自《史记》&#xff0c;讲述的是秦末农民起义军领袖陈胜吴广的故事。其中陈胜有三句话让人记忆犹新&#xff0c;其中有两句是他在地主家当农民工时&#xff0c;和一起做事的工友说的。第一句话就…

Vue项目实现懒加载——自用笔记

熟悉指令语法&#xff1a; <template><HomePanel title"人气推荐" sub-title"人气爆款 不容错过"><ul class"goods-list"><li v-for"item in hotList" :key"item.id"><RouterLink to"/&qu…

免费学习简单实操,轻松拿下微软生成式AI认证

在这个AI风暴席卷全球的时代&#xff0c;我们都处在一个充满机遇和挑战的交叉点上。无论你是正在寻找新的职业道路&#xff0c;还是希望在现有的职业生涯中取得突破&#xff0c;掌握AI技能都将成为你开启新篇章的关键。 为了帮助更多的人在这个AI时代中实现跨越&#xff0c;微…

网工内推 | 14薪!安全服务工程师,上市公司,CISP认证优先

01 远江盛邦 招聘岗位&#xff1a;安全服务工程师 职责描述&#xff1a; 1、负责对客户网络、系统进行渗透测试&#xff0c;漏洞验证、安全评估和安全加固&#xff1b; 2、负责对监督单位的系统安全问题进行监督&#xff0c;并督察改进&#xff1b; 3、对监管单位的安全告警、…

力扣136. 只出现一次的数字

Problem: 136. 只出现一次的数字 文章目录 题目描述思路复杂度Code 题目描述 思路 由于题目要求使用线性时间复杂度和常量级的空间复杂度&#xff0c;再加上找重复元素这个特性&#xff0c;我们可以想到使用位运算来求解&#xff1a; 1.任何数与其本身异或得0&#xff0c;任何…