Potentiaalinen menetelmä on lineaarisen ohjelmointiongelman ratkaisun simpleksimenetelmän muunnos suhteessa kuljetusongelmaan . Se mahdollistaa jostain toteuttamiskelpoisesta ratkaisusta alkaen saada optimaalisen ratkaisun äärellisessä määrässä iteraatioita.
Lavastusta on kahta tyyppiä - matriisi ja verkko. Matriisiformulaatiossa kuljetus on sallittu vain tuottajalta kuluttajalle. Verkkoympäristössä kuljetus voidaan suorittaa mihin tahansa suuntaan (pisteet voivat olla kauttakulkua). Olkoon tuotanto-/kulutuspisteitä, kuljetuskaareja , rahtihintoja kaaria pitkin ja joukko perussarakkeita.
Tehtävä on muotoiltu [1]
löytö
olosuhteissa
missä - kuljetuskustannukset kaareina, - tuotanto (+) / kulutus (-)
- ratkaisu
Kuljetusongelman rajoitusmatriisi koostuu sarakkeista, joissa on vain kaksi nollasta poikkeavaa elementtiä - +1 tuottajalle ja -1 kuluttajalle [2] .
Huomautus: Yleisesti ottaen mikä tahansa matriisin neliömatriisi (eli ) on degeneroitunut, joten jotta simpleksimenetelmä toimisi, on tarpeen ottaa käyttöön keinotekoisia muuttujia tai jättää yksi rivi huomiotta. Käytettäessä kaatopaikkaa (katso alla), sitä vastaava rivi jätetään huomioimatta.
Potentiaalimenetelmä on muunnos simpleksimenetelmästä, jossa kantamatriisi on esitetty puuna [3] .
Kuljetusongelman simpleksimenetelmän kaksoismuuttujia kutsutaan potentiaalisiksi .
Potentiaalit lasketaan kaavalla , joka vastaa
Kaarelle kaarien potentiaalit suhteutetaan kaavalla .
Siten kuluttajan potentiaali on sama kuin tuottajan potentiaali + kuljetuskustannukset. Taloudellisesta näkökulmasta tämä voidaan tulkita tuotteen kustannuksiksi kulutuspisteessä.
Suunnitelman optimaalisuuden tarkistaminen on taloudellisesti helposti tulkittavissa - jos tuotteen hinta kulutuspisteessä on suurempi kuin tuotantokustannukset + kuljetushinta, tämä kaari tulee kuljettaa. Suuruutta kutsutaan jäännöskaareksi .
Kaaren lisääminen aiheuttaa puussa syklin. Kelkan lisäys syötettyä kaaria pitkin johtaa virtausten uudelleenlaskentaan jakson aikana, jolloin kuljetus pitkin yhtä kaaria laskee nollaan. Kaari, jonka virtaus on nolla, poistetaan kannasta, kun taas kantagraafi pysyy puuna (sykli katkeaa).
Jää vain laskea uudelleen potentiaalit - lisää (tai vähennä - riippuu kaaren suunnasta) kaikkiin "riippuvan haaran" kärkiin jäännösarvolla
Prosessi päättyy, kun optimaalisuusehto täyttyy kaikille kaarille.
Ongelma on suljettu, jos tuotantojen summa on yhtä suuri kuin kulutuksen summa.
Yleensä ympäristössä tuotannon määrä on suurempi kuin kulutuksen määrä. Ei-suljettujen ongelmien ratkaisemiseksi sekä alkuperäisen perussuunnitelman saamisen helpottamiseksi käytetään keinotekoista perusmenetelmää [4] . Tätä varten alkuperäistä kaaviota laajennetaan, otetaan käyttöön "kaatopaikka" - lisäpiste, johon kaikki ylituotanto tuodaan nollahintaan.
Jos tuodaan kaareja kaatopaikalta kulutuspisteille erittäin korkealla hinnalla, alkuratkaisu rakentuu triviaalisti - kuljetamme kaiken tuotannon kaatopaikalle, kaiken kulutuksen kaatopaikalta.
Kaaret tuotantopisteistä kaatopaikalle vastaavat lisämuuttujia simplex-menetelmässä ja kaareet kaatopaikalta kulutuspisteisiin vastaavat keinotekoisia muuttujia .
Matriisikuljetusongelmalle toinen algoritmi alkuperäisen suunnitelman rakentamiseksi on mahdollinen.
1. Valitse jokin kärkipiste i.
2. Valitse kaaritapahtuma i:lle. Asetetaan kaaren virtaus kaaren päissä olevien tuotanto- ja kulutusmäärien minimiin. Pienennetään näitä tilavuuksia kaaren virtauksen määrällä. Jätämme huomioimatta pisteen, jonka tilavuus on nolla, yhdessä siihen tulevien kaarien kanssa. Siirrytään kohtaan 2.
Jos tuotannon ja kulutuksen huiput numeroidaan uudelleen ja joka kerta kun valitaan pienimmän numeron omaava kaari, menetelmää kutsutaan luoteiskulmamenetelmäksi [5] .
Lähtökaaren määrittely ja potentiaalien uudelleenlaskenta toteutetaan varsin tehokkaasti. Pääasiallinen ajan "kuluttaja" on optimitarkistus [6] .
Optimaalisuuden tarkistamiseen kuluvan ajan lyhentämiseksi käytetään useita menetelmiä.
1. Esteen avulla - heti kun poikkeaman arvo on suurempi kuin tietty arvo, tuomme kaaren kantaan menemättä muiden kaarien läpi. Jos kaaria ei löydy, vähennämme esteen havaittuun enimmäispoikkeamaan ja lisäämme vastaavan kaaren kantaan.
2. Syklinen näkymä - haku alkaa kohdasta, johon se pysähtyi edellisessä näkymässä.
3. "Hakijoiden" valinta - katseltaessa ei valita yhtä kaaria, vaan useita. Seuraavassa vaiheessa vain valitut kaaret tarkistetaan.
Perusmatriisin determinantti on aina 1, joten kokonaislukutiedolla tehtävä antaa kokonaislukuratkaisuja.
Joillekin kaareille voidaan asettaa kaistanleveysrajoituksia . Pieni algoritmin monimutkaisuus voi ratkaista ongelman rajoitetulla kaistanleveydellä [7] .
löytö
olosuhteissa
Tässä — lisämuuttujia (otettu käyttöön epätasa-arvon muuttamiseksi tasa-arvoksi).
Perus koostuu kolmesta sarjasta - , ja .
missä ovat kaaret, jotka vastaavat tavallisia rajoituksia ( )
— kaaret, jotka ovat saavuttaneet kaistanleveyden rajan (kyllästyt kaaret) ( )
— kaaret, jotka eivät ole saavuttaneet kaistanleveysrajaa (vastaavat lisämuuttujia)( )
Perusmatriisilla on muoto
Kantaluvun käänteisarvo on tällöin yhtä suuri kuin
Kaksoismuuttujat lasketaan kaavalla
Tässä
— potentiaalit (kuten potentiaalien standardimenetelmässä).
— lisämaksu kuljetuksesta kyllästettyä kaaria pitkin.
Myös kaaren kaistanleveyden rajoittamista voidaan lisätä muuttamalla kuvaajaa hieman [8] .
Kaareen A->B lisätään kaksi kärkeä kustannuksella c ja maksimiläpäisyllä p: C kulutus -p ja D tuotanto p. Huiput yhdistetään kaavion A->C<-D->B mukaan A->B:n sijaan. Kaaren A->C hinta on c, kaarien C<-D ja D->B hinta on nolla. Tällainen kaavio ei salli p:tä suuremman virtauksen kulkea pisteiden A->B välillä.
Algoritmi on hyvin samanlainen kuin tavallinen potentiaalimenetelmä. Kyllästynyt kaari ei saa täyttää optimaalisuuskriteeriä, muuten virtausta sitä pitkin tulisi vähentää. Loput kaaret tarkistetaan kriteerin suhteen samalla tavalla kuin vakioversiossa. Aivan kuten vakioalgoritmissa, molemmissa tapauksissa tulee ääriviiva, jossa virtausta tulee muuttaa (vähennä valitulle kaarelle, jos kaari poistetaan kyllästetyistä ja kasvaa normaalin kaaren tapauksessa). Kun virtaukset muuttuvat, yksi kaarista voi mennä nollaan (kuten vakioalgoritmissa) tai kaistanleveyden ylärajaan - käännämme sen kyllästyneiksi.
Samoin kuin vakioalgoritmissa, myös potentiaalit lasketaan uudelleen.
Optimointimenetelmät _ | |
---|---|
Yksiulotteinen |
|
Nolla järjestys | |
Ensimmäinen tilaus | |
toinen tilaus | |
Stokastinen | |
Lineaariset ohjelmointimenetelmät _ | |
Epälineaariset ohjelmointimenetelmät |