Grundläggande genomförbar lösning

I teorin för linjär programmering är en grundläggande genomförbar lösning ( BFS ) en lösning med en minimal uppsättning variabler som inte är noll. Geometriskt motsvarar varje BFS ett hörn av polyedern av möjliga lösningar. Om det finns en optimal lösning, så finns det en optimal BFS. För att hitta en optimal lösning är det därför tillräckligt att överväga BFS-erna. Detta faktum används av simplexalgoritmen , som i huvudsak går från en viss BFS till en annan tills en optimal hittas.

Definitioner

Preliminärer: ekvationsform med linjärt oberoende rader

För definitionerna nedan presenterar vi först det linjära programmet i den så kallade ekvationsformen :

maximera
med förbehåll för och

var:

  • och är vektorer av storlek n (antalet variabler);
  • är en vektor med storleken m (antalet begränsningar);
  • är en m -by- n matris;
  • betyder att alla variabler är icke-negativa.

Alla linjära program kan konverteras till en ekvationsform genom att lägga till slackvariabler .

Som ett preliminärt saneringssteg verifierar vi att:

  • Systemet har minst en lösning (annars har hela LP-skivan ingen lösning och det finns inget mer att göra);
  • Alla m rader i matrisen är linjärt oberoende, dvs dess rangordning är m (annars kan vi bara ta bort redundanta rader utan att ändra LP).

Möjlig lösning

En möjlig lösning av LP är vilken vektor som helst så att . Vi antar att det finns minst en genomförbar lösning. Om m = n så finns det bara en möjlig lösning. Typiskt m < n , så systemet har många lösningar; varje sådan lösning kallas en genomförbar lösning av LP.

Grund

En grund för LP är en icke-singular submatris av A, med alla m rader och endast m < n kolumner.

Ibland används termen bas inte för själva delmatrisen, utan för uppsättningen av index för dess kolumner. Låt B vara en delmängd av m -index från {1,..., n }. Beteckna med den kvadratiska m -by- m -matrisen gjord av de m kolumnerna i indexerade av B . Om är nonsingular , är kolumnerna som indexeras av B en bas för kolumnutrymmet för . I det här fallet kallar vi B en grund för LP:n.

Eftersom rangordningen för är m , har den minst en bas; eftersom har n kolumner, har den högst baser.

Grundläggande genomförbar lösning

Givet en bas B , säger vi att en genomförbar lösning är en grundläggande genomförbar lösning med bas B om alla dess icke-nollvariabler indexeras med B , det vill säga för alla .

Egenskaper

