A lineáris programozás egy matematikai tudományág, amely a lineáris egyenlet- és egyenlőtlenségrendszerek által meghatározott -dimenziós vektorterek halmazain történő extremális problémák megoldásának elméletével és módszereivel foglalkozik.
A lineáris programozás (LP) a konvex programozás speciális esete , amely viszont a matematikai programozás speciális esete . Ugyanakkor számos egész és nemlineáris programozási probléma megoldási módszerének az alapja . A lineáris programozás egyik általánosítása a tört lineáris programozás .
A lineáris programozási feladatok számos tulajdonsága poliéderek tulajdonságaiként is értelmezhető, így geometriailag is megfogalmazható és igazolható.
Az egyes gazdasági problémák matematikai vizsgálata, a numerikus anyagok matematikai formalizálása már a XIX . A kiterjesztett termelési folyamat matematikai elemzése során algebrai összefüggéseket használtam, ezek elemzését differenciálszámítással végeztem el . Ez lehetővé tette, hogy általános képet kapjunk a problémáról.
A gazdaság fejlődése megkövetelte a mennyiségi mutatókat, az 1920 -as években létrejött az ágazatközi egyensúly ( IOB ). Ő volt az, aki lendületet adott a matematikai modellek létrehozásának és tanulmányozásának. A MOB fejlődése 1924-1925 között a Szovjetunióban befolyásolta Vaszilij Vasziljevics Leontyev közgazdász és statisztikus munkáját . Kidolgozta a termékek előállításának és elosztásának ágazatközi modelljét.
1938- ban Leonyid Vitalievich Kantorovich tudományos konzultáció során elkezdte tanulmányozni azt a tisztán gyakorlati feladatot, hogy kidolgozza a legjobb tervet a hámozógépek betöltésére (rétegelt lemez bizalom). Ez a feladat nem volt alkalmas a hagyományos módszerekre. Világossá vált, hogy a feladat nem véletlen. [egy]
1939 -ben Leonyid Kantorovich kiadta "A termelés szervezésének és tervezésének matematikai módszerei" című munkáját, amelyben az extrém problémák új osztályát fogalmazta meg korlátozásokkal, és hatékony módszert dolgozott ki ezek megoldására, lefektetve ezzel a lineáris programozás alapjait.
Az ilyen problémák tanulmányozása a lineáris programozás új tudományágának létrehozásához vezetett, és új szakaszt nyitott a gazdasági és matematikai módszerek fejlődésében.
1949- ben George Bernard Dantzig amerikai matematikus kifejlesztett egy hatékony módszert a lineáris programozási problémák (LPP) megoldására - a szimplex módszert . [egy]
A "programozás" kifejezést a "tervezés" értelmében kell érteni (az angol programozás egyik fordítása ). Az 1940-es évek közepén javasolta George Danzig, a lineáris programozás egyik megalapítója, mielőtt a számítógépeket lineáris optimalizálási problémák megoldására használták volna .
A belső pont módszerét először I. I. Dikin említette 1967 -ben . [2] . Ezeket a vizsgálatokat folytatták, köztük hazai tudósok is. Az 1970-es években V. G. Zhadannak sikerült megszereznie a fő eredményeket, és általános megközelítést kidolgoznia a belső pontmódszerek felépítéséhez a lineáris és nemlineáris programozás problémáinak megoldására, a terek transzformációján alapulva; akadály-projektív és barrier-newtoni numerikus módszereket javasol.
A lineáris programozás általános (standard) problémája a [3] alakú lineáris célfüggvény (lineáris alak) minimumának megtalálásának problémája:
Egy olyan problémát, amelyben egyenlőtlenségek formájában jelennek meg megszorítások, alapvető lineáris programozási problémának (BLP) nevezzük.
A lineáris programozás problémája akkor lesz kanonikus formája , ha a fő problémában az első egyenlőtlenségrendszer helyett egy egyenletrendszer van megszorításokkal egyenlőség formájában [4] :
A fő probléma kanonikusra redukálható további változók bevezetésével.
A legáltalánosabb formájú lineáris programozási problémák (problémák vegyes megszorításokkal: egyenlőségek és egyenlőtlenségek, kötöttségektől mentes változók jelenléte) ekvivalens (azonos megoldási halmazzal rendelkező) változókra redukálhatók, és az egyenlőségeket egy párral helyettesítjük. egyenlőtlenségek [5] .
Könnyen belátható, hogy a maximum megtalálásának problémája felváltható a minimum megtalálásának problémájával, ha az együtthatókat ellenkező előjellel vesszük.
Tekintsük a maximális illesztési problémát egy kétoldalú gráfban : több fiú és lány létezik, és minden fiú és lány esetében ismert, hogy szeretik-e egymást. A lehető legtöbb házaspárt kölcsönös rokonszenvvel kell összeházasítani.
Vezessünk be olyan változókat , amelyek megfelelnek a -edik fiú és -edik lány párjának, és eleget tesznek a korlátozásoknak:
célfüggvénnyel , ahol 1 vagy 0, attól függően, hogy a -edik fiú és -edik lány kedvesek-e egymással. Megmutatható, hogy ennek a feladatnak az optimális megoldásai között van egy egész megoldás. Az 1-gyel egyenlő változók azoknak a pároknak felelnek meg, akiknek össze kell házasodniuk.
Legyen egy gráf (irányított élekkel), amelyben minden élre a kapacitása van megadva. És két csúcs adott: egy nyelő és egy forrás. Minden élnél meg kell határozni, hogy mennyi folyadék áramlik át rajta (legfeljebb a kapacitása), hogy maximalizáljuk a teljes áramlást a forrástól a nyelőig (a folyadék nem jelenhet meg vagy tűnhet el minden csúcson, kivéve a forrást és a nyelőt).
Vegyük változónak a th élen átáramló folyadék mennyiségét . Akkor
hol van a th él kapacitása. Ezeket az egyenlőtlenségeket ki kell egészíteni a bejövő és kimenő folyadék mennyiségének egyenlőségével minden csúcsra, kivéve a nyelőt és a forrást. Függvényként természetes, hogy a forrásnál kifolyó és beáramló folyadék mennyisége közötti különbséget vesszük.
Az előző probléma általánosítása a minimális költség maximális áramlása. Ebben a feladatban az egyes élek költségei adottak, és a maximális áramlások közül kell kiválasztani a minimális költségű áramlást. Ez a feladat két lineáris programozási feladatra redukálódik: először meg kell oldani a maximális áramlás problémáját, majd hozzá kell adni ehhez a problémához a megszorítást , ahol a maximális áramlás értéke, és megoldani a problémát egy új függvénnyel - az áramlás költsége.
Ezek a problémák gyorsabban megoldhatók, mint a lineáris programozási feladatok általános megoldására szolgáló algoritmusok, az egyenletek és egyenlőtlenségek speciális szerkezete miatt.
Van egy bizonyos homogén rakomány, amelyet a raktárakból a gyárakba kell szállítani . Minden raktárról ismert, hogy mennyi rakomány van benne , és minden egyes üzem esetében ismert a rakományigénye. A szállítás költsége arányos a raktár és az üzem távolságával (a -edik raktártól a -edik üzemig minden távolság ismert). A legolcsóbb szállítási tervet kell elkészíteni.
A döntő változók ebben az esetben - a -edik raktárból a -edik üzembe szállított rakomány mennyisége . Megfelelnek a korlátozásoknak:
A célfüggvény alakja: , amelyet minimalizálni kell.
Van egy méretmátrix . Az első játékos választ egy számot 1 és , a második 1 és 1 között . Ezután ellenőrzik a számokat, és az első játékos pontokat kap, a második pedig pontokat ( - az első játékos által választott szám - a második). Meg kell találnunk az optimális stratégiát az első játékos számára.
Engedje meg az optimális stratégiát, például az első játékost, a számot valószínűséggel kell kiválasztani . Ekkor az optimális stratégia a következő lineáris programozási probléma megoldása:
amelyben a függvényt maximalizálni kell . Az optimális megoldásban az érték az első játékos nyereményére vonatkozó legrosszabb elvárás.
A lineáris programozás (LP) általános problémájának megoldására a leghíresebb és a gyakorlatban legelterjedtebb a szimplex módszer . Annak ellenére, hogy a szimplex módszer egy meglehetősen hatékony algoritmus, amely jó eredményeket mutatott az alkalmazott LP problémák megoldásában, ez egy exponenciális bonyolultságú algoritmus . Ennek oka a szimplex módszer kombinatorikus jellege, amely egymás után számba veszi a megengedett megoldások poliéderének csúcsait, miközben az optimális megoldást keresi.
Az első polinomiális algoritmust , az ellipszoid módszert 1979 -ben L. Khachiyan szovjet matematikus javasolta , ezzel megoldva egy sokáig megoldatlan problémát. Az ellipszoid módszer teljesen más nem-kombinatorikus jellegű, mint a szimplex módszer. Számítási szempontból azonban ez a módszer kilátástalannak bizonyult. Mindazonáltal a problémák polinomiális összetettségének ténye a hatékony LP-algoritmusok egész osztályának – a belsőpont- módszereknek – létrehozásához vezetett , amelyek közül az első N. Karmarkar 1984 -ben javasolt algoritmusa volt . Az ilyen típusú algoritmusok az LP-probléma folyamatos értelmezését alkalmazzák, amikor az LP-probléma megoldási politópjának csúcsainak felsorolása helyett a feladat azon változóinak terében, amelyek nem haladnak át a csúcsokon, trajektóriák mentén keresnek. a politóp. A belső pont módszer, amely a szimplex módszertől eltérően a tűréstartomány belsejéből kikerüli a pontokat, a Fiacco és McCormick által az 1960 -as években kifejlesztett nemlineáris programozási logaritmikus gátfüggvény módszereket alkalmazza.
Az LP megoldásának másik módja a Seidel algoritmus:
Ez a módszer aszimptotikus bonyolultságú .
Az űrlap minden lineáris programozási problémája [6]
bizonyos módon össze lehet hasonlítani egy másik lineáris programozási problémát, amelyet duálisnak vagy konjugáltnak neveznek az eredetihez vagy közvetlenhez képest. Az eredeti és a kettős probléma közötti kapcsolat főként abban rejlik, hogy az egyik megoldása közvetlenül a másik megoldásából nyerhető. Határozzuk meg a kettős problémát az eredeti lineáris programozási feladathoz képest
Kezdeti feladat | Kettős probléma |
---|---|
Ha a és vektorok elfogadható megoldások a primális és a duális problémákra, akkor a , és az egyenlőség akkor és csak akkor érhető el, ha és optimális megoldások. Ha az egyik kettős feladatpár célfüggvénye nincs korlátozva (felülről az eredetire, alulról a duálisra), akkor a másik probléma megvalósítható megoldásainak területe üres.
Ha a és vektorok a direkt és a duális feladatok optimális megoldásai, akkor a következő egyenlőségek igazak
Vagyis a primális és duális problémák optimális megoldásához a nem feszült (szigorú egyenlőtlenség teljesül) megszorítások nulla változónak, a nem nulla változók (amelyek a támogatási tervben szerepelnek) pedig szorosnak (nem szigorú egyenlőtlenség valósul meg) mint egyenlőség) kötöttségek. De előfordulhat, hogy nulla változó megfelel a szigorú megszorításoknak.
A kettős megoldások ezen tulajdonságai jelentősen csökkenthetik a megoldási időt, ha a változók számánál jóval nagyobb megszorításokkal kell megoldani egy problémát. Ekkor a kettős feladat megoldása után meg lehet találni annak támogatási tervét, amely után a közvetlen feladatban csak a támogatási tervnek megfelelő kényszereket (ezeket a korlátokat feszülni kell) kiválasztva a szokásos lineáris egyenletrendszert. nekik.
Tétel. A kettős LP probléma kettőse az elsődleges LP probléma.
Bizonyítás: Tekintsük az űrlap közvetlen LP-jét a feltétel alatt . Társítsuk hozzá a duális LP-t, és kapjuk meg a feltétel alatt . Vegyük át egy másik, jelentésében egyenértékű formába: a feltétel alatt . Hasonlítsuk össze ismét a duális LP-t vele, és kapjuk meg a feltétel alatt . Egyenértékű formába hozzuk, és az eredetivel megegyező LP-t kapunk: a feltétel mellett .
Az lp_solve egy nyílt forráskódú szoftver (LGPL GNU GNU General Public License for Libraries ) lineáris egyenletek megoldására. Az LpSolve rendelkezik IDE -vel , natív C API-val és sok más API-val a Java, AMPL, MATLAB, Wolfram Mathematica, O-Matrix, Sysquake, Scilab, Octave, FreeMat, Euler, Python, Sage, PHP, R és a Microsoft Solver Foundation számára. .
![]() | ||||
---|---|---|---|---|
|
Optimalizálási módszerek | |
---|---|
Egydimenziós |
|
Nulla sorrend | |
Első rendelés | |
másodrendű | |
Sztochasztikus | |
Lineáris programozási módszerek | |
Nemlineáris programozási módszerek |