Differentiation of problems with Almost Locally Solved termination status
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 48/100
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.
Beschreibung
DiffOpt seems to not suppoer problems with the termination status Almost Locally Solved. Below is a minimum working example.
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)
- Vorherrschende Sprache
- Julia
- Sterne
- 146
- Forks
- 21
- Ø Merge
- 1 Std. 25 Min.
- Gemergte PRs (30 T.)
- 2
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus jump-dev/DiffOpt.jl
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 55/100
jump-dev/DiffOpt.jl#362 · 1 Kommentar ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
jump-dev/DiffOpt.jl#358 · 2 Kommentare ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 55/100
jump-dev/DiffOpt.jl#348 ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
jump-dev/DiffOpt.jl#331 · 1 Kommentar ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
jump-dev/DiffOpt.jl#318 · 1 Kommentar ·
Alle Issues in jump-dev/DiffOpt.jl
Ähnliche Issues
-
View of a view is brokenEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 85/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 67/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
JuliaPy/pyjuliapkg#102 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
JuliaMath/Polynomials.jl#641 ·