jump-dev / jump-dev/DiffOpt.jl
Differentiation of conic programs with nonlinear parametric expressions
- 主要言語
- Julia
- スター
- 145
- フォーク
- 21
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
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:
```julia
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?
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
評価
この issue はまだ評価されていません。