Ellipsoidmetoden er en algoritme til at finde et punkt, der ligger i skæringspunktet mellem konvekse mængder. Udviklet af A. S. Nemirovsky og bragt til den algoritmiske implementering af L. G. Khachiyan ved Computing Center for USSR Academy of Sciences.
Først vælges en stor kugle, der indeholder skæringspunktet mellem konvekse sæt. Metoden til at konstruere denne bold afhænger af problemet. Yderligere er der ved hvert trin en ellipsoide specificeret af centrum og vektorer . Ellipsoiden indeholder punkter for hvilke . Bemærk, at den samme ellipsoide kan specificeres på flere måder. Hvis midten af denne ellipsoide tilhører alle konvekse sæt, er det nødvendige punkt fundet. Ellers eksisterer der et hyperplan , der passerer gennem punktet , sådan at et af sættene ligger helt på den ene side af det. Så kan du gå fra det oprindelige grundlag til et andet grundlag , som er parallelle og rettet mod sættet. Lad os nu sætte , , kl . Denne nye ellipsoide indeholder halvdelen af den gamle og har et mindre volumen. Således falder ellipsoidens volumen eksponentielt med en stigning i antallet af trin, og det ønskede punkt vil blive fundet i trin, hvor er volumen af den oprindelige kugle, og er volumen af skæringsområdet. Algoritmens samlede køretid er lig med , hvor er antallet af sæt, er tiden til at kontrollere, om et punkt hører til et sæt.
Hvis det i et lineært programmeringsproblem var muligt at konstruere en kugle indeholdende den ønskede løsning, så kan det løses ved ellipsoidmetoden. For at gøre dette finder vi først et punkt inde i bolden, der opfylder problemets begrænsninger. Vi tegner et hyperplan igennem det , hvor er den objektive funktion, og finder et punkt i skæringspunktet mellem det oprindelige og det nye hyperplan (startende fra den nuværende ellipsoide). Vi gør det samme med det nyfundne punkt. Processen konvergerer til den optimale løsning med en eksponentiel hastighed (da volumen af ellipsoiden falder med denne hastighed).
Den polynomielle algoritme kunne teoretisk set blive den nye standard, men i praksis bør Khachiyan-algoritmen bruges med forsigtighed: der er problemer med en størrelse på 50 variabler, der kræver mere end 24 tusinde iterationer af Khachiyan-metoden, mens antallet af meget simplere iterationer af simplex-metoden i sådanne tilfælde beregnes hundreder eller endda tiere [1] [2] . Der er dog eksempler på problemer, hvor algoritmer af denne klasse arbejder hundredvis af gange mere effektivt end standardimplementeringer af simplex-metoden.
Optimeringsmetoder _ | |
---|---|
Endimensionel |
|
Nul orden | |
Første ordre | |
anden orden | |
Stokastisk | |
Lineære programmeringsmetoder _ | |
Ikke-lineære programmeringsmetoder |