![]() |
3.6.5 Kuljetusongelmat | ||||||||||||||||||||||||||||
Lataa tulostuskelpoinen PDF-versio tästä luvusta koneellesi!
|
|
Lyhin reitti Tilojen ja tilasiirtymien muodostamaa verkkorakennetta kutsutaan tietojenkäsittelytieteessä tila-avaruudeksi. Tila-avaruuden hakualgoritmit vaativat usein, että tila-avaruus on esitetty siten, että jokaisesta tilasta u voidaan muodostaa joukko Adj(u), jossa ovat ne alkiot, joihin tilasta u on olemassa tilasiirtymä. Tilasiirtymiin voidaan liittää
paino (weight) d(u,v),
joka kertoo, millainen kustannus vaaditaan kuljettaessa tilasta u
tilaan v. Tilaa s kutsutaan tavallisesti lähtötilaksi (source) ja
tilaa t maalitilaksi (goal,
sink). Lyhintä polkua s - t
kutsutaan myös optimaaliseksi poluksi tai reitiksi.
(Tuikkala 2002) Leveyshaku on ehkä yksinkertaisin tila-avaruuden etsintäalgoritmi. Leveyshaku etenee annetusta lähtötilasta s tasaisena rintamana käyttäen tilasiirtymiä, kunnes se saavuttaa maalitilan t. Jos kaikilla tilasiirtymillä on sama paino niin leveyshaku löytää lyhimmän reitin tilasta s tilaan t, olettaen, että t on saavutettavissa s:stä. Tehtävissä, joissa on yleisessä tapauksessa (tilasiirtymillä erilaisia painoja) löydettävä lyhin polku s:stä t:hen, tarvitaan toisenlaista algoritmia. Eräs mahdollisuus on käyttää Dijkstran algoritmia. Dijkstran algoritmi ratkaisee yhden lähteen lyhimmän polun ongelman painotetuille suuntaamattomille graafeille. Yhden lähteen lyhimmän polun ongelmassa on annettuna yksi lähtöpiste s ja yksi tai useampi maalipiste t. Tehtävänä on löytää lyhin polku lähtöpisteestä kaikkiin maalipisteisiin. Leveyshakualgoritmi ylläpitää jonoa Q, jossa sijaitsevat käsittelemistä odottavat pisteet (so. etsintärintama). Kun jostain pisteestä vi löydetään kaari johonkin toiseen pisteeseen, tämä piste siis lisätään jonon Q perälle. Jos lisäksi halutaan tietää löydetyn polun paino, on löydettyihin solmuihin algoritmin edetessä tallennettava kumulatiivinen paino (so. edellisen solmun paino johon lisätään solmujen välisen kaaren paino). Matemaattisesti asia ilmaistaan seuraavasti d(v) = d(u) + d(u,v). Käytännössä usein riittää, että lasketaan polun etäisyys lähtöpisteestä, jolloin kaava yksinkertaistuu muotoon d(v) = d(u) +1. (Tuikkala 2002).
Virtaus
ruuhkautumattomien verkkojen läpi
Minimikustannusvirtaus
Minimikustannusvirtaus on verkon virtausongelmien perustapaus. Minimikustannusvirtaus määrittelee kustannuksiltaan pienimmän reitin verkon läpi alkusolmusta loppusolmuun. Monet tärkeät virtausongelmat ovat tämän yleisen ongelman erikoistapauksia. Tällaisia analyysityökaluja on liitetty viime aikoina myös paikkatieto- ja kuljetusohjelmiin. Oletetaan, että on olemassa suunnattu (virtaus voi kulkea vain määrättyyn suuntaan) verkko G = [N, A] seuraavin ominaisuuksin (Kuva 1):
Kuva 1. Minimikustannusvirtaus Edellisen perusteella minimikustannusvirtaus voidaan esittää minimointiongelmana (Miller & Shaw 2001):
jossa n on solmujen määrä. Rajoituksen 1 mukaan virtauksen erotus solmusta i solmuun j on oltava yhtä suuri kuin solmun i nettovirtaus (bi). Rajoitus 2 määrittää, että virtaus kahden solmun välillä ei voi olla negatiivinen eikä solmujen välistä kapasiteettia suurempi. Minimikustannusvirtausta käsittelevällä ongelmalla ja sen erikoistapauksilla on kaksi tärkeää ominaisuutta. Ensimmäinen on käyvän ratkaisun ominaisuus. Käypä ratkaisu minimikustannusvirtausongelmaan on olemassa, jos Toisin sanoen kysyntäsolmuista verkosta poistuvan virran ja tarjontasolmuista verkkoon tulevan virran pitää olla yhtä suuret. Toinen ominaisuus on kokonaislukuratkaisu. Jos sekä nettovirtaukset (bi) että suunnatut virtauskapasiteetit (uij) ovat kokonaislukuja, myös optimiratkaisuksi tulee kokonaisluku. Kokonaislukuoptimointi on tarpeen tilanteessa, jossa kuljetettavat yksiköt ovat jakamattomia. Minimikustannusvirtauksen
erikoistapauksia
Kuljetusongelma Kuljetusongelmassa on m
tarjontasolmua, joista kuljetus tapahtuu n
kappaleeseen kysyntäsolmuja. Merkitään tarjontasolmuja {si}
ja kysyntäsolmuja {dj}.
Jokainen tarjontasolmu on suoraa yhteydessä kaikkiin kysyntäsolmuihin
viivoilla, joiden kapasiteetti on rajoittamaton ({uij}
= ¥).
Viivojen painot {cij}
ilmaisevat yhden yksikön kuljetuskustannuksen tarjontasolmusta i
kysyntäsolmuun j. Kuljetussolmuja ei ole. (Miller & Shaw 2001) Kuva 2 esittää kuljetusongelmaa. Kuljetusongelman standarditulkinnassa tarjontasolmuja ovat tuotantotehtaat tai varastot ja kysyntäsolmuja varastot tai vähittäiskaupat. Kuljetusongelman avulla voidaan määrittää esim. mistä tehtaista kukin kauppa saa tuotteensa niin, että kuljetusten kokonaiskustannukset minimoituvat.
Käypä ratkaisu on olemassa, jos Jos tämä ei pidä paikkaansa, yhtälöön voidaan lisätä eron tasaava dummy-muuttuja. Kuljetusongelman
laajennusta, jossa on myös välisolmuja, kutsutaan nimellä
transshipment- eli siirtämisongelma (transshipment problem). Nämä välisolmut
voivat toimia kuljetus-, tarjonta- tai kysyntäsolmuina.
Reaalimaailmassa transshipment-ongelma voi olla tilanne, jossa tehtaista
kuljetetaan tuotteita varastoihin ja niistä edelleen vähittäiskauppoihin.
Matemaattisesti tämä ongelma on samanlainen minimikustannusvirtausta käsittelevän
ongelman kanssa muuten paitsi, että kahden solmun välisen viivan
ei-negatiivisuus ja kapasiteettirajoitteen tilalla on nyt pelkkä
ei-negatiivisuusrajoite (Miller & Shaw 2001). Kuva 2. Kuljetusongelma Maksimivirtaus
Maksimivirtausongelmassa on tarkoitus löytää verkosta reitti, jota pitkin verkon läpi alkusolmusta loppusolmuun voi mennä suurin mahdollinen määrä esim. jotain tuotetta. Tässä tapauksessa on olemassa yksi tarjontasolmu ja yksi kysyntäsolmu. Näiden välillä olevat solmut ovat kuljetussolmuja. Koska nyt on tarkoituksena saada verkosta läpi maksimimäärä esim. jotain tuotetta kustannuksista piittaamatta, virtauskustannus{cij} = 0. Määritetään verkon läpi kulkevan virtauksen yläraja
Kuva 3. Maksimivirtausongelma Kun verkon lähtösolmu on 1 ja kohdesolmu n, voidaan maksimivirtausongelma kirjoittaa yhtälön muotoon (Miller & Shaw 2001):
Minimikustannusvirtausongelman
ja sen erikoistapausten ratkaiseminen Edellä käsitellyt virtausongelmat koostuvat lineaarisista yhtälöistä. Kaikki ongelmat on muotoiltu lineaarisen ohjelmoinnin edellytysten mukaan eli sekä kohdeyhtälöt että rajoitukset ovat lineaarisia. Lineaarinen optimointiyhtälö on kätevä ratkaista simplex-algoritmin avulla. Verkon ja kuljetuksen optimoimiseksi on olemassa omat tähän tarkoitukseen laaditut simplex-menetelmät. (Miller & Shaw 2001)
|
|
||||||||||||||||||||||||||
Tuikkala, J. 2002. Lyhyimmän polun etsiminen ja painotettujen alueiden ongelma. Turun yliopisto. LUK-tutkielma. Tietojenkäsittelytiede. 33 s. Miller, H. J. ja Shaw, S. 2001. Geographic information systems for transportation. Oxford University Press. |
|||||||||||||||||||||||||||||