Ellipsoidmetoden är en algoritm för att hitta en punkt som ligger i skärningspunkten mellan konvexa mängder. Utvecklat av A. S. Nemirovsky och fört till den algoritmiska implementeringen av L. G. Khachiyan vid Computing Center vid USSR Academy of Sciences.
Först väljs en stor boll som innehåller skärningen av konvexa uppsättningar. Metoden för att konstruera denna boll beror på problemet. Vidare, vid varje steg finns det en ellipsoid specificerad av centrum och vektorer . Ellipsoiden innehåller punkter för vilka . Observera att samma ellipsoid kan specificeras på flera sätt. Om mitten av denna ellipsoid tillhör alla konvexa uppsättningar, hittas den önskade punkten. Annars finns det ett hyperplan som passerar genom punkten , så att en av uppsättningarna ligger helt på ena sidan av den. Sedan kan du gå från den ursprungliga basen till en annan bas som är parallell och riktad mot uppsättningen. Låt oss nu sätta , , vid . Denna nya ellipsoid innehåller hälften av den gamla och har en mindre volym. Således minskar volymen av ellipsoiden exponentiellt med en ökning av antalet steg, och den önskade punkten kommer att hittas i steg, där är volymen av den ursprungliga bollen, och är volymen av skärningsområdet. Algoritmens totala körtid är lika med , där är antalet uppsättningar, är tiden för att kontrollera om en punkt tillhör en uppsättning.
Om det i ett linjärt programmeringsproblem var möjligt att konstruera en kula som innehåller den önskade lösningen, så kan det lösas med ellipsoidmetoden. För att göra detta hittar vi först någon punkt inuti bollen som uppfyller begränsningarna för problemet. Vi ritar ett hyperplan genom det , där är den objektiva funktionen, och hittar en punkt i skärningspunkten mellan det ursprungliga och nya hyperplanet (med början från den nuvarande ellipsoiden). Vi gör samma sak med den nyfunna punkten. Processen konvergerar till den optimala lösningen med en exponentiell hastighet (eftersom volymen av ellipsoiden minskar med denna hastighet).
Polynomalgoritmen skulle teoretiskt sett kunna bli den nya standarden, men i praktiken bör Khachiyan-algoritmen användas med försiktighet: det finns problem med en storlek på 50 variabler som kräver mer än 24 tusen iterationer av Khachiyan-metoden, medan antalet mycket enklare iterationer av simplexmetoden i sådana fall beräknas hundratals eller till och med tiotals [1] [2] . Det finns dock exempel på problem där algoritmer av denna klass fungerar hundratals gånger mer effektivt än standardimplementationer av simplexmetoden.
_ | Optimeringsmetoder|
---|---|
En-dimensionell |
|
Noll ordning | |
Första beställning | |
andra beställning | |
Stokastisk | |
Linjära programmeringsmetoder _ | |
Icke -linjära programmeringsmetoder |