Speculative: MathOptInterface 2.0
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 15/100
- Issue 类型
- 重构
- 描述清晰度
- 需要澄清
- 活跃度
- 停滞
- 技术栈
- julia
调研方向
这更像是一个针对 MathOptInterface v2 的推测性规划跟踪项,而不是一个范围明确的任务。先阅读相关的已链接 issue,以及 src/Bridges、src/constraints.jl 和 src/Utilities 下提到的文件;在开始工作之前,选择一个已获得 maintainer 同意的具体提案。在某个提案的范围和验收标准达成一致之前,Done 尚未定义。
由索引模型根据 Issue 内容生成。
描述
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
- 主要语言
- Julia
- 星标
- 506
- 派生
- 103
- 平均合并
- 1 天 1 小时
- 30 天内合并 PR
- 9
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
jump-dev/MathOptInterface.jl 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 78/100
jump-dev/MathOptInterface.jl#3113 ·
维护者通常 1 天内回复
-
[Bridges] MultirowChange in set_map.jl drops zero coefficients可能已有人在做 @odow 于 7 天前认领。 未关闭
jump-dev/MathOptInterface.jl#3106 · 2 条评论 · 已指派 1 人 ·
维护者通常 1 天内回复
-
Precision loss in Hessian computation可能已有人在做 @blegat 于 7 天前认领。 未关闭
难度 5/5 一周以上 新手友好度 15/100
jump-dev/MathOptInterface.jl#3104 · 11 条评论 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 35/100
jump-dev/MathOptInterface.jl#2986 · 3 条评论 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 25/100
jump-dev/MathOptInterface.jl#2969 · 2 条评论 · 1 个 reaction ·
维护者通常 1 天内回复
查看 jump-dev/MathOptInterface.jl 的全部 Issue
相似的 Issue
-
bug
难度 2/5 1-3 小时 新手友好度 73/100
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 76/100
-
难度 2/5 1-3 小时 新手友好度 76/100
SciML/OrdinaryDiffEq.jl#4907 ·
维护者通常 4 天内回复
-
documentation model-weights
难度 2/5 1-3 小时 新手友好度 72/100
FluxML/Metalhead.jl#311 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 83/100
JuliaMath/Polynomials.jl#647 ·