Differentiation of conic programs with nonlinear parametric expressions
还没有人认领这个 Issue。
评估
调研方向
首先使用 Clarabel 运行 Julia MWE,并将其与 Ipopt 版本进行比较,然后阅读通过 diff_model 和 optimize! 进入的 DiffOpt 参数微分路径。当锥规划支持 sin(θ) * x 之类的非线性参数表达式,并且所提供的示例能够成功完成微分时,即视为完成。
由索引模型根据 Issue 内容生成。
描述
DiffOpt does not support differentiating a conic program if the problem's data depends nonlinearly from the parameters (e.g. if A(theta) x <= b(theta) with A(.) and b(.) given by nonlinear expressions).
Here is a simple MWE:
using JuMP
using Clarabel
using DiffOpt
model = DiffOpt.diff_model(Clarabel.Optimizer)
@variable(model, x >= 0)
@variable(model, θ ∈ MOI.Parameter(1.0))
@objective(model, Min, x)
@constraint(model, sin(θ) * x >= 1.0)
JuMP.optimize!(model)
If we replace Clarabel by Ipopt, the code works like a charm. But Clarabel works much better than Ipopt if the problem is conic.
We can use the chain-rule to differentiate the problem w.r.t. A instead of theta. However, I think it would be more intuitive to support nonlinear expressions depending on the parameters in DiffOpt. What do you think?
- 主要语言
- Julia
- 星标
- 146
- 派生
- 21
- 平均合并
- 1 小时 25 分钟
- 30 天内合并 PR
- 2
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
jump-dev/DiffOpt.jl 的其他 Issue
-
难度 3/5 1-2 天 新手友好度 55/100
jump-dev/DiffOpt.jl#362 · 1 条评论 ·
-
难度 5/5 一周以上 新手友好度 25/100
jump-dev/DiffOpt.jl#358 · 2 条评论 ·
-
难度 3/5 1-2 天 新手友好度 55/100
jump-dev/DiffOpt.jl#348 ·
-
good first issue
难度 4/5 3-5 天 新手友好度 48/100
jump-dev/DiffOpt.jl#336 · 4 条评论 ·
-
难度 5/5 一周以上 新手友好度 35/100
jump-dev/DiffOpt.jl#318 · 1 条评论 ·
查看 jump-dev/DiffOpt.jl 的全部 Issue
相似的 Issue
-
难度 1/5 1 小时以内 新手友好度 83/100
JuliaMath/Polynomials.jl#647 ·
-
难度 2/5 1-3 小时 新手友好度 74/100
OpenSourceAWE/SymbolicAWEModels.jl#431 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 66/100
-
难度 1/5 1 小时以内 新手友好度 89/100
维护者通常 4 天内回复
-
难度 2/5 1-3 小时 新手友好度 76/100
维护者通常 1 天内回复