先说个事:2026年MCM美赛E题落在被动式太阳能遮阳上,这个方向其实挺妙。它不要求你设计多酷炫的高科技设备,而是让你用数学去回答一个老房子都会遇到的问题:房子怎么设计,才能在夏天不那么晒、冬天不那么冷,而且尽量不依赖额外的电力。这种题目非常适合拿来做全年能耗、太阳轨迹、几何遮挡这类建模,也是MCM/ICM里比较典型的环境可持续方向。
这篇文章就是围绕这道题的一套完整备赛思路。里面包括赛题解读、物理原理、数学模型、可复现的Python代码框架、论文写作要点,以及我在备赛过程中踩过的坑和总结的避坑清单。不管你是第一次参加美赛,还是已经打过几次想把E题做成自己的优势题,这篇文章都能给你一个能直接落地的参考方案。我们也不是在“猜题”,而是基于被动式太阳能遮阳这个方向,把这类题目常见的建模套路提前准备好,真正到了赛场上拿题就能用。
1. 赛题解剖:被动式太阳能遮阳到底在考什么
1.1 题目背后的真实场景
被动式太阳能遮阳,简单说就是靠建筑自己的形状和构件来调节日照,而不是靠空调、电风扇这些主动设备。最典型的构件就是窗户上方的挑檐、遮阳板、格栅、百叶,甚至是阳台和建筑自身的凹凸造型。冬天太阳高度角低,阳光能从窗户照进室内,带来免费的太阳热量;夏天太阳高度角高,挑檐把直射光挡住,室内不会过热。这个“冬进夏挡”的过程完全不需要额外能量,所以叫“被动式”。
美赛E题如果出这个方向,大概率会给你一座具体位置的建筑,或者让你自选一座典型建筑,然后要求你设计遮阳方案,在冬季被动得热和夏季遮阳降温之间找平衡。这背后牵扯到三个核心问题:一是太阳在一年四季里到底怎么转,二是遮阳构件在任意时刻挡住了多少窗户面积,三是在全年尺度上这些遮挡换算成能耗到底是多少。这三个问题科学上对应太阳几何、建筑热工、全年能耗模拟三个模块,恰好就是美赛最喜欢考的交叉学科场景。
1.2 从E题类型看命题人想考察的能力
MCM/ICM的E题归属于ICM(交叉学科建模竞赛),历年都有很强的“政策+环境+工程”倾向。比如曾经出过光污染、食物系统、生态服务价值这类题目。E题的特点不是让你推一个特别深的理论公式,而是让你把一个实际环境问题转化成可量化的数学问题,并给出有政策意义的结论。
所以看到“被动式太阳能遮阳”,你先要意识到:命题人不是在考你建筑设计能力,而是在考你怎么用数学工具描述一个物理过程,怎么做多目标权衡,怎么从数据里得到可操作的结论。评委关心的不是你的遮阳板能画得多好看,而是你的模型能不能说清楚“为什么这个尺寸最优”“在什么条件下会失效”“如果换一个城市结论会怎么变”。这也是为什么我强烈建议在正式建模前,先把题目中的问题拆成“物理规律层、优化决策层、评价解释层”三个层次,后面所有工作都围绕这三层展开。
1.3 这道题可以延伸成哪些具体任务
根据历年E题风格和被动式太阳能遮阳这个方向,我预测题目可能包含以下子任务中的一部分或全部:用数学模型描述太阳在给定地理位置、给定日期时刻的空间位置;设计一个可调节或固定的遮阳方案,并给出窗户尺寸比例、遮阳构件长度、倾角等关键参数;基于典型气象年逐时数据,计算建筑全年采暖制冷负荷,比较不同遮阳方案的节能率;考虑自然采光,保证室内照度不能过低;对模型做灵敏度分析,考察纬度、朝向、窗户面积变化后结果是否稳定。
这些任务本质上是一个完整的“数字孪生”流水线:先输入地理位置和时间,得到太阳轨迹;再把太阳轨迹和建筑几何求交,得到遮阳状态;然后把遮阳状态带入热平衡方程,得到能耗;最后用优化算法搜索最佳设计参数。这也意味着你准备的代码应该按这四个模块来组织,而不是随手写一个脚本就完事。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 破题思路:遮阳问题怎么一步步变成数学模型
2.1 太阳轨迹计算:一切模型的基石
先说太阳位置。很多人一上来就卡在这,其实它有一套标准的天文算法,不需要你从第一性原理去推。地球上某个观测点在某一时刻的太阳位置,主要由三组参数决定:观测点纬度、日期(决定赤纬角)、时刻(决定时角)。
赤纬角是太阳直射点纬度,近似公式是:
[
\delta = 23.45^\circ \cdot \sin\left(\frac{360^\circ}{365} \cdot (284 + N)\right)
]
其中 N 是当年的第几天。太阳高度角(从地平线向上)由纬度 (\phi)、赤纬角 (\delta)、时角 (\omega) 决定:
[
\sin\alpha = \sin\phi \cdot \sin\delta + \cos\phi \cdot \cos\delta \cdot \cos\omega
]
太阳方位角(从正南方向起算,向西为正)可以用:
[
\cos\gamma = \frac{\sin\delta - \sin\alpha \cdot \sin\phi}{\cos\alpha \cdot \cos\phi}
]
这里有一个极其容易犯的错:公式里的时刻应该是“真太阳时”,而不是你手机上的北京时间。北京时间是东经120度的标准时,如果建筑所在地不在这个经线上,需要先做经度修正,还要考虑“均时差”。比赛时不要求你算到几分几秒那么精确,但修正这一步必须写进模型假设里,否则评委一看你的正午太阳高度角对不上,印象分会大减。
有了高度角和方位角,你可以在程序设计里把它转成三维方向向量,后续和建筑几何做求交就统一了。我建议在模型里把太阳看作一个点光源,忽略太阳本身的视直径,这个假设对工程尺度的遮阳计算完全够用。
2.2 遮阳几何:窗户被挡住多少,得算清楚
接下来是最核心的几何问题:给定一个遮阳板,它到底挡住了多少窗户面积。不要小看这个模块,它往往是整个模型的瓶颈。一个水平挑檐,如果挑出宽度为 W,挑檐底面到窗户顶部的垂直距离为 H,那么当太阳高度角 (\alpha) 满足:
[
\tan\alpha > \frac{H}{W}
]
时,窗户顶部开始出现阴影。阴影深度 D 可以近似为:
[
D = W \cdot \tan\alpha - H
]
如果窗户高度是 (H_w),那么窗户被遮挡比例就是 (\min(D/H_w, 1))。当然,真实情况还要考虑太阳方位角:如果太阳不在窗户正前方,阴影会斜着扫过窗面,遮挡面积不是简单的比例关系。更精确的做法是把窗户和遮阳板都离散成网格,用射线法逐点判断是否被遮挡。这种逐时逐点计算的成本不高,Python里用numpy向量化之后,一天24小时全年下来就是几十万次几何运算,几秒钟就能跑完。
这里有个技巧:遮阳构件不要只盯着水平板。题目如果做扩展,可以用“水平板+垂直板”组合,或者让遮阳板倾角可调。倾角变化对结果影响很大,因为倾角越接近夏至日太阳高度角,夏季遮挡效果越好;但如果倾角太大,冬季又容易把低角度的阳光全挡在外面。所以倾角是一个特别好的优化变量,也特别适合做灵敏度分析展现在论文里。
2.3 能耗估算:遮阳如何影响全年采暖制冷负荷
算出遮挡比例之后,要把“遮了多少光”翻译成“省了多少电”。这一步是E题建模的核心,也是最容易做得过度复杂的地方。如果采用EnergyPlus这种专业建筑能耗软件,精度确实高,但掌握需要大量时间,而且竞赛时很难把软件输出和你的优化算法无缝衔接。我建议搭建一个中等精细度的半物理模型。
基础热平衡方程可以写成:
[
Q_{load} = Q_{conduction} + Q_{solar_gain} + Q_{ventilation} + Q_{internal}
]
其中 (Q_{conduction}) 是墙体、屋顶、窗户的温差传热,用传热系数 U 乘以面积再乘以室内外温差;(Q_{solar_gain}) 是太阳辐射得热,等于窗户面积乘以太阳得热系数 SHGC,再乘以外窗无遮挡时的逐时太阳辐照度 (I_{solar}) 和遮阳后的透光比例。这里遮阳模块的输出就直接作为系数乘进去了:
[
Q_{solar_gain} = A_{window} \cdot SHGC \cdot I_{solar} \cdot (1 - f_{shaded})
]
把全年8760个小时都算一遍,累计正值和负值,再除以空调系统能效比(COP),就能估算出全年空调耗电量。当然这个模型忽略了很多细节:蓄热效应、室内热惰性、多维传热等,所以结果不能当真的能耗审计来用,但在竞赛语境里,它把关键物理机制抓住了,同时每个参数都有明确物理意义,评委很好理解。关键是要在模型假设里写清楚“这是日均尺度的稳态近似,不考虑墙体蓄热”,然后后面做灵敏度分析时确认温差和太阳辐射是两个主导因子,逻辑就闭环了。
2.4 多目标优化:舒适和节能怎么才能不打架
遮阳方案通常不是越省电越好。你把窗户全捂住,夏天确实凉快,但冬天采光也没了,室内黑漆漆。所以题目大概率要求你在多个目标之间做权衡,最常见的是“全年能耗最低”和“室内热舒适/视觉舒适最好”。
热舒适指标可以用PMV的近似形式,也可以用室内温度超过舒适区间的时间比例。采光则可以用全年室内照度水平或用日光因子的简化公式。多目标处理有两种思路:一是把不同目标加权求和,变成单目标;二是用帕累托前沿,画出能耗-舒适度的trade-off曲线,让决策者看着选。
在比赛中我更推荐第二种。因为加权求和里的权重很难定,而且评委很反感拍脑袋定权重。帕累托前沿可以用遗传算法(NSGA-II)或者直接在决策变量网格上做全搜索得到。网格搜索虽然土,但结果可解释,论文里可以画出完整前沿,非常直观。遮阳设计变量一般就两三个(挑檐长度、倾角、材质反射率),网格全搜索最多几千个组合,完全跑得动。
3. 代码实现:从零搭建一套完整可复现的遮阳模型
3.1 代码模块整体设计
比赛只有四天,代码必须模块化,不然改这个坏那个。我给自己的代码规划了五个模块:太阳位置计算模块、遮阳几何模块、能耗计算模块、优化模块、可视化模块。每个模块一个.py文件,主程序只负责调用函数、传递参数。
从实际使用来看,模块化最大的好处不是“代码优雅”,而是可以单独调试。比如太阳位置模块算出来和网上工具对比,遮阳模块单独画阴影图验证,能耗模块单独算一个极端工况看结果是否符合直觉。每步都对上之后,再拼在一起。不然整个程序跑下来一团乱,debug都不知道从哪下口。
需要提醒的是,比赛中你不可能把五套模块全部精雕细琢,时间根本不够。我的策略是前三天的晚上分别把太阳位置和遮阳几何做扎实,第四天上午跑优化、下午画图、晚上写论文。能耗模块用简化模型,不要花超过半天时间。
3.2 太阳位置模块的Python实现
太阳位置模块可以直接上手写。下面这份代码是我在备赛时整理的版本,输入日期、时间、纬度、经度和时区,返回太阳高度角、方位角和日地距离修正系数。用到的都是标准库加numpy,不依赖额外天文软件包,比赛现场离线也能跑。
python复制import numpy as np
from datetime import datetime
def calc_solar_position(lat, lon, year, month, day, hour, minute, timezone=8):
# 计算当年的第几天
dt = datetime(year, month, day, hour, minute)
day_of_year = dt.timetuple().tm_yday
# 赤纬角(度)
delta = 23.45 * np.sin(np.radians(360 * (284 + day_of_year) / 365))
# 时角(度):正午为0,下午为正
# 先计算真太阳时,用经度修正,忽略均时差
solar_time = hour + minute / 60 - timezone + lon / 15
hour_angle = (solar_time - 12) * 15
lat_rad = np.radians(lat)
delta_rad = np.radians(delta)
hour_angle_rad = np.radians(hour_angle)
# 太阳高度角
sin_alpha = np.sin(lat_rad) * np.sin(delta_rad) + np.cos(lat_rad) * np.cos(delta_rad) * np.cos(hour_angle_rad)
sin_alpha = np.clip(sin_alpha, -1, 1)
alpha = np.degrees(np.arcsin(sin_alpha))
# 太阳方位角(从正南,西为正)
cos_gamma = (np.sin(delta_rad) - sin_alpha * np.sin(lat_rad)) / (np.cos(np.radians(alpha)) * np.cos(lat_rad))
cos_gamma = np.clip(cos_gamma, -1, 1)
gamma = np.degrees(np.arccos(cos_gamma))
if hour_angle > 0:
gamma = -gamma
# 太阳方向向量(以z轴为正天顶,x轴为正南,y轴为正东)
alpha_rad = np.radians(alpha)
gamma_rad = np.radians(gamma)
direction = np.array([
np.cos(alpha_rad) * np.cos(gamma_rad),
np.cos(alpha_rad) * np.sin(gamma_rad),
np.sin(alpha_rad)
])
return alpha, gamma, direction
注意几个参数的含义:timezone是时区,中国统一用8,但建筑实际经度偏离东经120度时要做修正。我代码里直接用 lon / 15 代替了时区经度偏差,这个近似够用,但你也需要把它写进论文假设。另外方位角符号我定义成西正东负,方便后面和窗户法向向量做点积。
3.3 遮阳几何模块与窗户受光比例
遮阳几何模块,我用光线投射的思路:把窗户分成 (N_{row} \times N_{col}) 个网格点,对每个网格点,从它出发沿太阳方向射出一条射线,检查该射线是否被遮阳构件截获。如果被挡住,这个网格点标记为暗点。最后统计暗点比例。
这个方法虽然朴素,但好处是能处理任意复杂遮阳构件,不局限于水平板。对每个网格点的核心判断是“点是否在遮阳板包围体内”。如果遮阳板简化成一个平板四边形,判断方法就是先算出射线和平板所在平面的交点,再判断交点是否在平板范围内。
python复制def generate_window_points(x0, y0, z0, win_width, win_height, n_row=20, n_col=20):
"""生成窗户/被照射面网格点。坐标原点在窗户左下角。"""
xs = np.linspace(0, win_width, n_col)
ys = np.linspace(0, win_height, n_row)
points = np.array([[x, y, 0] for y in ys for x in xs])
return points
def shade_fraction(points, sun_dir, overhang_top, overhang_depth, overhang_height):
"""
计算水平挑檐对网格点的遮挡比例。
overhang_top: 挑檐底面距窗顶距离
overhang_depth: 挑檐出挑长度
overhang_height: 挑檐底面高度(相对于窗底)
"""
total = len(points)
shaded = 0
# 简化处理:水平挑檐沿y轴方向出挑,窗面法向为-z
# 太阳方向向量投影在x-z平面,判断x向是否被遮住
# 实际项目需替换为通用交点算法,这里展示思路
for p in points:
# 计算太阳射线与挑檐前端竖直面的交点位置
if sun_dir[2] <= 0:
continue
# 从点朝太阳方向追溯到挑檐高度平面
t = (overhang_height - p[2]) / sun_dir[2]
hit_x = p[0] - sun_dir[0] * t
if t > 0 and overhang_top <= hit_x <= overhang_top + overhang_depth:
shaded += 1
return shaded / total
这份代码只是示意,因为水平挑檐的实际几何要按窗户朝向来设计坐标轴方向。我建议你在自己实现时,先把窗户法向向量标准化,然后把遮阳板四个角点坐标写出来,再用射线-平面求交。这样无论窗户朝南、朝东还是斜朝向,一条函数全搞定。
3.4 全年能耗模拟与优化搜索流程
能耗模块的核心是循环全年的逐时数据。气象数据如果没有题目给的文件,可以用典型气象年数据的开源CSV,或者按简化正弦模型近似逐时温度。太阳辐射逐时值可以用晴空模型估算,或者直接采用“水平面太阳总辐射近似公式”。这些简化都要在论文里诚实说明。
主程序的优化流程大致是:
python复制def total_annual_load(params, weather, location, building):
overhang_depth, tilt_angle = params
# 逐时循环
annual_heat = 0.0
annual_cool = 0.0
for hour in range(8760):
alpha, gamma, sun_dir = calc_solar_position(..., hour=hour)
f_shaded = shade_fraction(..., sun_dir, overhang_depth)
q_conduction = u_wall * area_wall * (T_outdoor - T_setpoint)
q_solar = solarload * (1 - f_shaded)
if q_solar + q_conduction > 0:
annual_cool += max(q_solar + q_conduction, 0)
else:
annual_heat += max(-(q_solar + q_conduction), 0)
return annual_heat / cop_heat + annual_cool / cop_cool
for depth in np.linspace(0.2, 1.5, 20):
for tilt in np.linspace(0, 60, 13):
result = total_annual_load(...)
records.append((depth, tilt, result))
网格搜索的优势是结果稳定,不容易陷入局部最优,而且每次跑完都能把目标函数画成等高线图,论文里直接放上去就是一张很有说服力的图。对于两个变量,20乘以13个工况,循环8760小时,在普通笔记本上大概几分钟跑完,比赛完全能接受。如果变量更多,再考虑用遗传算法。
3.5 可视化脚本:让结果自己“说话”
美赛论文对图片质量看得非常重。一张信息量大的图,胜过三页文字。我的可视化固定出四张图:第一张是全年太阳轨迹图(用极坐标或直角坐标画高度角-方位角曲线,标出建筑所在纬度);第二张是不同季节的遮阳阴影示意图(可以画窗户正视图,用颜色深浅表示被遮比例);第三张是全年月度能耗堆叠柱状图(采暖、制冷、照明三类分开);第四张是能耗-舒适度帕累托前沿散点图。
画图统一用matplotlib,颜色主题选色盲友好的配色,字号尽量大。摘要页里的图尤其重要,我一般会把“遮阳几何示意图”和“优化结果对比图”这两张放在最显眼的位置,因为评委翻摘要页的时间可能只有几十秒。
4. 论文写作:24页怎么安排才不浪费
4.1 Summary Sheet 摘要页才是真正的“脸面”
美赛论文第一页是Summary Sheet,字数限制在整页内,好的摘要直接决定你能不能拿M奖以上。评委每天看几十篇论文,不可能篇篇精读,摘要就是你的“广告位”。写摘要时,不要罗列“我做了12345”,要像一个项目经理做汇报:先说解决的是什么问题,再亮明方案核心思想,接着给最关键的量化结果,最后提一句方案的普适性。
我总结的摘要套路是四段式:第一段写问题背景和建模目标,第二段写模型一(太阳轨迹与遮阳几何)的方法和关键变量,第三段写模型二(能耗与优化)的方法、数据来源和最优结果,第四段写灵敏度和结论。如果题目有明确的要求,比如“给出遮阳板推荐尺寸”,摘要里必须直接给出数字。比如“当出挑深度为0.9米、倾角为25度时,对比无遮阳工况,全年空调能耗降低33.2%”。这种明确的数字感,是最能抓住评委注意力的。
写摘要有个反直觉的技巧:先在最后一天上午写初稿,把摘要放着,下午写完结论和灵敏度分析后再回头改。因为上午你对模型结果印象最深但总体逻辑还没定型,容易写成流水账;下午模型全部跑完再改,背景、方法、结果都能精准对应。我试过这个流程,比最后一天晚上仓促赶摘要质量高很多。
4.2 正文结构编排与“每章一个亮点”原则
正文结构不要照抄教科书式“模型建立-求解-分析”,要有起伏。美赛评分的核心在于你能否把完整的故事讲清楚。一个比较稳妥的正文布局是:
问题重述与假设(1.5页以内),符号说明(0.5页),太阳辐射与遮阳模型建立(4页),能耗模型建立(3页),单目标优化求解(3页),多目标扩展与帕累托分析(3页),灵敏度分析(2页),模型评价与政策建议(1.5页),附录(代码和额外图表,不占评分核心)。
每章都要有一个“记忆点”。比如在遮阳模型里,记忆点是一张对比“冬至正午 vs 夏至正午”遮阳状态的图;在优化模型里,记忆点是那张等高线图上的最优解标记;在灵敏度分析里,记忆点是“纬度从30度变到45度时最优出挑长度单调增加”的柱状图。这些记忆点共同构成你论文的叙事线索,让评委读完之后脑海里留下三张图、两个数字。
4.3 图表规范:能做就绝不用文字描述
我见过很多队伍,模型思考很深入,但图表画得敷衍,最后成绩不理想。其实美赛的图表不需要花哨,关键是清晰、自明、有编号有解释。表格必须用三线表格式,图必须带轴标签、单位、图例,坐标轴范围要合理,不要默认值一放就完事。
下面这几条是我自己反复踩坑后总结的图表检查清单:所有坐标轴有变量名和单位;同一篇论文里同一变量的命名完全一致;图中字体大小不小于8号,保证打印或屏幕上能不费力看清;色块不要用太相近的颜色,比如红绿对色盲人群不友好;每张图下方有一句话解释“这张图说明什么”,在正文中要有对应引用。
特别提醒一点:参考文献和代码附录不要占用太多页数。美赛正文限制25页以内,参考文献和附录不计算在页数限制内的规则各年不完全一致,稳妥做法是正文控制在22页左右,预留一些余量。不要为了展示工作量把一大段完整代码塞进正文,评委更愿意看到伪代码和关键公式。
5. 常见问题与避坑清单:这些东西没人提醒你
5.1 时间线规划:四天怎么分配最合理
美赛的节奏非常紧张。我见过太多队伍第一天还在分析题目、定方向,第二天开始建模,第三天发现代码跑不出结果,第四天慌慌张张拼论文。为了避免这种情况,我建议采用“前紧后松”的节奏:第一天上午必须把题目读完、问题拆解完成、模型框架定下来;第一天下午开始写太阳位置代码,晚上把太阳轨迹图跑出来;第二天上午完成遮阳几何模块,下午做能耗模型;第三天全天做优化和灵敏度;第四天上午完成摘要和结论,下午查漏补缺、统一排版。
这个计划看起来很满,但它保证了“最难啃的硬骨头”在前两天被消化掉。如果比赛一开始发现题目难度远超预期,至少你已经有了太阳轨迹和遮阳几何这两个模块,剩下的只是往上加。另外强烈建议队伍里每个人在比赛前认领一个模块,不要都挤在主模型上,否则效率很低。
5.2 常见技术坑:太阳位置、坐标系、数据单位
太阳位置计算里的坑最多,我按踩坑频率从高到低列一下。
第一是时角符号错误。有些资料里把上午定义为正,下午定义为负,如果你和窗户朝向判断用同一套符号还好,但一旦公式混合来源,方位角就容易反号,导致遮阳计算完全错误。建议自己在代码里固定一套约定并在注释里写清楚。
第二是经纬度和时区混用。很多同学用北京时间去算乌鲁木齐当地的太阳位置,结果正午太阳跑到西边去了。中国境内东西跨度超过30度经度,同一北京时间下,东部已经中午,西部还是上午,这个误差会对遮阳产生致命影响,必须做经度修正。
第三是窗户朝向定义不统一。正南是0度、正东是负90度还是正90度,不同的定义下你的向量点积结果差之千里。我建议所有角度统一用“从正南方向顺时针旋转为正”的约定,这样东墙是-90度,西墙是+90度,逻辑上非常顺。
第四是能耗模型里的量纲。太阳辐照度的单位是W/m²,传热系数U的单位是W/(m²·K),温度差是K或℃,相乘之后得到的是瓦,还要乘时间得到千瓦时。每一步都做单位换算检查,别到最后结果出来数量级不对。
5.3 从建模到拿奖:评委真正想看到的三样东西
最后聊点实在的,美赛评奖虽然有一定随机性,但高分的论文通常有三个共同点。
第一是“所有决策都有依据”。比如为什么用网格搜索而不是梯度下降,为什么忽略墙体蓄热,为什么选这个SHGC值。这些问题在模型假设和灵敏度分析里要给出一句话解释,不要只写“假设……”。
第二是“结果经得起扰动”。灵敏度分析不是走过场。你至少要做三个维度:地理位置变化、窗户朝向变化、关键材料参数变化。每次变化后最优解的变化趋势最好还能给物理解释。比如纬度升高后冬季太阳高度角更低,最优遮阳板出挑深度变小,这就符合直觉,评委一看就会认为你的模型有物理真实性。
第三是“结论能落地”。题目如果要求给设计建议,你的最终结论里一定要有具体的数字和适用范围。比如“推荐方案适用于北纬30度到40度、朝南偏西15度以内的窗户;对于朝东、西窗户建议采用垂直遮阳板”,这种有条件的工程结论,比泛泛的“应该减少太阳辐射”强得多。
这些都不是比赛当天临阵磨枪能做出来的,所以准备美赛E题,建议提前把太阳位置模块、遮阳几何模块的代码骨架准备好,把能耗计算和优化流程跑通一遍。真正比赛时,你会发现自己省下的时间,都变成了用来打磨图表和摘要的宝贵时间,而这两样恰恰是决定论文档次的核心。
