PyPSA示例中n.objective为何与总成本数值不相等?
PyPSA中
n.objective的含义与计算方式 核心结论
n.objective不是你统计的“总成本”,它是优化时实际最小化的目标函数值,仅包含新增装机的资本成本与全部运行成本——初始装机的资本成本默认被视为沉没成本,不纳入优化目标。
结合你的模型拆解计算逻辑
你的代码里发电机设置了p_nom=100(初始装机)且p_nom_extendable=True(允许扩容),PyPSA默认不对初始装机的资本成本做优化考量,只计算新增部分的成本,具体计算步骤如下:
1. 运行成本计算
发电机边际成本为2,每个时段发电量等于负载需求,总发电量为:120 + 90 + 90 + 160 + 110 = 570
运行总成本:570 * 2 = 1140
2. 新增装机的资本成本计算
优化后最终装机p_nom_opt=160,新增容量为:160 - 100 = 60
新增装机的资本成本(按capital_cost=10计算):60 * 10 = 600
3. 目标函数值(n.objective)
将两部分相加:1140 + 600 = 1740,与你看到的n.objective数值完全匹配。
关于“总成本”的差异说明
你计算的“总成本2740”是把全部装机的资本成本(160*10=1600)加上运行成本(1140)得到的,但其中初始100kW装机对应的资本成本(100*10=1000)属于沉没成本,没有被PyPSA纳入优化目标,因此n.objective不包含这部分。
如果需要让初始装机的资本成本也进入目标函数,可以修改模型设置:比如将p_nom设为0,完全通过p_nom_extendable定义装机容量;或者自定义成本计算逻辑。
内容的提问来源于stack exchange,提问作者Bengt Olsson
相关产品推荐
相关产品推荐

