You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python减排量(EA)计算代码问题求助:MACA与EA结果不符

修复MACA/MACB减排量计算的Python代码错误

原代码核心错误

  1. 未联立约束条件求解:原代码单独求解MACA=MACB得到的是EB与EA的符号关系式,没有结合EA + EB = 120的总约束条件,无法得到正确数值解
  2. 变量赋值逻辑混乱:重复覆盖EB_value和EA_value变量,且未正确将总约束代入方程
  3. MACA值计算错误:MACA表达式仅依赖EA,原代码错误地代入EB变量进行替换

修复后的代码

import sympy as sp

EA, EB = sp.symbols('EA EB')

# 定义边际减排成本函数
MACA = 450 - 3 * EA
MACB = 300 - 2 * EB

# 求解MAC=0时的最大剩余排放量(对应基准值)
EA_max = sp.solve(sp.Eq(MACA, 0), EA)[0]
EB_max = sp.solve(sp.Eq(MACB, 0), EB)[0]

# 计算总约束:单个行业按40%比例计算的剩余排放量之和
abatement_percentage = 40
EA_individual = EA_max * (abatement_percentage / 100)
EB_individual = EB_max * (abatement_percentage / 100)
total_constraint = EA_individual + EB_individual

# 联立约束方程求解EA和EB
solution = sp.solve([
    sp.Eq(EA + EB, total_constraint),
    sp.Eq(MACA, MACB)
], (EA, EB))

EA_final = solution[EA]
EB_final = solution[EB]

# 计算最终MACA值
MACA_final = MACA.subs(EA, EA_final)

# 计算实际减排量(最大剩余排放量 - 最终剩余排放量)
EA_abatement = EA_max - EA_final
EB_abatement = EB_max - EB_final
total_abatement = EA_abatement + EB_abatement

# 输出结果
print("EA =", EA_final)
print("EB =", EB_final)
print("EA实际减排量:", EA_abatement)
print("EB实际减排量:", EB_abatement)
print("总减排量:", total_abatement)
print("MACA =", MACA_final)

运行结果

运行代码后将得到与数学步骤完全一致的正确结果:

EA = 78
EB = 42
EA实际减排量: 72
EB实际减排量: 108
总减排量: 180
MACA = 216

关于预期输出的说明

你提供的预期输出中,EA after abatement、EB after abatement和Total abatement的数值与数学步骤存在矛盾,推测是符号定义混淆导致(比如误将剩余排放量的百分比当作减排量)。上述修复代码严格遵循你给出的数学计算步骤,结果逻辑自洽。

内容的提问来源于stack exchange,提问作者Bosser445

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 19:24:50