Kuljetustehtävä. Materiaalia kuljetetaan m:stä lähtöpaikasta n:ään tarvepaikkaan. Kuljetuskustannukset lähtöpaikasta i tarvepaikkaan j ovat c ij

Samankaltaiset tiedostot
Jälki- ja herkkyysanalyysi. Tutkitaan eri kertoimien ja vakioiden arvoissa tapahtuvien muutosten vaikutusta optimiratkaisuun

Lineaarinen optimointitehtävä

4. Luennon sisältö. Lineaarisen optimointitehtävän ratkaiseminen Simplex-menetelmä

Lineaarisen kokonaislukuoptimointitehtävän ratkaiseminen

6. Luennon sisältö. Lineaarisen optimoinnin duaaliteoriaa

Johdatus verkkoteoriaan luento Netspace

JYVÄSKYLÄN YLIOPISTO. 3. Luennon sisältö

Kokonaislukuoptimointi

4.5 Kaksivaiheinen menetelmä simplex algoritmin alustukseen

1 Kertaus. Lineaarinen optimointitehtävä on muotoa:

Esimerkkejä kokonaislukuoptimointiongelmista

Optimaalisuusehdot. Yleinen minimointitehtävä (NLP): min f(x) kun g i (x) 0 h j (x) = 0

Luento 4: Lineaarisen tehtävän duaali

Mat Lineaarinen ohjelmointi

Lineaarinen optimointitehtävä

Ellipsoidimenetelmä. Samuli Leppänen Kokonaislukuoptimointi. S ysteemianalyysin Laboratorio

Ovatko seuraavat väittämät oikein vai väärin? Perustele vastauksesi.

Lineaarinen optimointi. Harjoitus 6-7, Olkoon A R m n, x, c R ja b R m. Osoita, että LP-tehtävän. c T x = min!

Mat Lineaarinen ohjelmointi

Simplex-algoritmi. T Informaatiotekniikan seminaari , Susanna Moisala

Mat Lineaarinen ohjelmointi

Harjoitus 3 ( )

3 Simplex-menetelmä. c T x = min! Ax = b (x R n ) (3.1) x 0. Tarvittaessa sarakkeiden järjestystä voidaan vaihtaa, joten voidaan oletetaan, että

Liittomatriisi. Liittomatriisi. Määritelmä 16 Olkoon A 2 M(n, n). Matriisin A liittomatriisi on cof A 2 M(n, n), missä. 1) i+j det A ij.

Demo 1: Simplex-menetelmä

8. Ensimmäisen käyvän kantaratkaisun haku

Harjoitus 3 ( )

2 Konveksisuus ja ratkaisun olemassaolo

Numeeriset menetelmät

Malliratkaisut Demot

Ennakkotehtävän ratkaisu

Malliratkaisut Demot 6,

Insinöörimatematiikka D

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Algoritmit 1. Demot Timo Männikkö

Harjoitus 6 ( )

Vapaus. Määritelmä. jos c 1 v 1 + c 2 v c k v k = 0 joillakin c 1,..., c k R, niin c 1 = 0, c 2 = 0,..., c k = 0.

Johdatus verkkoteoriaan luento Netspace

v 8 v 9 v 5 C v 3 v 4

7 Vapaus. 7.1 Vapauden määritelmä

Harjoitus 6 ( )

Käänteismatriisin ominaisuuksia

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä

Determinantti. Määritelmä

Insinöörimatematiikka D

Määritelmä Olkoon T i L (V i, W i ), 1 i m. Yksikäsitteisen lineaarikuvauksen h L (V 1 V 2 V m, W 1 W 2 W m )

Malliratkaisut Demot

Lineaarikombinaatio, lineaarinen riippuvuus/riippumattomuus

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä

Malliratkaisut Demot

Matriisilaskenta Luento 12: Vektoriavaruuden kannan olemassaolo

Malliratkaisut Demot

Lineaarialgebra ja matriisilaskenta II Syksy 2009 Laskuharjoitus 1 ( ) Ratkaisuehdotuksia Vesa Ala-Mattila

