Lineaarinen ohjelmointi

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 5. toukokuuta 2022 tarkistetusta versiosta . tarkastukset vaativat 5 muokkausta .

Lineaarinen ohjelmointi  on matemaattinen tieteenala, joka on omistettu teorialle ja menetelmille äärimmäisten ongelmien ratkaisemiseksi lineaaristen yhtälö- ja epäyhtälöysjärjestelmien määrittämissä -ulotteisen vektoriavaruuden joukoissa.

Lineaarinen ohjelmointi (LP) on konveksin ohjelmoinnin erikoistapaus , joka puolestaan ​​on matemaattisen ohjelmoinnin erikoistapaus . Samalla se on perusta useille menetelmille kokonaislukujen ja epälineaaristen ohjelmointiongelmien ratkaisemiseksi . Yksi lineaarisen ohjelmoinnin yleistys on murto-lineaarinen ohjelmointi .

Monet lineaarisen ohjelmointiongelmien ominaisuudet voidaan tulkita myös polyhedrien ominaisuuksiksi ja siten muotoilla ja todistaa geometrisesti.

Historia

Yksittäisten talousongelmien matemaattisia tutkimuksia, numeerisen aineiston matemaattista formalisointia tehtiin jo 1800-luvulla . Laajennetun tuotantoprosessin matemaattisessa analyysissä käytettiin algebrallisia suhteita, joiden analyysi suoritettiin differentiaalilaskennan avulla . Tämä mahdollisti yleiskäsityksen ongelmasta.

Talouden kehitys vaati määrällisiä indikaattoreita, ja 1920- luvulla luotiin sektorien välinen tasapaino ( IOB ). Hän oli se, joka toimi sysäyksenä matemaattisten mallien luomisessa ja tutkimisessa. MOB : n kehitys Neuvostoliitossa vuosina 1924-1925 vaikutti taloustieteilijän ja tilastotieteilijän Vasily Vasilievich Leontievin työhön . Hän kehitti sektorien välisen mallin tuotteiden tuotannosta ja jakelusta.

Vuonna 1938 Leonid Vitalievich Kantorovich alkoi tieteellisen kuulemisen aikana tutkia puhtaasti käytännöllistä tehtävää laatia paras kuormauskoneiden lastaussuunnitelma (vanerin luottamus). Tämä tehtävä ei soveltunut perinteisiin menetelmiin. Kävi selväksi, että tehtävä ei ollut satunnainen. [yksi]

Vuonna 1939 Leonid Kantorovich julkaisi teoksen "Matematical Methods of Organisation and Planning of Production", jossa hän muotoili uuden luokan äärimmäisiä ongelmia rajoituksin ja kehitti tehokkaan menetelmän niiden ratkaisemiseksi, mikä loi perustan lineaariseen ohjelmointiin.

Tällaisten ongelmien tutkiminen johti uuden tieteellisen lineaarisen ohjelmoinnin tieteenalan luomiseen ja avasi uuden vaiheen taloudellisten ja matemaattisten menetelmien kehityksessä.

Vuonna 1949 amerikkalainen matemaatikko George Bernard Dantzig kehitti tehokkaan menetelmän lineaaristen ohjelmointiongelmien (LPP) ratkaisemiseksi - simplex-menetelmän . [yksi]

Termi "ohjelmointi" on ymmärrettävä merkityksessä "suunnittelu" (yksi englanninkielisen  ohjelmoinnin käännöksistä ). George Danzig, yksi lineaarisen ohjelmoinnin perustajista, ehdotti sitä 1940-luvun puolivälissä, ennen kuin tietokoneita käytettiin lineaarisen optimointiongelmien ratkaisemiseen .

Sisäpistemenetelmän mainitsi ensimmäisen kerran I. I. Dikin vuonna 1967 . [2] . Näitä tutkimuksia jatkettiin, mukaan lukien kotimaiset tutkijat. 1970-luvulla V. G. Zhadan onnistui saamaan tärkeimmät tulokset ja kehittämään yleisen lähestymistavan sisäpistemenetelmien rakentamiseen lineaarisen ja epälineaarisen ohjelmoinnin ongelmien ratkaisemiseksi, jotka perustuvat tilojen muuntamiseen; ehdottaa esteprojektiivisia ja este-newtonilaisia ​​numeerisia menetelmiä.

Tehtävät

