ARCHIVED TRAINING / Pyomo/pyomo
pyomo__pyomo-3017
This is a preserved training example. Membership in the current training wave has not been verified.
Problem statement
Pyomo AD fails with constant Expressions
## Summary
Pyomo AD raises an error when encountering `Expressions` with a constant value.
### Steps to reproduce the issue
```console
import pyomo.environ as pyo
from pyomo.core.expr.calculus.derivatives import Modes, differentiate
m = pyo.ConcreteModel()
m.x = pyo.Var(units=pyo.units.mol, initialize=0)
@m.Expression()
def y(blk):
return 2
@m.Expression()
def product(blk):
return blk.x * blk.y
diff_expr = differentiate(
expr=m.product,
wrt=m.x,
mode=Modes.reverse_symbolic
)
diff_expr.pprint()
```
### Error Message
```console
Exception has occurred: KeyError
"Component with id '1907001786672': 2.0"
File "C:\Users\[REDACTED]\Repos\pyomo\pyomo\common\collections\component_map.py", line 71, in __getitem__
return self._dict[id(obj)][1]
KeyError: 1907001786672
During handling of the above exception, another exception occurred:
File "C:\Users\[REDACTED]\Repos\pyomo\pyomo\common\collections\component_map.py", line 73, in __getitem__
raise KeyError("Component with id '%s': %s" % (id(obj), str(obj)))
File "C:\Users\[REDACTED]\Repos\pyomo\pyomo\core\expr\calculus\diff_with_pyomo.py", line 331, in _diff_GeneralExpression
der_dict[node.expr] += der_dict[node]
File "C:\Users\[REDACTED]\Repos\pyomo\pyomo\core\expr\calculus\diff_with_pyomo.py", line 442, in _reverse_diff_helper
_diff_GeneralExpression(e, val_dict, der_dict)
File "C:\Users\[REDACTED]\Repos\pyomo\pyomo\core\expr\calculus\diff_with_pyomo.py", line 484, in reverse_sd
return _reverse_diff_helper(expr, False)
File "C:\Users\[REDACTED]\Repos\pyomo\pyomo\core\expr\calculus\derivatives.py", line 96, in differentiate
res = reverse_sd(expr=expr)
File "C:\Users\[REDACTED]\Desktop\diff_expr.py", line 16, in <module>
diff_expr = differentiate(
KeyError: "Component with id '1907001786672': 2.0"
```
### Information on your system
Pyomo version: 6.6.2
Python version: 3.10.10 | packaged by Anaconda, Inc. | (main, Mar 21 2023, 18:39:17) [MSC v.1916 64 bit (AMD64)]
Operating system: Windows 10
How Pyomo was installed (PyPI, conda, source): From sources
Solver (if applicable): n/a
Training membership
opd_e4b_pure_v6b opd_e4b_pure_v7 opd_e4b_pure_v7b
Task issues extracted from preserved verified_rft_messages training examples. This is not a verified current RL wave manifest.
Task and snapshot provenance
Snapshot captured 2026-11-12T17:06:59.476467+00:00 · Autoresearch-Arena/gemma-4-developer-agent
{
"datasets": [
"opd_e4b_pure_v6b",
"opd_e4b_pure_v7",
"opd_e4b_pure_v7b"
],
"examples": 20,
"instance_id": "pyomo__pyomo-3017",
"problem_statement": "Pyomo AD fails with constant Expressions\n## Summary\r\n\r\nPyomo AD raises an error when encountering `Expressions` with a constant value.\r\n\r\n### Steps to reproduce the issue\r\n\r\n```console\r\nimport pyomo.environ as pyo\r\nfrom pyomo.core.expr.calculus.derivatives import Modes, differentiate\r\n\r\nm = pyo.ConcreteModel()\r\n\r\nm.x = pyo.Var(units=pyo.units.mol, initialize=0)\r\n\r\n@m.Expression()\r\ndef y(blk):\r\n return 2\r\n\r\n@m.Expression()\r\ndef product(blk):\r\n return blk.x * blk.y\r\n\r\ndiff_expr = differentiate(\r\n expr=m.product,\r\n wrt=m.x,\r\n mode=Modes.reverse_symbolic\r\n )\r\ndiff_expr.pprint()\r\n```\r\n\r\n### Error Message\r\n\r\n```console\r\nException has occurred: KeyError\r\n\"Component with id '1907001786672': 2.0\"\r\n File \"C:\\Users\\[REDACTED]\\Repos\\pyomo\\pyomo\\common\\collections\\component_map.py\", line 71, in __getitem__\r\n return self._dict[id(obj)][1]\r\nKeyError: 1907001786672\r\n\r\nDuring handling of the above exception, another exception occurred:\r\n\r\n File \"C:\\Users\\[REDACTED]\\Repos\\pyomo\\pyomo\\common\\collections\\component_map.py\", line 73, in __getitem__\r\n raise KeyError(\"Component with id '%s': %s\" % (id(obj), str(obj)))\r\n File \"C:\\Users\\[REDACTED]\\Repos\\pyomo\\pyomo\\core\\expr\\calculus\\diff_with_pyomo.py\", line 331, in _diff_GeneralExpression\r\n der_dict[node.expr] += der_dict[node]\r\n File \"C:\\Users\\[REDACTED]\\Repos\\pyomo\\pyomo\\core\\expr\\calculus\\diff_with_pyomo.py\", line 442, in _reverse_diff_helper\r\n _diff_GeneralExpression(e, val_dict, der_dict)\r\n File \"C:\\Users\\[REDACTED]\\Repos\\pyomo\\pyomo\\core\\expr\\calculus\\diff_with_pyomo.py\", line 484, in reverse_sd\r\n return _reverse_diff_helper(expr, False)\r\n File \"C:\\Users\\[REDACTED]\\Repos\\pyomo\\pyomo\\core\\expr\\calculus\\derivatives.py\", line 96, in differentiate\r\n res = reverse_sd(expr=expr)\r\n File \"C:\\Users\\[REDACTED]\\Desktop\\diff_expr.py\", line 16, in <module>\r\n diff_expr = differentiate(\r\nKeyError: \"Component with id '1907001786672': 2.0\"\r\n```\r\n\r\n### Information on your system\r\nPyomo version: 6.6.2\r\nPython version: 3.10.10 | packaged by Anaconda, Inc. | (main, Mar 21 2023, 18:39:17) [MSC v.1916 64 bit (AMD64)]\r\nOperating system: Windows 10\r\nHow Pyomo was installed (PyPI, conda, source): From sources\r\nSolver (if applicable): n/a",
"repo": "Pyomo/pyomo",
"source": "v2/experiments/train_data/opd_e4b_pure_v6b/verified_rft_messages.jsonl",
"source_sha256": "0f62460a9706eea5e1605255896f191ab00cb5706c5f1f2e1c293e9a718218dc"
}{
"captured_at": "2026-11-12T17:06:59.476467+00:00",
"membership": "archived training",
"membership_evidence": "Task issues extracted from preserved verified_rft_messages training examples. This is not a verified current RL wave manifest.",
"name": "Preserved post-training task archive",
"source": "Autoresearch-Arena/gemma-4-developer-agent",
"source_revision": "016496de222aaafca0d4ee4c18efc63ba616f76e",
"sources": [
{
"path": "v2/experiments/train_data/opd_e4b_cispo_v5/verified_rft_messages.jsonl",
"sha256": "a43610ad0dfb6ace95375cfae09000f41afc0338cc925af870a4ade7a9b20c4c"
},
{
"path": "v2/experiments/train_data/opd_e4b_hybrid_v3/verified_rft_messages.jsonl",
"sha256": "bd326303eb127e8e5e08f03daf97bb88d79d19709d59f3f93f348bc56686a8df"
},
{
"path": "v2/experiments/train_data/opd_e4b_onpolicy_v3/verified_rft_messages.jsonl",
"sha256": "960c680e797e823a0d3a22f4b1d5ef60a72971373d703b877340b0c9126aaf68"
},
{
"path": "v2/experiments/train_data/opd_e4b_pure_v6a/verified_rft_messages.jsonl",
"sha256": "f045b7ca5b3883a1e2eaee81e1c02a4a1b53dd7b7b36e98bacb2ba5823a15148"
},
{
"path": "v2/experiments/train_data/opd_e4b_pure_v6b/verified_rft_messages.jsonl",
"sha256": "0f62460a9706eea5e1605255896f191ab00cb5706c5f1f2e1c293e9a718218dc"
},
{
"path": "v2/experiments/train_data/opd_e4b_pure_v7/verified_rft_messages.jsonl",
"sha256": "e37f7bd675322f3f81500b73559d60d5f602ca0537bf19f5cb06332c728c7b72"
},
{
"path": "v2/experiments/train_data/opd_e4b_pure_v7b/verified_rft_messages.jsonl",
"sha256": "b864bdc8695183433eef6e31cb8d33fad44ba3aded2170c1ade4ad5b2944ce23"
},
{
"path": "v2/experiments/train_data/opd_e4b_self_audit_v4/verified_rft_messages.jsonl",
"sha256": "0026023745afb8f3dc1c176dc7f7171157b4ad5a66656b524af218e8e19ceee6"
},
{
"path": "v2/experiments/train_data/rft_e4b_aligned_v2/verified_rft_messages.jsonl",
"sha256": "92a4515fee9d152b0d4c510ee3ce4caaaffe2003ba7584469f8027f174aab18c"
},
{
"path": "v2/experiments/train_data/rft_v1/verified_rft_messages.jsonl",
"sha256": "a42453ccd7ac7680b0a03865e8e7080bc8bf74c8d9d193b440c441ed46f8512b"
},
{
"path": "v2/experiments/train_data/rft_v2/verified_rft_messages.jsonl",
"sha256": "18f4b3bd7e651f83c6acab479c9475e3fa50dc652a384f309e97146983ac85ba"
}
]
}