Yhtälöryhmä matriisimuodossa. MS-A0007 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Vapaus. Määritelmä. jos c 1 v 1 + c 2 v c k v k = 0 joillakin c 1,..., c k R, niin c 1 = 0, c 2 = 0,..., c k = 0.

Matematiikka B2 - TUDI

Determinantti. Määritelmä

4.3. Matemaattinen induktio

Johdatus matemaattiseen päättelyyn

Duaalisuus kokonaislukuoptimoinnissa. Mat , Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki

Vapaus. Määritelmä. Vektorijono ( v 1, v 2,..., v k ) on vapaa eli lineaarisesti riippumaton, jos seuraava ehto pätee:

Matematiikka B2 - Avoin yliopisto

Kokonaislukuoptiomointi Leikkaustasomenetelmät

Luetteloivat ja heuristiset menetelmät. Mat , Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki

2.5. Matriisin avaruudet ja tunnusluvut

Miten osoitetaan joukot samoiksi?

Lineaariset yhtälöryhmät ja matriisit

Insinöörimatematiikka D

Piiri K 1 K 2 K 3 K 4 R R

Mat Lineaarinen ohjelmointi

Determinantti 1 / 30

Ratkaisuehdotukset LH 7 / vko 47

Kombinatorinen optimointi

Talousmatematiikan perusteet: Luento 11. Lineaarikuvaus Matriisin aste Käänteismatriisi

Numeeriset menetelmät

Johdatus verkkoteoriaan 4. luento

Matriisien tulo. Matriisit ja lineaarinen yhtälöryhmä

Ratkaisuehdotukset LH 3 / alkuvko 45

Luento 3: Simplex-menetelmä

Malliratkaisut Demot

1 Johdanto LP tehtävän luonteen tarkastelua Johdanto herkkyysanalyysiin Optimiarvon funktio ja marginaalihinta

MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt

Kokonaislukuoptimointi hissiryhmän ohjauksessa

Osoita, että täsmälleen yksi vektoriavaruuden ehto ei ole voimassa.

Todennäköisyyslaskenta I, kesä 2017 Helsingin yliopisto/avoin Yliopisto Harjoitus 1, ratkaisuehdotukset

Johdatus graafiteoriaan

11. Javan toistorakenteet 11.1

Harjoitus 1 ( )

2.8. Kannanvaihto R n :ssä

Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos:

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Koodausteoria, Kesä 2014

Mat Dynaaminen optimointi, mallivastaukset, kierros 1

Tarkennamme geneeristä painamiskorotusalgoritmia

A = a b B = c d. d e f. g h i determinantti on det(c) = a(ei fh) b(di fg) + c(dh eg). Matriisin determinanttia voi merkitä myös pystyviivojen avulla:

v AB q(t) = q(t) v AB p(t) v B V B ṗ(t) = q(t) v AB Φ(t, τ) = e A(t τ). e A = I + A + A2 2! + A3 = exp(a D (t τ)) (I + A N (t τ)), A N = =

Insinöörimatematiikka D

Algoritmit 2. Luento 10 To Timo Männikkö

Tentissä on viisi tehtävää, jotka arvosteellaan asteikolla 0-6. Tehtävien alakohdat ovat keskenään samanarvoisia ellei toisin mainita.

(0 desimaalia, 2 merkitsevää numeroa).

Transkriptio:

Kuljetustehtävä Materiaalia kuljetetaan m:stä lähtöpaikasta n:ään tarvepaikkaan Kuljetuskustannukset lähtöpaikasta i tarvepaikkaan j ovat c ij Lähtöpaikan i kapasiteetti on a i (oletetaan, että a i > 0 kaikilla i) Tarvepaikan j tarve on b j (oletetaan, että b j > 0 kaikilla j) Oletetaan, että tehtävä on tasapainossa, ts. m i=1 a i = n j=1 b j Tavoite: Järjestä kuljetukset siten, että kuljetuskustannukset minimoituvat 1

x ij = lähtöpaikasta i tarvepaikkaan j kuljetettava määrä min kun m n i=1 j=1 n j=1 m i=1 x ij 0 c ij x ij x ij = a i x ij = b j i = 1,..., m j = 1,..., n i = 1,..., m, j = 1,..., n 2