Lineaarisen ohjelmoinnin yleinen (vakio)ongelma on muotoa [3] olevan lineaarisen tavoitefunktion (lineaarisen muodon) minimin löytämisen ongelma:

Ongelmaa, jossa esiintyy rajoitteita epäyhtälöiden muodossa, kutsutaan peruslineaariseksi ohjelmointiongelmaksi (BLP) .

Lineaarisen ohjelmoinnin ongelmalla on kanoninen muoto , jos pääongelmassa ensimmäisen epäyhtälöjärjestelmän sijasta on yhtälöjärjestelmä, jossa on rajoituksia tasa-arvon muodossa [4] :

Pääongelma voidaan pelkistää kanoniseksi ottamalla käyttöön lisämuuttujia.

Yleisimmän muodon lineaariset ohjelmointiongelmat (ongelmia, joissa on sekalaisia ​​rajoituksia: yhtäläisyydet ja epätasa-arvot, rajoituksista vapaat muuttujat) voidaan pelkistää ekvivalenteiksi (sama ratkaisujoukko) muuttujien muutoksiin ja yhtälöiden korvaamiseen parilla. epätasa-arvo [5] .

On helppo nähdä, että maksimin löytämisen ongelma voidaan korvata minimin löytämisen ongelmalla ottamalla kertoimet päinvastaisella etumerkillä.

Ongelmaesimerkkejä

Suurin vastaavuus

Harkitse maksimaalista yhteensopivuusongelmaa kaksiosaisessa kaaviossa : poikia ja tyttöjä on useita, ja jokaiselle pojalle ja tytölle tiedetään pitävätkö he toisistaan. On välttämätöntä solmia naimisiin mahdollisimman monta paria molemminpuolisella sympatialla.

Otetaan käyttöön muuttujat , jotka vastaavat -: nnen pojan ja -: nnen tytön paria ja täyttävät rajoitukset:

tavoitefunktiolla , jossa ovat 1 tai 0 riippuen siitä, ovatko -. poika ja -. tyttö mukavia toisilleen. Voidaan osoittaa, että tämän ongelman optimaalisten ratkaisujen joukossa on kokonaislukuratkaisu. Muuttujat 1 vastaavat pareja, joiden tulisi olla naimisissa.

Suurin virtaus

Olkoon graafi (suunnattu reuna), jossa kunkin reunan kapasiteetti on osoitettu. Ja kaksi kärkeä annetaan: nielu ja lähde. Jokaiselle reunalle on määriteltävä, kuinka paljon nestettä virtaa sen läpi (enintään sen kapasiteetti), jotta kokonaisvirtaus lähteestä nieluon maksimoituu (neste ei voi ilmestyä tai kadota kaikissa pisteissä paitsi lähteessä ja nielussa, vastaavasti).

Otetaan muuttujiksi th reunan  läpi virtaavan nesteen määrä . Sitten

missä  on th reunan kapasiteetti. Näitä epätasa-arvoja on täydennettävä saapuvan ja lähtevän nesteen määrän yhtäläisyydellä jokaisessa kärjessä, lukuun ottamatta nielua ja lähdettä. Funktiona on luonnollista ottaa lähteellä ulosvirtaavan ja sisäänvirtaavan nesteen määrän erotus.

Edellisen ongelman yleistys on minimikustannusten maksimivirtaus. Tässä tehtävässä kunkin reunan kustannukset on annettu ja maksimivirtojen joukosta on valittava virtaus pienimmällä kustannuksella. Tämä tehtävä rajoittuu kahteen lineaariseen ohjelmointitehtävään: ensin on ratkaistava maksimivirtauksen ongelma ja sitten lisättävä tähän ongelmaan rajoitus , jossa  on maksimivirtauksen arvo, ja ratkaista ongelma uudella funktiolla  - virtauksen hinta.

Nämä ongelmat voidaan ratkaista nopeammin kuin yleisillä lineaaristen ohjelmointiongelmien ratkaisualgoritmeilla johtuen yhtälöiden ja epäyhtälöiden erityisestä rakenteesta.

Kuljetusongelma

On tietty homogeeninen lasti, joka on kuljetettava varastoista tehtaille. Jokaisen varaston osalta tiedetään, kuinka paljon rahtia siinä on , ja kunkin tehtaan rahtitarve tunnetaan. Kuljetuskustannukset ovat verrannollisia etäisyyteen varastosta tehtaaseen (kaikki etäisyydet varastosta -tehtaan tunnetaan). On laadittava halvin kuljetussuunnitelma.

