Wie berechnet man das maximale Ellipsoid in einem bestimmten Polyeder?

8

Ich stehe vor dem Problem, das Ellipsoid ( ist eine symmetrische positive definitive Matrix) mit maximalem Volumen innerhalb einer konvexen Menge die als eine Menge linearer Ungleichungen . Ich habe verstanden, wie es als konvexes Optimierungsproblem formalisiert wird wie in "Convex Optimization, Stephen Boyd und Lieven Vandenberghe, Cambridge University Press, 2004" [pdf version] angegeben . Mein Ansatz wäre, Innenpunktmethoden zu verwenden und einen Genauigkeitsparameter t> 0 einzuführenBBCC={x|aiTxbi,i=1,,m}

minB,d[logdetB1]s.t.:||Bai||2+aiTdbi,i=1,,m
t>0und integrieren Sie die Einschränkungen über eine logarithmische Barrierefunktion in das Ziel, wie in Kapitel 11 des obigen Buches erläutert, und versuchen Sie, das resultierende uneingeschränkte Problem \ min_ {B, d} \ quad \ underbrace {\ left [\ log \ det B ^ zu minimieren {-1} - \ frac {1} {t} \ sum_ {i = 1} ^ m \ log (b_i- || Ba_i || _2-a_i ^ Td) \ right]} _ {= f (B, d )}.
minB,d[logdetB11ti=1mlog(bi||Bai||2aiTd)]=f(B,d).
Daher würde ich partielle Ableitungen von f :
fB=B1+1ti=1m(BaiaiT||Bai||bi||Bai||2aiTd)
ist eine Matrix und
fd=1ti=1m(aibi||Bai||2aiTd)
ist ein Vektor. Und dann ausgehend von einem anfänglichen (machbaren) Punkt (B0,d0)Ich würde die tatsächliche Lösung (B ^ k, d ^ k) iterativ (Bk,dk)gemäß den negativen partiellen Ableitungen aktualisieren : B ^ {k + 1} = B ^ k - s_B \ frac {\ partielles f (B ^ k, d ^ k) } {\ partielles B} \\ d ^ {k + 1} = d ^ k - s_d \ frac {\ partielles f (B ^ k, d ^ k)} {\ partielles d}
Bk+1=BksBf(Bk,dk)Bdk+1=dksdf(Bk,dk)d
wobei sB>0 und sd>0sind Schrittgrößenparameter, bis ein vordefiniertes Stoppkriterium erfüllt ist. \ Ich bin nicht sicher, ob dies ein korrekter Weg ist, um das Problem zu lösen? Es scheint mir sehr umständlich und nicht sehr elegant. Ich bin kein Experte für Optimierungstechniken und nicht sicher, ob ich alle Inhaltsstoffe (partielle Ableitungen, Innenpunktmethode, uneingeschränkte Minisierung usw.) richtig zusammengesetzt habe. Ich frage mich, wie ein Experte dieses Problem lösen würde. In dem oben erwähnten Buch wurde diese Aufgabe als Beispiel für ein konvexes Problem gezeigt, aber soweit ich sehen kann, wurde ein so expliziter Algorithmus zur Lösung der Aufgabe angegeben. Ich denke zwar, dass Mr. Boyd irgendwo ein Matlab-Skript auf seinen Seiten hat, um die Aufgabe zu lösen, aber ich möchte zuerst die grundlegenden Techniken verstehen, bevor ich einen "Black-Box" -Algorithmus verwende. Es scheint andere Ansätze in " Innenpunkt-Polynomalgorithmen in der konvexen Programmierung; Yurii Nesterov und Arkadii Nemirovskii, SIAM-Studien in angewandter Mathematik; Vol.13, 1994 "und" Über die Komplexität der Approximation des maximal eingeschriebenen Ellipsoids für ein Polytop, Leonid G. Khachiyan und Michael J. Todd, Mathematical Programming 61 (1993), 137-159 ", aber ich verstehe sie nicht, weil Sie sind für mich technisch geschrieben.

Übrigens: Wie sieht das doppelte Problem des ersten Problems aus? Und wie wird es abgeleitet?

Danke im Voraus

Denis K.
quelle
1
Es gibt Löser, die all diese Dinge für Sie tun. Gibt es einen Grund, warum Sie sie stattdessen selbst machen möchten? Wenn ich als jemand spreche, der einmal etwas über Interieur-Punkt-Methoden gelernt und in einem Optimierungslabor gearbeitet und einige der Methoden in MATLAB (für Hausaufgaben) codiert hat, würde ich immer noch den Black-Box-Solver verwenden .
Geoff Oxberry
1
Ich halte mich an das Prinzip, mindestens eine Basisversion einer Methode zu verstehen / zu implementieren, bevor ich Standardroutinen verwende. Ich denke, dieses Prinzip hat zwei günstige Aspekte: 1) Es hat einen immensen Lerneffekt und ein tieferes Verständnis der Methoden. 2) In den meisten Anwendungen reicht eine Basisversion eines mathematischen Algorithmus aus (zumindest für die Anwendungen, mit denen ich konfrontiert bin). So können Sie Ihren Code klein und einfach halten und müssen sich nicht um Lizenzsachen kümmern (falls Sie damit etwas Geld verdienen möchten).
Denis K.

Antworten:

1

Nun, Sie sind auf dem richtigen Weg. Es ist keine Magie, diese Probleme mit Innenpunktmethoden zu lösen. Sie sind iterativer Natur und basieren auf Linearisierungen usw.

Ein typischer Innenpunktalgorithmus für diese Probleme würde jedoch keinen Schritt in Gradientenrichtung machen, sondern auch Informationen zweiter Ordnung berechnen und somit einen Newton-Schritt machen. Daher wird eine Liniensuche entlang der Newton-Richtung durchgeführt, ein optimaler Schritt wird unternommen und die Prozedur wird wiederholt. Nach der Konvergenz (zu einer angemessen definierten Genauigkeit) wird der Barriereparameter (mit einem geeigneten Faktor) verringert und der Vorgang erneut wiederholt.

Damit es in der Praxis funktioniert, müssen Sie sorgfältig überlegen, wie Sie die Parameteraktualisierungen durchführen. In den meisten Fällen führen Sie alles im Primal-Dual-Bereich durch.

Wenn Sie nach albernsdp googeln, finden Sie eine einfache Implementierung eines SDP-Lösers, der im Wesentlichen Beispiel 11.9 implementiert, in der Boyd & Vandenberghe-Referenz, die Sie lesen. Vielleicht ein Anfang für Inspiration (da semidefinite Programmierung eine Verallgemeinerung eines SOCP ist, den Sie lösen, wobei der logdet-Begriff im Ziel vernachlässigt wird, was die Dinge nicht wirklich kompliziert).

Johan Löfberg
quelle