Koska m i=1 a i = n j=1 b j, niin mallissa on yksi ylimääräinen rajoite, joka voidaan jättää pois = Perusratkaisussa on m + n 1 perusmuuttujaa 3

Kuljetustaulukko x 11 x 12... x 1n a 1 x 21 x 22... x 2n a 2.... x m1 x m2... x mn a m b 1 b 2... b n 4

Perusratkaisussa on m + n 1 perusmuuttujaa =... = Kuljetustaulukossa on perusratkaisu, jos siinä on olemassa rivi tai sarake, jolla on vain yksi perusmuuttuja, ja jos sama pätee taulukolle, josta kyseinen rivi tai sarake on poistettu 5

Esimerkki (perusmuuttujat, 4 + 6 1 = 9 kpl, merkitty tähdellä): 7 17 5 24 15 10 9 3 8 8 53 Sarakkeessa 2 yksi perusmuuttuja = Poistetaan sarake 2 = Rivillä 3 yksi perusmuuttuja = Poistetaan rivi 3 = jne. 6

Perusmuuttujien arvot voidaan laskea poistamalla rivejä ja sarakkeita edellä esitetyllä tavalla, esimerkiksi: Sarake 2 = 7 17 10 5 24 15 10 9 3 8 8 53 (Seuraavaksi rivi 3) 7

Rivi 3 = 7 17 10 5 5 24 15 10 9 3 8 8 53 (Seuraavaksi sarake 4) 8

Sarake 4 = 7 17 10 5 5 3 24 15 10 9 3 8 8 53 (Seuraavaksi sarake 3) 9

Sarake 3 = 14 7 17 10 5 5 3 24 15 10 9 3 8 8 53 (Seuraavaksi rivi 1) 10

Rivi 1 = 14 7 7 17 10 5 5 3 24 15 10 9 3 8 8 53 (Seuraavaksi sarake 6) 11

Sarake 6 = 14 7 7 17 10 5 5 3 15 24 15 10 9 3 8 8 53 (Seuraavaksi rivi 4) 12

Rivi 4 = 14 7 7 17 10 5 5 6 3 15 24 15 10 9 3 8 8 53 (Seuraavaksi sarake 1) 13

Sarake 1 = 14 7 7 9 17 10 5 5 6 3 15 24 15 10 9 3 8 8 53 (Seuraavaksi rivi 2) 14

Rivi 2 = 14 7 7 9 8 17 10 5 5 6 3 15 24 15 10 9 3 8 8 53 Saatiin perusratkaisu, joka ei kuitenkaan ole sallittu 15

Kuljetustaulukon silmukat Kuljetustaulukon alkioiden joukko muodostaa silmukan, jos se ei ole tyhjä siinä on kaksi tai nolla alkiota jokaiselta riviltä ja sarakkeelta millään tämän joukon aidolla osajoukolla ei ole näitä ominaisuuksia Alkioiden joukko muodostaa silmukan Alkiot ovat lineaarisesti riippuvia Alkioiden joukko ei muodosta silmukkaa Alkiot ovat lineaarisesti riippumattomia 16

Olkoon B kuljetustehtävän perusratkaisun perusmuuttujien joukko = Joukon B alkiot ovat lineaarisesti riippumattomia Lisätään joukkoon B yksi uusi alkio x ij = Joukon B {x ij } alkiot ovat lineaarisesti riippuvia = Joukko B {x ij } sisältää silmukan ja x ij kuuluu siihen 17

Liitetään silmukan alkioihin vuorotellen luvut +1 ja 1, alkaen +1:stä Esimerkki: x 11 x 16 x 26 x 21 x 11 + 1 1 + 1 1 + 1 18

Kuljetustehtävän alkuratkaisu Sallitun perusratkaisun muodostaminen: Aluksi perusjoukko on tyhjä. Aseta a i = a i kaikilla i = 1,..., m ja b j = b j kaikilla j = 1,..., n. 1. Valitse tämänhetkisestä kuljetustaulukosta uusi perusjoukon alkio x rs. (Jatkuu) 19

