QuadraticExpression.groupby(...).sum() returns a LinearExpression
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 76/100
調査の方向性
linopy/expressions.py の LinearExpressionGroupby.sum と .map を読み、結果の構築方法を QuadraticExpression を処理する Relation の分岐と比較してください。提示された groupby の例で再現し、各 grouper について結果の型と vars の次元を確認してください。グループ化した合計が二次データを保持したまま QuadraticExpression を返せば完了です。
索引モデルが issue の本文から書いたものです。
説明
[!NOTE]
The following content was generated by AI.
Version Checks (indicate both or one)
- I have confirmed this bug exists on the lastest release of Linopy.
- I have confirmed this bug exists on the current
masterbranch of Linopy.
Issue Description
QuadraticExpression.groupby(...).sum() returns a LinearExpression wrapping quadratic data (vars still carries the _factor dim). It happens for every grouper type: a dim-name string, a coordinate-name string, a DataArray and a pd.Series.
Cause: LinearExpressionGroupby.sum (and .map) in linopy/expressions.py construct the result with a hardcoded LinearExpression(ds, self.model) instead of the type of self.obj. Only the Relation branch special-cases QuadraticExpression.
Reproducible Example
import pandas as pd, xarray as xr
from linopy import Model
m = Model()
x = m.add_variables(coords=[pd.RangeIndex(4, name="i")], name="x")
q = x * x
g = xr.DataArray([0, 0, 1, 1], coords=[q.coords["i"]], name="g")
for by in ["i", g, g.to_series()]:
print(type(q.groupby(by).sum()).__name__)
# LinearExpression (x3)
r = q.groupby("i").sum()
print(r.data.vars.dims)
# ('i', '_factor', '_term')
Expected Behavior
The result is a QuadraticExpression, as for q.sum().
Installed Versions
linopy 0.10.0.post1.dev18+gae80bc89a (master @ ae80bc89)
- 主要言語
- Python
- スター
- 262
- フォーク
- 89
- 平均マージ
- 2日 7時間
- マージ済み PR(30日)
- 30
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
PyPSA/linopy のほかの issue
-
Constant LinearExpression * multi-term LinearExpression raises TypeError (mirrored product works)対応中かも @anveshachuri が今日担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
PyPSA/linopy#1055 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
bug solver interface
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
メンテナーはふだん 1 日以内に返信
-
enhancement math-spec performance sparse
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
メンテナーはふだん 1 日以内に返信
似ている issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 72/100
521xueweihan/HelloGitHub#4150 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
aws-samples/sample-per-model-bedrock#595 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
メンテナーはふだん 1 日以内に返信
-
bug connectors
難易度 1/5 1時間未満 初心者へのやさしさ 67/100
pyinfra-dev/pyinfra#2036 ·
メンテナーはふだん 9 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信