Speculative: MathOptInterface 2.0
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ó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 15/100
- Loại issue
- Tái cấu trúc
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- julia
- Lĩnh vực
- backend-api-design
Hướng nghiên cứu
Đây giống một tracker lập kế hoạch mang tính suy đoán cho MathOptInterface v2 hơn là một task có phạm vi cụ thể. Hãy bắt đầu bằng việc đọc các issue liên quan được liên kết và các file được nêu trong src/Bridges, src/constraints.jl và src/Utilities; chọn một proposal cụ thể đã được maintainer đồng thuận trước khi làm việc. Done chưa được định nghĩa cho đến khi một proposal có phạm vi và tiêu chí chấp nhận đã được thống nhất.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
The purpose of this issue is to track things that we could consider changing if we release MathOptInterface v2.0. To be clear for readers, we currently have no plans to release MOI v2. This issue is just to make a note of things so we don't forget them.
Even if we do release MOI v2, we might not implement every item on this list. They're just up for discussion at some point in the process.
[Major] Make all variables belong to a set
We currently have add_variable and add_constrained_variable, and it's complicated to work out how to add a variable when copying to a new solver. Every variable should have a domain, defaulting to x in Reals(1), to distinguish constrained variables from variable-in-set constraints.
This should also help https://github.com/jump-dev/MathOptInterface.jl/issues/1993, because a solver might support an attribute for variable-in-set but not constrained-variable (or vice versa).
It would also help https://github.com/jump-dev/MathOptInterface.jl/issues/1402 because we'd know the set of each variable when writing a CBF file.
[Major] Remove the 0.5 in QuadraticFunction
The 0.5 factor in ScalarQuadraticFunction and VectorQuadraticFunction is a pain. It makes manually constructing functions error-prone, and writing interfaces is a guess/check of do I need a 2 or a 0.5 factor in front of the diagonals. If Vector{ScalarQuadraticTerm} was literally just a list of terms and not a sparse representation of Q, then we could shift the complexity into the solvers who would know whether they needed the factor.
Examples of bugs because of this: https://github.com/jump-dev/MathOptInterface.jl/pull/2182
[Major] reconsider function structure
x-ref https://github.com/jump-dev/MathOptInterface.jl/issues/863
[Major] reconsider vector funnctions
As discussed on today's (2023-06-15) nonlinear call, why not just make
struct VectorFunction{F<:AbstractScalarFunction} <: AbstractVectorFunction
rows::Vector{F}
end
The only special case are VectorAffineFunction and VectorQuadraticFunction, and their structure doesn't add much at present, besides complexity.
[Major] make all indices unique and non-decreasing
x-ref https://github.com/jump-dev/MathOptInterface.jl/issues/2236
Currently different constraint types are allowed to use same index values, which means we don't know the order in which constraints were added. Having a unique non-decreasing index would allow us to copy constraints by creation order , or by groups of similar constraints.
[Minor] Remove NLPBlock
We should entirely remove NLPBlock and use ScalarNonlinearFunction instead.
[Minor] Restrict supports for bridges
Bridges are too permissive: https://github.com/jump-dev/MathOptInterface.jl/pull/2179#discussion_r1209561760.
For example, VectorizeBridge supports any scalar function:
https://github.com/jump-dev/MathOptInterface.jl/blob/a189a892cabb64f9dfb6e890e333ee73337b3338/src/Bridges/Constraint/bridges/vectorize.jl#L59-L65
but this can't be true unless each scalar function has an equivalent vector function. Currently, new scalar functions will trigger a method error for this operate(vcat, ...):
https://github.com/jump-dev/MathOptInterface.jl/blob/a189a892cabb64f9dfb6e890e333ee73337b3338/src/Bridges/Constraint/bridges/vectorize.jl#L82-L83
[Minor] Remove this method
[Minor] Rename Utilities.operate! to Utilities.operate!!
x-ref https://github.com/jump-dev/MathOptInterface.jl/pull/2207
[Minor] remove various deprecated methods
[Minor] Change substitute_variables
https://github.com/jump-dev/MathOptInterface.jl/pull/2250
[Minor] Fix default values of attributes
get for attributes like TimeLimitSec could return the solver's default if unset. The nothing business is confusing.
[Minor] Fix test naming
Fix inconsistent naming of tests like _infeasible_ or _INFEASIBLE_\
[Minor] don't skip unsupported attributes
See https://github.com/jump-dev/MathOptInterface.jl/issues/3032
- Ngôn ngữ chính
- Julia
- Star
- 506
- Fork
- 103
- Merge trung bình
- 1 ngày 10 phút
- Pull request đã merge (30 ngày)
- 12
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
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 jump-dev/MathOptInterface.jl
-
[Bridges] MultirowChange in set_map.jl drops zero coefficientsCó thể đã có người làm @odow đã nhận 6 ngày trước. Đang mở
jump-dev/MathOptInterface.jl#3106 · 2 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Precision loss in Hessian computationCó thể đã có người làm @blegat đã nhận 6 ngày trước. Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 15/100
jump-dev/MathOptInterface.jl#3104 · 11 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Layer instantiatorĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
jump-dev/MathOptInterface.jl#2986 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Differentiable Optimization APIĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
jump-dev/MathOptInterface.jl#2969 · 2 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Add Batched{S} setĐang mởType: Set Request
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
jump-dev/MathOptInterface.jl#2904 · 15 bình luận · 7 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của jump-dev/MathOptInterface.jl
Issue tương tự
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 83/100
JuliaMath/Polynomials.jl#647 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
OpenSourceAWE/SymbolicAWEModels.jl#431 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Make PDAQP an optional extraĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 89/100
Maintainer thường phản hồi trong vòng 4 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 1 ngày