(Jatkoa) 2. Aseta x rs = min{a r, b s}. Muuta a r = a r x rs ja b s = b s x rs. Jos perusjoukossa on m + n 1 alkiota, lopeta. Muuten jatka kohdasta 3. 3. Jos a r = 0 ja b s > 0, poista rivi r kuljetustaulukosta. Jos b s = 0 ja a r > 0, poista sarake s kuljetustaulukosta. Jos a r = b s = 0 ja tämänhetkisessä kuljetustaulukossa on vain yksi rivi, poista sarake s kuljetustaulukosta. Jos a r = b s = 0 ja tämänhetkisessä kuljetustaulukossa on enemmän kuin yksi rivi, poista rivi r kuljetustaulukosta. Jatka kohdasta 1. 20

Esimerkki: 6 25 20 13 4 16 10 9 7 18 64 x 43 = min{13,10} = 10 a 4 = 13 10 = 3 b 3 = 10 10 = 0 21

= Poistetaan sarake 3 : 6 25 20 10 3 4 16 0 9 7 18 54 x 25 = min{25,7} = 7 a 2 = 25 7 = 18 b 5 = 7 7 = 0 22

= Poistetaan sarake 5 : 6 7 18 20 10 3 4 16 0 9 0 18 47 x 44 = min{3,9} = 3 a 4 = 3 3 = 0 b 4 = 9 3 = 6 23

= Poistetaan rivi 4 : 6 7 18 20 10 3 0 4 16 0 6 0 18 44 x 32 = min{20,16} = 16 a 3 = 20 16 = 4 b 2 = 16 16 = 0 24

= Poistetaan sarake 2 : 6 7 18 16 4 10 3 0 4 0 0 6 0 18 28 x 31 = min{4,4} = 4 a 3 = 4 4 = 0 b 1 = 4 4 = 0 25

= Poistetaan rivi 3 : 6 7 18 4 16 0 10 3 0 0 0 0 6 0 18 24 x 21 = min{18,0} = 0 a 2 = 18 0 = 18 b 1 = 0 0 = 0 26

= Poistetaan sarake 1 : 6 0 7 18 4 16 0 10 3 0 0 0 0 6 0 18 24 x 26 = min{18,18} = 18 a 2 = 18 18 = 0 b 6 = 18 18 = 0 27

= Poistetaan rivi 2 : 6 0 7 18 0 4 16 0 10 3 0 0 0 0 6 0 0 6 x 14 = min{6,6} = 6 a 1 = 6 6 = 0 b 2 = 6 6 = 0 28

= Poistetaan sarake 4 : 6 0 0 7 18 0 4 16 0 10 3 0 0 0 0 0 0 0 0 x 16 = min{0,0} = 0 a 1 = 0 0 = 0 b 6 = 0 0 = 0 29

= Lopetetaan : 6 0 0 0 7 18 0 4 16 0 10 3 0 0 0 0 0 0 0 0 30

Saatiin sallittu perusratkaisu: 6 0 6 0 7 18 25 4 16 20 10 3 13 4 16 10 9 7 18 64 31

Uuden perusjoukon alkion valinta Esimerkiksi: Valitaan se x rs, jolle on voimassa c rs = min{c ij i ja j ovat tämänhetkisessä kuljetustaulukossa} Vogelin approksimaatiomenetelmä: Lasketaan jokaiselle jäljellä olevalle riville ja sarakkeelle säästö = kahden pienimmän c ij :n erotus kyseisellä rivillä tai sarakkeella Valitaan se x rs, joka antaa suurimman säästön 32

Kuljetustehtävän ratkaisualgoritmi Muodostetaan alkuratkaisu (= sallittu perusratkaisu) Iteroidaan kunnes optimi löytyy: Lasketaan suhteelliset hintakertoimet c ij ei-perusmuuttujille kuljetustaulukon silmukoiden tai duaalimuuttujien avulla Jos kaikki c ij 0, optimi on löytynyt = lopetetaan Valitaan x pq siten, että c pq < 0 Lisätään x pq perusjoukkoon ja selvitetään sen arvo kuljetustaulukon silmukoiden avulla Määrätään perusjoukon muuttujien arvot ja poistetaan sieltä sellainen, jonka arvo on 0 33