1. En BFS bestäms endast av LP:ns begränsningar (matrisen och vektorn ; det beror inte på optimeringsmålet.

2. Per definition har en BFS högst m icke-nollvariabler och minst n - m nollvariabler. En BFS kan ha mindre än m icke-nollvariabler; i så fall kan den ha många olika baser, som alla innehåller indexen för dess icke-nollvariabler.

3. En möjlig lösning är grundläggande om-och-bara-om kolumnerna i matrisen är linjärt oberoende, där K är mängden index av elementen som inte är noll i .

4. Varje bas bestämmer en unik BFS: för varje bas B av m -index finns det högst en BFS med bas B . Detta beror på att måste uppfylla kravet och per definition av basen är matrisen icke-singular, så begränsningen har en unik lösning:

Motsatsen är inte sant: varje BFS kan komma från många olika baser. Om den unika lösningen av uppfyller icke-negativitetsbegränsningarna , då kallas B en genomförbar bas .

5. Om ett linjärt program har en optimal lösning (dvs. det har en genomförbar lösning och uppsättningen av genomförbara lösningar är begränsad), så har det en optimal BFS. Detta är en konsekvens av Bauers maximala princip : målet för ett linjärt program är konvext; uppsättningen möjliga lösningar är konvex (det är en skärningspunkt av hyperrymden); därför uppnår målet sitt maximum i en extrem punkt av uppsättningen av genomförbara lösningar.

Eftersom antalet BFS-s är ändligt och begränsat av kan en optimal lösning för alla LP hittas i ändlig tid genom att bara utvärdera objektivfunktionen i alla BFS-s. Detta är inte det mest effektiva sättet att lösa en LP; simplexalgoritmen undersöker BFS-erna på ett mycket mer effektivt sätt .

Exempel

Tänk på ett linjärt program med följande begränsningar:

Matrisen A är:

Här är m =2 och det finns 10 delmängder av 2 index, dock är inte alla baser: mängden {3,5} är inte en bas eftersom kolumnerna 3 och 5 är linjärt beroende.

Mängden B ={2,4} är ​​en bas, eftersom matrisen är icke-singular.

Den unika BFS som motsvarar denna bas är .

Geometrisk tolkning

Elongated pentagonal orthocupolarotunda.png

Uppsättningen av alla möjliga lösningar är en skärningspunkt av hyperrymder . Därför är det en konvex polyeder . Om det är avgränsat är det en konvex polytop . Varje BFS motsvarar en vertex av denna polytop.

Grundläggande genomförbara lösningar för det dubbla problemet

Som nämnts ovan definierar varje bas B en unik grundläggande genomförbar lösning . På ett liknande sätt definierar varje bas en lösning till det dubbla linjära programmet :

minimera
med förbehåll för .

Lösningen är .

Att hitta en optimal BFS

Det finns flera metoder för att hitta en BFS som också är optimal.

Använder simplexalgoritmen

I praktiken är det enklaste sättet att hitta en optimal BFS att använda simplexalgoritmen . Den behåller, vid varje punkt av dess exekvering, en "nuvarande bas" B (en delmängd av m av n variabler), en "nuvarande BFS" och en "nuvarande tablå". Tabellen är en representation av det linjära programmet där de grundläggande variablerna uttrycks i termer av de icke-grundläggande:

där är vektorn för m basvariabler, är vektorn för n icke-grundläggande variabler, och är maximeringsmålet . Eftersom icke-grundläggande variabler är lika med 0, är ​​den aktuella BFS , och det aktuella maximeringsmålet är .

Om alla koefficienter i är negativa är en optimal lösning, eftersom alla variabler (inklusive alla icke-grundläggande variabler) måste vara minst 0, så den andra raden antyder .

Om några koefficienter i är positiva kan det vara möjligt att öka maximeringsmålet. Till exempel, om är icke-grundläggande och dess koefficient i är positiv, kan en ökning av den över 0 göra större. Om det är möjligt att göra det utan att bryta mot andra begränsningar, så blir den ökade variabeln grundläggande (den "träder in i basen"), medan någon basvariabel minskas till 0 för att behålla likhetsbegränsningarna och blir därmed icke-grundläggande (den "går ut grunden").

Om denna process görs noggrant, är det möjligt att garantera att ökar tills den når en optimal BFS.

Konvertera vilken optimal lösning som helst till en optimal BFS

I värsta fall kan simplexalgoritmen kräva exponentiellt många steg att slutföra. Det finns algoritmer för att lösa en LP i svagt polynomisk tid, såsom ellipsoidmetoden ; dock returnerar de vanligtvis optimala lösningar som inte är grundläggande.

Men med tanke på vilken optimal lösning som helst på LP:n är det lätt att hitta en optimal genomförbar lösning som också är grundläggande .

Att hitta en bas som är både primaloptimal och dubbeloptimal

En bas B för LP kallas dual-optimal om lösningen är en optimal lösning för det dubbla linjära programmet, det vill säga det minimerar . I allmänhet är en primal-optimal bas inte nödvändigtvis dubbeloptimal, och en dubbeloptimal bas är inte nödvändigtvis primal-optimal (i själva verket kan lösningen av en primal-optimal bas till och med vara omöjlig för den dubbla, och vice versa ).

Om både är en optimal BFS för den primära LP:n, och en optimal BFS för den dubbla LP:n, då bas B kallas PD-optimal . Varje LP med en optimal lösning har en PD-optimal bas, och den hittas av Simplex-algoritmen . Dess körtid är dock exponentiell i värsta fall. Nimrod Megiddo bevisade följande satser:

  • Det finns en starkt polynomisk tidsalgoritm som matar in en optimal lösning till den primära LP:n och en optimal lösning till den dubbla LP:n, och returnerar en optimal bas.
  • Om det finns en starkt polynomisk tidsalgoritm som matar in en optimal lösning till endast den primära LP (eller endast den dubbla LP) och returnerar en optimal bas, så finns det en starkt polynomisk tidsalgoritm för att lösa alla linjära program (den senare är en berömt öppet problem).

Megiddos algoritmer kan exekveras med hjälp av en tablå, precis som simplexalgoritmen.

externa länkar