Ratkaisevia muuttujia tässä tapauksessa ovat - varastosta -: nnelle tehtaalle  kuljetetun lastin määrä . Ne täyttävät rajoitukset:

Tavoitefunktion muoto on: , joka on minimoitava.

Nollasummapeli

On kokomatriisi . Ensimmäinen pelaaja valitsee numeron väliltä 1 - , toinen - 1 - . Sitten he tarkistavat numerot ja ensimmäinen pelaaja saa pisteitä ja toinen pisteitä (  - ensimmäisen pelaajan valitsema numero  - toinen). Meidän on löydettävä optimaalinen strategia ensimmäiselle pelaajalle.

Anna optimaalinen strategia, esimerkiksi ensimmäinen pelaaja, numero on valittava todennäköisyydellä . Sitten optimaalinen strategia on ratkaisu seuraavaan lineaariseen ohjelmointiongelmaan:

jossa funktio halutaan maksimoida . Optimaalisen ratkaisun arvo on pahimman tapauksen odotus ensimmäisen pelaajan voitosta.

Ratkaisualgoritmit

Tunnetuin ja laajimmin käytetty käytännössä lineaarisen ohjelmoinnin (LP) yleisen ongelman ratkaisemiseksi on simpleksimenetelmä . Huolimatta siitä, että simpleksimenetelmä on melko tehokas algoritmi, joka on osoittanut hyviä tuloksia sovellettujen LP-ongelmien ratkaisemisessa, se on algoritmi, jonka monimutkaisuus on eksponentiaalinen . Syynä tähän on simplex-menetelmän kombinatorinen luonne, joka luettelee peräkkäin hyväksyttävien ratkaisujen monitahoisen kärjet etsiessään optimaalista ratkaisua.

Neuvostoliiton matemaatikko L. Khachiyan ehdotti vuonna 1979 ensimmäistä polynomialgoritmia , ellipsoidimenetelmää , mikä ratkaisi ongelman, joka oli ollut ratkaisematta pitkään. Ellipsoidimenetelmällä on täysin erilainen ei-kombinatorinen luonne kuin simpleksimenetelmällä. Laskennallisesti tämä menetelmä osoittautui kuitenkin lupaamattomaksi. Siitä huolimatta ongelmien polynomimonimutkaisuus johti kokonaisen luokan tehokkaiden LP-algoritmien luomiseen - sisäpistemenetelmiin , joista ensimmäinen oli N. Karmarkarin vuonna 1984 ehdotettu algoritmi . Tämän tyyppisissä algoritmeissa käytetään jatkuvaa LP-ongelman tulkintaa, jolloin LP-ongelman ratkaisujen polytoopin kärkipisteiden luettelemisen sijaan tehdään haku trajektoreja pitkin tehtävän muuttujien avaruudessa, jotka eivät kulje kärkien läpi. polytooppista. Sisäpistemenetelmä, joka toisin kuin simpleksimenetelmä ohittaa pisteet toleranssialueen sisäpuolelta, käyttää Fiaccon ja McCormickin 1960-luvulla kehittämiä ei-lineaarisen ohjelmoinnin logaritmisen estefunktiomenetelmiä.

Toinen tapa ratkaista LP on käyttää Seidel-algoritmia:

  1. LP annetaan kanonisessa muodossa muuttujien ja rajoitusten kanssa, jotka muodostavat joukon .
  2. Jos tai , johda optimaalinen perusratkaisu .
  3. Muussa tapauksessa valitse satunnainen rajoitus ja laske rekursiivisesti optimaalinen perusratkaisu .
  4. Jos optimaalinen perusratkaisu ei riko rajoitusta , palauta se.
  5. Muussa tapauksessa laske LP-polyhedronin leikkauspiste hypertason kanssa ja ratkaise tuloksena oleva LP rekursiivisesti muuttujalla.

Tällä menetelmällä on asymptoottinen monimutkaisuus .

Kaksoislineaariset ohjelmointiongelmat

Jokainen muodon lineaarinen ohjelmointitehtävä [6]

on mahdollista tietyllä tavalla verrata jotain muuta lineaarista ohjelmointiongelmaa, jota kutsutaan duaaliksi tai konjugaatiksi suhteessa alkuperäiseen tai suoraan. Yhteys alkuperäisen ja kaksoisongelman välillä on pääasiassa siinä, että toisen ratkaisu voidaan saada suoraan toisen ratkaisusta. Määritellään kaksoisongelma suhteessa alkuperäiseen lineaariseen ohjelmointitehtävään

