跳转到内容

教程2. 年产量的简单不确定性分析

示例2通过添加四个额外的不确定性来源来扩展示例1:组件铭牌功率、PVsyst内的建模误差、平均逆变器效率和DC健康度。

此示例类似于光伏行业在运行第一年使用的许多P90分析,尽管我们不声称我们的不确定性代表任何真实系统。

示例2继续假设所有不确定性分布都是高斯分布,并继续分析我们的默认系统(位于悉尼的单面SAT)。

不确定性来源如下:

来源95%置信区间GHI, 变量, ±5% rel组件铭牌功率, 460 W, ±20 WPVsyst模型, 变量, ±5% rel污染, 2%, ±2% absDC健康度, 99%, ±1% abs平均逆变器效率, 97%, ±2% abs可用性, 99%, ±1% abs

与示例1一样,我们计算标准差为相对不确定性的一半,σ = (绝对不确定性/值) / 2。因此,输入值和高斯分布定义如下:

输入x₀σGHI, 在天气文件中, 1, 0.025ModulePower, 460 W, 1, 0.02174YieldModifier, 1, 1, 0.025SoilingFront, 0.02, 1, 0.5DCHealth, 0.99, 1, 0.005051InverterEfficiency, 0.97, 1, 0.010309Availability, 0.99, 1, 0.005051

请注意,为了包含PVsyst模型的不确定性,我们在计算产量中应用了5%的相对误差。

此时,您可能想知道为什么我们把它做得如此复杂。为什么不简单地输入输入值及其95%置信区间?

好吧,我们不会总是假设高斯分布。正如我们将在后面的示例中看到的,替代分布可以是不对称的,并且与置信区间没有简单的关系。

无论如何,您现在可以将下面代码块中的输入值和分布复制到SunSolve P90中,覆盖步骤3和步骤6的代码块中包含的输入。

通过将此代码块复制到步骤3来加载输入:

# Set uncertainty simulation constants
simulation_options = build_simulation_options(
number_of_years=1,
number_of_simulations=10000
)
# Load weather: sydney.pvw file is an example weather file
weather_file_path = "Data/sydney.pvw"
weather_data = load_weather_data_from_pvw_file(weather_file_path)
# Assign system inputs
module_info = build_module_info(
power_at_stc = 460,
)
optical_settings = build_optical_settings(
soiling_front=0.02
)
electrical_settings = build_electrical_settings(
inverter_efficiency = 0.97,
)
operational_settings = build_operational_settings(
yield_modifier=1,
availability=0.99,
dc_health=0.99,
)
#Otherwise use all defaults
system_info = build_system_info()
thermal_settings = build_thermal_settings()
# Set output options
result_options = build_result_options(
bin_min=0.85,
bin_delta=0.01,
p_values=[5, 10, 90, 95]
)

通过将此代码块复制到步骤6来加载分布:

distribution_list = [
create_distribution(DistributionInput.GHI, simToSim=["Gaussian", 1, 0.025]),
create_distribution(DistributionInput.ModulePower, simToSim=["Gaussian", 1, 0.02174]),
create_distribution(DistributionInput.SoilingFront, simToSim=["Gaussian", 1, 0.5]),
create_distribution(DistributionInput.YieldModifier, simToSim=["Gaussian", 1, 0.025]),
create_distribution(DistributionInput.DCHealth, simToSim=["Gaussian", 1, 0.005051]),
create_distribution(DistributionInput.InverterEfficiency, simToSim=["Gaussian", 1, 0.010309]),
create_distribution(DistributionInput.Availability, simToSim=["Gaussian", 1, 0.005051]),
]
print("Distribution list created.")

下面的直方图绘制了SunSolve P90执行的蒙特卡洛模拟的结果。它的P90/P50为0.946,P95/P50为0.931(这些值只是示例输出,并不代表真实系统。)

该图还绘制了使用平方和方法(将在行业的许多P90分析中应用)解析计算时的产量分布。

一般来说,这两种方法很好地对齐,但有几个小的差异:

比示例1稍多一些,解析分析比SunSolve P90结果稍宽。

解析分布的P90比率为0.924而不是0.931,P95比率为0.941而不是0.946。

除了将污染限制为最小0%和可用性限制为最大100%外,DC健康度也略微限制为100%。除了产量对GHI的非线性依赖外,产量现在也非线性地依赖于组件功率:更高效的组件(相同面积更多功率)受温度的影响较小。

还要注意,由于这些相同的效果,SunSolve P90解决方案具有轻微的不对称性。例如,P5比率为1.075,而P95比率为0.093。

即使在我们引入任何不对称不确定性之前(我们在教程4中这样做),这些小的不对称性也会出现。

输出不确定性