Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

QuadraticExpression.groupby(...).sum() returns a LinearExpression

Đang mở Phù hợp với người mới
#1,064 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

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
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
python
Lĩnh vực
backend, data

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ả

bug

[!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 master branch 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

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của PyPSA/linopy

Tất cả issue của PyPSA/linopy

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.