Kuljetustaulukko, johon on lisätty hintakertoimet, suhteelliset hintakertoimet ja duaalimuuttujat: c 11 c 12... c 1n u 1 x 11 c 11 x 12 c 12 x 1n c 1n a 1 c 21 c 22... c 2n u 2 x 21 c 21 x 22 c 22 x 2n c 2n a 2.... c m1 c m2... c mn u m x m1 c m1 x m2 c m2 x mn c mn a m v 1 v 2... v n b 1 b 2 b n 34

Esimerkki:..... 10 4 12 6 1 12 0 8 6.... 0 3 2 6 2 7 3 18 1 25..... 4 2 16 4 2 10 2 1 20..... 10 2 10 5 3 5 7 5 13...... 4 16 10 9 7 18 64 35

Suhteelliset hintakertoimet silmukoiden avulla Esimerkin perusjoukko on B = {x 14, x 16, x 21, x 25, x 26, x 31, x 32, x 43, x 44 } Jos perusjoukkoon lisätään x 11, muodostuu sinne silmukka x 11 x 16 x 26 x 21 x 11 Liitetään silmukan alkioihin luvut +1, 1, +1, 1 ja +1 36

Jos x 11 kasvaa yhdellä = x 16 täytyy pienetä yhdellä, jotta rivin 1 rajoite pysyy voimassa = x 26 täytyy kasvaa yhdellä, jotta sarakeen 6 rajoite pysyy voimassa = x 21 täytyy pienetä yhdellä, jotta rivin 2 rajoite pysyy voimassa Kokonaisvaikutus objektifunktion arvoon on c 11 c 16 + c 26 c 21 = 10 8 + ( 1) ( 3) = 4 = Suhteellinen hintakerroin c 11 = 4 Vastaavasti kaikille ei-perusmuuttujille 37

Suhteelliset hintakertoimet duaalimuuttujien avulla Olkoon u i kapasiteettirajoitetta n j=1 x ij = a i vastaava duaalimuuttuja Olkoon v j tarverajoitetta m i=1 x ij = b j vastaava duaalimuuttuja Kuljetustehtävän duaalitehtävä: max m i=1 a i u i + n j=1 b j v j kun u i + v j c ij i = 1,..., m, j = 1,..., n u i, v j R i = 1,..., m, j = 1,..., n 38

Duaaliteoria = Komplementaarisuusehdot = u i + v j = c ij x ij B Kuljetustehtävässä yksi ylimääräinen rajoite = Yksi duaalimuuttujan arvo vapaa = Muut duaalimuuttujat voidaan ratkaista Duaaliteoria = Primaalin suhteelliset hintakertoimet ovat samat kuin duaalin ylijäämämuuttujien arvot optimissa = c ij = c ij (u i + v j ) x ij / B 39

Esimerkissä yhtälöt u i + v j = c ij, x ij B, ovat: u 1 + v 4 = 1 u 3 + v 1 = 2 u 1 + v 6 = 8 u 3 + v 2 = 4 u 2 + v 1 = 3 u 4 + v 3 = 5 u 2 + v 5 = 3 u 4 + v 4 = 5 u 2 + v 6 = 1 = u 1 = 8 v 2 = 0 u 2 = 1 v 3 = 3 u 3 = 4 v 4 = 7 u 4 = 2 v 5 = 4 v 1 = 2 v 6 = 0 40

= 4 4 1 0 8 10 4 12 6 1 12 0 8 6 3 4 10 1 0 3 2 6 2 7 3 18 1 25 5 13 6 3 4 4 2 16 4 2 10 2 1 20 10 4 1 3 2 10 2 10 5 3 5 7 5 13 2 0 3 7 4 0 4 16 10 9 7 18 64 Ei optimaalinen, koska jotkut c ij < 0 41

Uuden perusjoukon alkion valinta Valitaan x pq siten, että c pq < 0 Jos useampi c ij < 0, valitaan niistä (esimerkiksi) pienin 42

Uuden perusjoukon alkion arvo silmukoiden avulla Lisätään x pq perusjoukkoon ja selvitetään muodostunut silmukka Jos x pq kasvaa arvosta 0 arvoon θ = Silmukassa toisena olevan x ij :n arvo täytyy pienetä arvoon x ij θ = Silmukassa kolmantena olevan x ij :n arvo täytyy kasvaa arvoon x ij + θ = jne. 43