Alkutehtävä Kaksoisongelma

Jos vektorit ja  ovat hyväksyttäviä ratkaisuja alku- ja kaksoisongelmiin, niin , ja tasa-arvo saavutetaan jos ja vain jos ja  ovat optimaalisia ratkaisuja. Jos toisen kaksoistehtäväparin tavoitefunktiota ei ole rajoitettu (ylhäältä alkuperäiselle, alhaalta kaksoistehtävälle), toisen ongelman toteuttamiskelpoisten ratkaisujen alue on tyhjä.

Jos vektorit ja  ovat suorien ja kaksoisongelmien optimaalisia ratkaisuja, niin seuraavat yhtälöt ovat tosia

Toisin sanoen primaali- ja kaksoisongelmien optimaalisille ratkaisuille ei-kireät (tiukka eriarvoisuus täyttyy) rajoitukset vastaavat nollaa muuttujaa ja nollasta poikkeavat muuttujat (sisältyvät tukisuunnitelmaan) vastaavat tiukkaa (ei-tiukka epäyhtälö toteutuu). tasa-arvon) rajoituksina. Mutta tiukkoja rajoituksia vastaavia muuttujia voi olla nolla.

Nämä kaksoisratkaisujen ominaisuudet voivat merkittävästi lyhentää ratkaisuaikaa, jos joudut ratkaisemaan ongelman useilla rajoituksilla, jotka ovat paljon suurempia kuin muuttujien lukumäärä. Sitten on mahdollista, kun kaksoistehtävä on ratkaistu, löytää sen tukisuunnitelma, jonka jälkeen, kun suorassa tehtävässä on valittu vain tukisuunnitelmaa vastaavat rajoitukset (kaikki nämä rajoitukset on jännityttävä), ratkaista tavallinen lineaarinen yhtälöjärjestelmä. heille.

Lause. Dual LP -ongelman duaali on primaali-LP-ongelma.

Todistus: Harkitse muodon suoraa LP: tä ehdon alla . Yhdistetään kaksois-LP siihen ja hankitaan ehdolla . Viedään se toiseen muotoon, merkitykseltään vastaava: ehdolla . Verrataanpa taas kaksois-LP:tä siihen ja saadaan ehdolla . Muutamme sen vastaavaan muotoon ja saamme alkuperäisen kanssa identtisen LP: n: ehdolla .

Ohjelmisto

lp_solve on avoimen lähdekoodin ohjelmisto (LGPL GNU GNU General Public License for Libraries ) lineaaristen yhtälöiden ratkaisemiseen. LpSolvessa on IDE , natiivi C API ja monet muut sovellusliittymät Javalle, AMPL:lle, MATLAB:lle, Wolfram Mathematicalle, O-Matrixille, Sysquaken, Scilabille, Octavelle, FreeMatille, Eulerille, Pythonille, Sagelle, PHP:lle, R:lle ja Microsoft Solver Foundationille. .

Katso myös

Muistiinpanot

  1. 1 2 Lähde: Altai Regional Universal Scientific Library. V. Ya. Shishkova (AKUNB) Arkistoitu 5. maaliskuuta 2022 Wayback Machinessa . Optimointimenetelmät: Proc. korvaus. Brazovskaja N.V.; Altain osavaltion tekninen yliopisto I. I. Polzunova, [Etäisyyskeskus. oppiminen]. - Barnaul: AltGTU Publishing House, 2000. - 120 s. - ISBN 5-BNV-MOr.9.00 - UDC / LBC 22.183.4 B871.
  2. Dikin I. I. Lineaarisen ja toisen asteen ohjelmointiongelmien iteratiivinen ratkaisu // Dokl. Neuvostoliiton tiedeakatemia. - 1967. - T. 174 , nro 4 . - S. 747-748 .
  3. Karmanov, 1986 , s. 63.
  4. Karmanov, 1986 , s. 80.
  5. Karmanov, 1986 , s. 77.
  6. Sähköinen oppikirja "Taloudelliset ja matemaattiset menetelmät". Duality in Linear Programming Arkistoitu 17. kesäkuuta 2016 Wayback Machinessa

Kirjallisuus

Linkit