QuadraticExpression.groupby(...).sum() returns a LinearExpression
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 76/100
Hướng nghiên cứu
Đọc LinearExpressionGroupby.sum và .map trong linopy/expressions.py, sau đó so sánh cách tạo kết quả của chúng với nhánh Relation xử lý QuadraticExpression. Tái hiện bằng ví dụ groupby được cung cấp và kiểm tra kiểu kết quả cùng các chiều vars cho từng grouper. Công việc hoàn tất khi các tổng được nhóm trả về QuadraticExpression đồng thời giữ nguyên dữ liệu bậc hai.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
[!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)
- Ngôn ngữ chính
- Python
- Star
- 262
- Fork
- 89
- Merge trung bình
- 2 ngày 7 giờ
- Pull request đã merge (30 ngày)
- 30
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của PyPSA/linopy
-
Constant LinearExpression * multi-term LinearExpression raises TypeError (mirrored product works)Có thể đã có người làm @anveshachuri đã nhận hôm nay. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
PyPSA/linopy#1055 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug solver interface
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement math-spec performance sparse
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
Maintainer thường phản hồi trong vòng 1 ngày
Issue tương tự
-
backlog
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 91/100
EchoTools/nevr-runtime#1108 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
parse names a key after a top-level multi() threshold Bitcoin Core v31.1 refuses as not validĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
btclib-org/btclib-wallet#587 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Judgment-Pack/judgment-pack-spec#275 ·
Maintainer thường phản hồi trong vòng 1 ngày