Liitetään silmukan alkioihin luvut +1, 1, +1, 1,... On oltava x ij 0 kaikilla i ja j = θ θ = min{x ij silmukan alkioon x ij liittyy 1} 44

Perusjoukon alkioiden uudet arvot Muutetaan silmukan alkioiden arvoja seuraavasti: x ij = x ij + θ jos alkioon x ij liittyy +1 x ij = x ij θ jos alkioon x ij liittyy 1 Ainakin yhden muuttujan arvoksi tulee 0 ja yksi sellainen poistetaan perusjoukosta 45

Esimerkki jatkuu: 4 4 1 0 8 10 4 12 6 1 12 0 8 6 3 4 10 1 0 3 2 6 2 7 3 18 1 25 5 13 6 3 4 4 2 16 4 2 10 2 1 20 10 4 1 3 2 10 2 10 5 3 5 7 5 13 2 0 3 7 4 0 4 16 10 9 7 18 64 Pienin c ij on c 35 = 6 46

Uusi perusmuuttuja x 35 Muodostuu silmukka x 35 x 31 x 21 x 25 x 35 θ = min{x 31, x 25 } = min{4,7} = 4 x 35 = x 35 + θ = 0 + 4 = 4 x 31 = x 31 θ = 4 4 = 0 x 21 = x 21 + θ = 0 + 4 = 4 x 25 = x 25 θ = 7 4 = 3 Muuttuja x 31 poistuu perusjoukosta = Uusi iteraatio: Lasketaan uudet c ij :t 47

=... = 4 10 1 0 8 10 4 12 6 1 12 0 8 6 3 4 10 1 4 3 2 6 2 3 3 18 1 25 6 1 19 3 2 2 16 4 2 10 4 2 1 20 10 10 1 3 2 10 2 10 5 3 5 7 5 13 2 6 3 7 4 0 4 16 10 9 7 18 64 Ei optimaalinen, koska jotkut c ij < 0 48

=... = 14 1 10 10 2 10 0 4 12 6 1 12 8 6 3 6 0 1 4 3 2 6 2 3 3 18 1 25 6 9 9 3 2 2 16 4 2 10 4 2 1 20 20 0 11 13 8 10 2 10 5 3 5 7 5 13 2 6 13 3 4 0 4 16 10 9 7 18 64 Ei optimaalinen, koska jotkut c ij < 0 49

=... = 14 10 9 10 10 2 10 6 4 12 1 12 8 6 3 3 9 1 4 3 2 6 2 3 3 18 1 25 6 18 3 2 2 10 4 6 2 10 4 2 1 20 11 9 2 4 1 10 2 4 5 9 5 7 5 13 2 6 4 6 4 0 4 16 10 9 7 18 64 Ei optimaalinen, koska jotkut c ij < 0 50

=... = 14 10 0 10 10 2 10 6 4 12 1 12 8 6 3 3 0 1 4 3 2 6 2 3 3 18 1 25 6 9 3 2 2 6 4 10 2 10 4 2 1 20 20 9 11 13 8 10 4 2 5 9 5 7 5 13 2 6 4 3 4 0 4 16 10 9 7 18 64 Ei optimaalinen, koska jotkut c ij < 0 51

=... = 11 10 0 10 7 1 10 6 4 12 1 12 8 6 6 3 3 1 4 3 3 2 6 2 3 18 1 25 3 9 0 1 2 3 4 10 2 10 7 2 1 20 17 9 11 10 5 10 4 2 5 9 5 7 5 13 2 3 1 0 1 0 4 16 10 9 7 18 64 Optimaalinen, koska kaikki c ij 0 52

Ratkaisu: x 12 = 6, x 21 = 4, x 22 = 3, x 26 = 18, x 32 = 3, x 33 = 10, x 35 = 7, x 42 = 4, x 44 = 9 ja muut = 0 53

