jump-dev / jump-dev/DiffOpt.jl

Differentiation of problems with Almost Locally Solved termination status

Offen
#336 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
good first issue
Vorherrschende Sprache
Julia
Sterne
145
Forks
21
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

DiffOpt seems to not suppoer problems with the termination status Almost Locally Solved. Below is a minimum working example.

```julia
using JuMP
using Ipopt
using DiffOpt

# Create differentiable model with loose tolerances
diff_optimizer = optimizer_with_attributes(
Ipopt.Optimizer,
"print_level" => 3,
"tol" => 1e-2,
"acceptable_tol" => 1e-1,
"max_iter" => 5,
"acceptable_iter" => 2
)

model = Model(() -> DiffOpt.diff_optimizer(diff_optimizer))

# Decision variables
@variable(model, x >= 0)
@variable(model, y >= 0)

# Parameters (weights in objective)
w = [0.1, 0.1] # Initial parameter values
weight = w
weight = JuMP.@variable(
model,
[j in keys(w)] in MOI.Parameter(w[j]),
base_name = "weight")

@constraint(model, x + y >= 10)
@constraint(model, 2x + y >= 15)

@objective(model, Min, weight[1]*x + weight[2]*y)

optimize!(model)

println("\nStatus: $(termination_status(model))")

for (i, key) in enumerate(keys(weight))
perturbation = i
DiffOpt.set_forward_parameter(model, weight[key], perturbation)
end

# Solve perturbed problem
optimize!(model)

# Compute forward derivatives
DiffOpt.forward_differentiate!(model)

```

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Führe zuerst das Julia-Mindestbeispiel aus und verfolge dann `DiffOpt.forward_differentiate!` sowie die Behandlung des Beendigungsstatus Almost Locally Solved. Erledigt ist die Aufgabe, wenn das Beispiel die Vorwärtsdifferenzierung für diesen Status erfolgreich abschließt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
julia
Bereich
tooling
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.