Kuljetustehtävä ei tasapainossa Edellä oletettiin, että tehtävä on tasapainossa, ts. m i=1 a i = n j=1 b j Jos m i=1 a i > n j=1 b j, lisätään keinotekoinen tarvepaikka n + 1 ja asetetaan b n+1 = m i=1 a i n j=1 = Saadaan tehtävä, joka on tasapainossa b j ja c i,n+1 = 0 i = 1,..., m Jos m i=1 a i < n j=1 b j, lisätään vastaavasti keinotekoinen lähtöpaikka m + 1. 54

Kohdistustehtävä Olkoon n eri henkilöä ja n eri työtä Jokainen henkilö suorittaa yhden työn, ja jokaisen työn suorittaa yksi henkilö Kun henkilö i suorittaa työn j, siitä aiheutuu kustannus c ij Tavoite: Kohdista henkilöt töihin siten, että kokonaiskustannukset minimoituvat 55

x ij = 1, jos henkilö i suorittaa työn j 0, muuten min kun n n i=1 j=1 n j=1 n i=1 c ij x ij x ij = 1 x ij = 1 x ij = 0 tai 1 i = 1,..., n j = 1,..., n i = 1,..., n, j = 1,..., n 56

Kohdistustehtävä = Kuljetustehtävä, jossa lähtöpaikkoja on yhtä monta kuin tarvepaikkoja, ja kaikki kapasiteetit ja tarpeet ovat 1 Perusmuuttujia on 2n 1 kpl, joista n kpl on arvoltaan 1 57

Kohdistustaulukko c 11 c 12... c 1n c 21 c 22... c 2n... c n1 c n2... c nn Oletetaan, että kaikki c ij 0 58

Jos kohdistustaulukon rivin i jokaisesta luvusta vähennetään luku r i, ja sarakkeen j jokaisesta luvusta vähennetään luku s j, niin objektifunktion uusi arvo on n n i=1 j=1 (c ij r i s j )x ij = = n n i=1 j=1 n n i=1 j=1 c ij x ij c ij x ij n n r i i=1 j=1 n n r i s j i=1 j=1 x ij n n s j x ij j=1 i=1 = Objektifunktion arvo muuttuu vakion verran = Ratkaisu pysyy samana 59

Unkarilainen menetelmä 1. Etsi jokaiselta riviltä i sen pienin alkio r i ja vähennä se kaikista kyseisen rivin alkioista. 2. Etsi jokaiselta sarakkeelta j sen pienin alkio s j ja vähennä se kaikista kyseisen sarakkeen alkioista. 3. Etsi pienin mahdollinen määrä k vaaka- ja pystysuoria viivoja, jotka peittävät taulukon kaikki nollat. 4. Jos k = n, niin lopeta. Muuten valitse pienin viivoilla peittämätön alkio, vähennä sen arvo kaikista peittämättömistä alkioista, ja lisää sen arvo jokaiseen alkion, joka on peitetty kahdella viivalla. Jatka kohdasta 3. 60

Kun algoritmi on pysähtynyt, optimiratkaisu määrätään nolla-alkioiden avulla: Jokaiselta riviltä ja jokaiselta sarakkeelta valitaan täsmälleen yksi nolla-alkio Valittuja nolla-alkioita vastaavilla x ij on ratkaisussa arvo yksi ja muilla x ij arvo nolla 61

Esimerkki: 8 9 7 8 6 8 7 8 5 4 6 5 3 4 5 6 62

8 9 7 8 1 2 0 1 6 8 7 8 0 2 1 2 5 4 6 5 1 0 2 1 3 4 5 6 0 1 2 3 1 2 0 0 1 2 0 0 0 2 1 1 0 2 1 1 1 0 2 0 1 0 2 0 0 1 2 2 0 1 2 2 63

1 2 0 0 0 2 1 1 1 0 2 0 0 1 2 2 2 2 0 0 0 1 0 0 2 0 2 0 0 0 1 1 2 2 0 0 0 1 0 0 2 0 2 0 0 0 1 1 64

Ratkaisu (esimerkiksi): x 13 = x 21 = x 34 = x 42 = 1 ja muut = 0 65

Edellä olettiin, että kaikki c ij 0 Jos jokin c ij < 0, lisätään rivien ja sarakkeiden alkioihin sopivia lukuja, kunnes kaikki c ij 0 66