88
LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA Guntis Deksnis Nelineārā programmēšana un lēmumu pieņemšana 2004. gads

Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA Guntis Deksnis

Nelineārā programmēšana un lēmumu pieņemšana 2004. gads

Page 2: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

2

Page 3: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Ievads

Materiāls domāts izvēles kursam viena semestra ietvaros dažādu kursu studentiem (2 kredītpunkti). Materiāls ietver sevī nelineārās programmēšanas, dinamiskās programmēšanas, veselo skaitļu programmēšanas, kā arī lineārās programmēšanas uzdevumus. Tātad liela daļa no materiāla veltīta optimizācijas problēmai. Vēl apskatīti spēļu teorijas jēdzieni, kā arī transportuzdevumi. Paredzēti uzdevumi studentiem patstāvīgai risināšanai, lai labāk apgūtu piedāvāto kursu, izstrādājot iemaņas lēmumu pieņemšanā dažādās tehnisko problēmu jomās. Metodoloģija, darbojoties ar lielām retinātām matricām, apgūta ilgus gadus strādājot enerģētikas nozarē. Iecerēts materiālu papildināt, lai būtu iespējams lasīt izvēles kursa lekcijas vēl vienu semestri (vēl divi kredītpunkti).

Dr. hab. inž., LU docents G. Deksnis

3

Page 4: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Saturs Izmantotā literatūra 6 1. Topoloģiskās optimizācijas algoritms 7 Sarežģītu optimizācijas uzdevumu priekšnojautās 7 Gausa izslēgšanas procedūra 7 Gausa − Tinneja procedūra 8 Piemērs, kas demonstrē grafa virsotņu izslēgšanu 9 Uzdevumi par Eiropas un Latvijas topoloģiskajām shēmām 11 2. Topoloģiskās optimizācijas algoritma realizācija 15 Kā shēmā ātri sameklēt virsotnei incidentās šķautnes? 15 Kā darboties ar viendimensionāliem masīviem A, K? 16 Kā organizēt optimizācijas moduļa darbu? 17 3. Simpleksmetode nelineārajā programmēšanā 19 Optimizācijas uzdevums bez ierobežojumiem 19 Simpleksmetodes lietojums, meklējot mērķa funkcijas minimālo vērtību 20 Piemērs, kas ilustrē Neldera − Mīda metodes lietojumu 20 Kas notiek, ja NLP simpleksmetodē maina procedūras operācijas? 22 4. NLP simpleksmetodes variēšana 25 Regulāra deformējamā daudzskaldņa veidošana optimizācijas procesa sākumā 25 FLEXIPLEX (slīdošās pielaides) stratēģija uzdevumam ar ierobežojumiem 25 NLP simpleksmetodes parametru variēšana, atsacīšanās no dažām operācijām 27 Modificētā simpleksmetode nelineārajā programmēšanā 30 5. Viendimensionālā optimizācija 32 Viendimensionālās optimizācijas DSK (Deviss, Svenns, Kempi) metode 32 Daži apsvērumi par kvadrātisko interpolāciju, lai saprastu DSK metodes formulu 33 6. Rozenbroka algoritms beznosacījumu optimizācijā 35 Rozenbroka metode 35 Rozenbroka algoritma blokshēma 36 7. Lineārās programmēšanas vienkārši uzdevumi 38 LP maksimizācijas un minimizācijas uzdevumi 39 8. Potenciālu metode transportuzdevumam 41 Ziemeļrietumu stūra paņēmiens 41 Plāna labošana, veidojot ķēdi 42 Potenciālu labošana 43 Vai pārvadājumu plāns optimāls? 43 Plāna labošana, veicot otro vispārīgo soli 43 Plāna labošana, veicot trešo vispārīgo soli 43 Minimālā elementa paņēmiens 44 9. Simpleksmetode lineārajā programmēšanā 46 Dualitātes problēma lineārajā programmēšanā 46 LP simpleksmetode 47 10. Lēmumu pieņemšana spēļu teorijā 51 Stingri noteiktas spēles 51 Lēmumu pieņemšana spēļu teorijā 53 Lieko rindu vai kolonu atmešana spēles matricā 53 Jauktās stratēģijas lietošana spēlē (2 × 2) 54

4

Page 5: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Analīze par spēles (2 × 2) risinājumu 55 Risinājums matricspēlei ar simpleksmetodi 56 Matricspēles (2 × m) un (m × 2) 56 11. Maršrutizācija 59 Maršruta pārrēķins 62 Maršruti dažādu kravu pārvadāšanai 62 Dažādu transportlīdzekļu izmantošana maršrutos 65 12. Uzdevums par mugursomu 69 13. NLP uzdevuma ģeometriskā interpretācija 72 14. Lagranža reizinātāju metode 75 Klasiskais optimizācijas uzdevums 75 Uzdevuma ģeometriskā interpretācija 75 Lagranža reizinātāju metodes pielietojums 76 15. Izliektā programmēšana 77 Kūna − Takera nosacījumi 77 Kvadrātiskās programmēšanas uzdevuma ģeometriskā interpretācija 78 Kvadrātiskā programmēšana 79 Lagranža funkcijas seglu punkta noskaidrošana 80 16. Dinamiskā programmēšana 82 Uzdevums par kapitālieguldījumiem 82 Uzdevums par ražošanas iekārtas izmantošanu 83 Uzdevums par resursu sadali 85

5

Page 6: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Izmantotā literatūra 1. Nelder J. A., Mead R. A simplex method for function minimization. The

Computer Journal, v. 7, 1965, N 4, p. 441 − 461. 2. Spendley W., Hext G. R., Himsworth F. R. Sequential application of simplex designs in optimizaton and evolutionary operation. Technometrics, v. 4, 1962, N 4. 3. David M. Himmelblau. Applied nonlinear programming. − Mc Graw − Hill Book Company, 1972. (tulk.: Д. Химмельблау. Прикладное нелинейное программирование. M., “Mир”, 1975). 4. A. П. Дамбраускас. Симплексный поиск. M., “Энергия”, 1979. 5. G. Deksnis. Modificētā simpleksmetode nelineārajā programmēšanā . −

Latvian Journal of of Physics and Technical Sciencies, 2002, N 3, pp. 34 − 39. 6. T.C. Hu. Integer programming and network flows. − Addison. − Wesley

Publishing Company, 1970. (tulk.: T.Ху. Целочисленнoе програмирование и потоки в ceтях. M., “Mиp”, 1974).

7. Jurg Nievergelt, J.Craig Farrar, Edward M. Reingold. Computer approaches to mathematical problems. − Prentice. −Hall, Inc., 1974.(tulk.: Ю.Heвepгельт, Дж. Фаррар, Э. Peйнгольд. Maшинный подход k peшению mатематических задач. M., “Mир”, 1977).

8. Seymor Lipschutz. Theory and problems of finite mathematics. −Schaum’s outline series. − Mc Graw − Hill Book Company, 1966.

9. И. Л. Akулич. Maтематическое программирование в примерах и задачах. − M., “Bысшая школа”, 1986.

10. Э. A. Mухачева, Г. Ш. Pубинштейн. Maтематическое программирование. − Hoвосибирск, “Haука”, 1977.

6

Page 7: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

1. Topoloģiskās optimizācijas algoritms Labākā programma − vēl neuzrakstīta programma. Nothing in life to be feared. It is only to be understood /Marie Curie/. Optimizācija − tas ir ugunsputns, dzenoties pēc kura vērts samaksāt ar apdedzinātām rokām /Leonards Rastrigins/. Sarežģītu optimizācijas uzdevumu priekšnojautās Iesākumā pievērsīsim uzmanību kādai V. Tinneja (W.F. Tinney) idejai, ieteikumam jeb metodei, kuras lietojums var izrādīties ļoti noderīgs, risinot liela apjoma linearizētu vienādojumu sistēmas. Metode organiski papildina Gausa nezināmo jeb mainīgo izslēgšanas procedūru. Bieži reālajiem uzdevumiem, kurus operatīvi jārisina dažādām vadības struktūrām (piemēram, dispečeru centriem DC) elektroenerģētikā, cauruļvadu sistēmu pārvaldē, gaisa satiksmes dienestos, utt., programmētājiem jārada ātrdarbīgas programmas, kas īsā laikā spētu apstrādāt ļoti lielu informācijas daudzumu. Jau nosauktajās darba nozarēs un vēl daudzās citās, uzmanīgāk apskatot operatīvo informāciju, bieži var konstatēt, ka mums darīšana ar tīkliem (shēmām jeb grafiem), kas satur ļoti daudz mezglu jeb virsotņu (to skaits var sniegties vairākos tūkstošos), turpretī paši grafi ir vāji aizpildīti. Tas nozīmē, ka grafa virsotņu pakāpes nav lielas: virsotnēm neatbilst daudz incidento virsotņu un incidento šķautņu. Vāji aizpildīta jeb retināta matrica ir matrica, kurā nenulles elementi sastāda tikai apmēram 10 − 20 % no kopējā elementu skaita, tātad tie ir pārliecinoša minoritāte. Strukturāli simetriska matrica ir tāda, kur nenulles elementi izvietoti simetriski abpus galvenai diagonālei (tie var atšķirties pēc savas vērtības). Gausa − Tinneja procedūras lietojums ieteicams tieši šādos gadījumos − kad risināmai lielai vienādojumu sistēmai ir retināta simetriska vai strukturāli simetriska matrica. Nevajadzētu uzskatīt, ka šī metode der vienīgi lineāru vienādojumu risināšanai, tātad iekļaujama lineārās programmēšanas metožu arsenālā. Kā zināms, elektroenerģētikā stacionāro režīmu aprēķinos operatīvajiem mērķiem jaudu bilanču noteikšanai un arī saistībā ar režīmu optimizāciju izmanto nelineāras vienādojumu sistēmas attiecībā pret mainīgajiem − spriegumu moduļiem un leņķiem vai to reālajām un imaginārajām komponentēm. Šādā uzdevuma formulējumā parādās būtiska vienādojumu struktūras atšķirība: slodzes mezgliem, kuri sastāda lielāko energosistēmas mezglu daļu, atbilst divi vienādojumi. Katrā iteratīvā procesa solī jaudu bilances vienādojumi tiek linearizēti, un kārtējo mainīgo pieaugumu atrod no lineārās vienādojumu sistēmas risinājuma. Topoloģiskās optimizācijas aprēķins konkrētai shēmai jāveic vienu reizi − pašā jaudu bilances aprēķina sākumā. Saprotams, ka mācību materiālā nav iespējams pietiekoši detalizēti iedziļināties vienas vai otras nozares specifiskajos uzdevumos, lai arī cik saistoši un nozīmīgi tie nebūtu. Šīs nodaļas mērķis: izmantojot neliela apjoma grafus un vienādojumu sistēmas, izskaidrot Gausa − Tinneja procedūras būtību. Gausa izslēgšanas procedūra Piemērs 1-1: Ar Gausa izslēgšanas procedūru risina lineāru vienādojumu sistēmu ar trijiem vienādojumiem un trijiem nezināmajiem x1 + x2 + x3 = 6; x1 − x3 = −3; x1 + 2x3 = 7.

7

Page 8: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Tās risinājums, kā to viegli pārliecināties, ir x1 = 1; x2 = 2; x3 = 3. Šajā piemērā sistēmas matrica nav ne simetriska, ne strukturāli simetriska, bet tas nav būtiski parastajai Gausa izslēgšasnas procedūrai. Pārvēršot par nullēm elementus zem matricas galvenās diagonāles, to vispārīgā gadījumā lietderīgi veikt nevis pa kolonām, bet pa rindām: tā rīkojoties, iespējams sastādīt ātrdarbīgāku programmu, kad, tēlaini runājot, Gausa procedūra nav gausa. Elementus uz galvenās diagonāles pārvērš par vieniniekiem pēc tam, kad nenulles elementi pa kreisi no galvenās diagonāles, ja tādi ir, ar parastām (elementārām) matricas rindu saskaitīšanas operācijām pārvērsti par nullēm. Gausa nezināmo izslēgšanas procedūra ir sekojoša (šeit paplašinātajās matricās pa kreisi no vertikālas svītras izvietota lineārās vienādojumu sistēmas matrica, bet pa labi no tās − vienādojumu sistēmas brīvie locekļi, ar kuriem veic analoģiskas operācijas, kā ar sistēmas matricas rindām): 1 1 1 6 1 1 1 6 1 1 1 6 1 1 1 6 1 0 −1 −2 ⇒ 0 −1 −2 −8 ⇒ 0 1 2 8 ⇒ 0 1 2 8 ⇒ 1 0 2 7 1 0 2 7 0 −1 1 1 0 0 3 9 1 1 1 6 1 1 1 6 1 0 1 4 1 0 0 1 0 1 2 8 ⇒ 0 1 0 2 ⇒ 0 1 0 2 ⇒ 0 1 0 2 . 0 0 1 3 0 0 1 3 0 0 1 3 0 0 1 3 Gausa izslēgšanas procedūras tiešais solis noslēdzas, kad visi elementi zem galvenās diagonāles pārvērsti par nullēm, t.i., ceturtajā paplašinātās matricas pierakstā. Piektajā matricas pierakstā sākas apgrieztais solis, kurā jauni nenulles elementi vairs neparādās (mūsu piemērā virs galvenās diagonāles ir trīs nenulles elementi, t.i., maksimāls šādu elementu skaits). Jauni nenulles elementi parādās piemērā tiešā izslēgšanas soļa pirmajā un otrajā matricas pārveidojumā. Galvenais trūkums parastajai Gausa izslēgšanas procedūrai ir tas, ka, risinot liela apjoma lineāro vienādojumu sistēmu, jāveic ļoti daudz starpaprēķinu. Jauno nenulles elelmentu (koeficientu) parādīšanās ir lavīnveidīga, nekontrolējama, kas var būtiski palēnināt kopējā uzdevuma izpildi, ja tāda ar veco metodi ļoti lielu lineāru sistēmu gadījumā vispār iespējama. Tāpēc Tinnejs ieteic procedūru modernizēt. Gausa − Tinneja procedūra Piemērs 1-2: Procedūras izklāstam apskata vienkāršu grafu ar 5 virsotnēm (skat. zīm. 1-1): 1 X X X X 0 2 4 X X X 0 0 X X X 0 0 X 0 0 X X 0 0 0 X X

3 5 Zīm. 1-1. Zīm. 1-2.

8

Page 9: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Zīmējumā 1-2 parādīta struktūra grafam atbilstošajai matricai (nenulles elementiem). Šāda struktūra ir, piemēram, piecu lineāru vienādojumu sistēmai, kuras atrisinājums dots ar vektoru (1; 2; 3; −1; 0): x1 − x2 + x3 − x4 = 3; x1 + x2 + x3 = 6; x1 − 2x2 − x3 = −6; 2x1 − x4 + x5 = 3; x4 + x5 = −1 . Nav grūti pamanīt, ka jaunu nenulles elementu skaita samazināšanas ziņā Gausa izslēgšanas procedūrai labvēlīgāka sekojoša nezināmo maiņa: x1 = 2; x2 = 3; x3 = 1; x4= −1; x5 =0. Tad vienādojumu sistēma ir šāda: x1 + x2 + x3 = 6; −2x1 − x2 + x3 = −6; −x1 + x2 + x3 − x4 = 3; 2x3 − x4 + x5 = 3; x4 + x5 = −1 . Kā datoram iespējams uzdot analizēt situāciju un kā likt tam atrast optimālu nezināmo izslēgšanas kārtību? Tinnejs ieteic izmantot shēmas jeb grafa virsotņu ranga formulu ri = ki (ki − 1) /2 − li, kur ki − i − tās virsotnes incidento virsotņu (incidento šķautņu) skaits; li − trijstūru skaits i − tai virsotnei (šķautņu skaits starp virsotnei incidento šķautņu galiem). Katrā mainīgo izslēgšanas solī no shēmas izslēdz : 1)virsotni ar minimālo rangu; 2)visas tai incidentās šķautnes. Ja ir vairākas virsotnes ar minimāliem rangiem, tad no tiem izvēlas pirmo pēc kārtas. Ja starp virsotnei incidento šķautņu galiem nav šķautnes, tad šādu šķautni ieved grafā. Virsotnei ar pakāpi viens ir nulles rangs. Izslēdzot virsotni ar nulles rangu, jaunas šķautnes grafā neparādās. Katrai virsotnei i grafā izveido skaitītāju masīvā S, kurā sākotnēji ieraksta skaitļus: Si = ki + 1 (vieta atvēlēta katrai incidentajai šķautnei un vēl diagonālajam elementam Gausa izslēgšanas procedūrā). Ja, izslēdzot virsotnes, virsotnē i parādās jauna šķautne, Si vērtība tiek palielināta: Si = Si + 1. Piemērs, kas demonstrē grafa virsotņu izslēgšanu Piemērs1-3: Apskata neorientētu grafu ar 7 virsotnēm un 12 šķautnēm: 1 − 2;1 − 5; 1 − 6; 1 − 7; 2 − 5; 2 − 3; 3 − 5; 3 − 4; 4 − 5; 6 − 4; 7 − 6; 7 − 4 (skat. zīm. 1-3). Tabula 1-1. 2 i ki li ri Si 1 4 2 4 5 (+1) 3 2 3 2 1 4 5 3 3 2 1 4 (+1) 1 4 4 2 4 5 6 5 4 3 3 5 6 3 2 1 4 7 3 2 1 4 7 4 Zīm. 1-3. Sākotnējā topoloģiskā shēma.

9

Page 10: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Tabulā 1-1 norādīti virsotņu i parametri ki , li , ri , Si (sākotnējā tabula grafam). No tabulas redzams, ka pirmajā izslēgšanas solī jāatbrīvojas no virsotnes 2 un tai incidentajām šķautnēm 1 − 2; 2 − 5; 2 − 3. Pie tam parādās jauna šķautne 1 − 3. Kolonā vērtības, kas atbilst virsotnēm 1 un 3, jāpalielina par vienu. Zīmējumā 1-4 parādīta topoloģiskā shēma pēc pirmā izslēgšanas soļa, bet tai atbilstošās parametru vērtības dotas Tabulā 1-2. 3 Tabula 1-2. i ki li ri Si 1 4 2 4 6 (+1) 1 3 3 2 1 5 6 4 4 2 4 5 (+1) 5 3 2 1 5 7 4 6 3 2 1 4 Zīm. 1-4. Topoloģiskā shēma pēc pirmā 7 3 2 1 4 izslēgšanas soļa, kad izslēgta virsotne 2. Redzams, ka grafs tagad satur sešas virsotnes un 10 šķautnes. Otrajā izslēgšanas solī jāatbrīvojas no virsotnes 3, kurai mazākais rangs (tā ir pirmā pēc kārtas virsotne ar rangu 1), tāpat jāizmet šai virsotnei incidentās šķautnes. Shēmā parādās jauna šķautne 1−4, un virsotnēm1 un 4 jāpalielina vērtība pēdējā tabulas kolonā. Tabulā 1-3 parādītas jaunās parametru vērtības, atbilstošais grafs redzams zīmējumā 1-5. Tabula 1-3. 1 i ki li ri Si 5 1 4 4 2 7 4 4 4 2 6 6 5 2 1 0 5 6 3 3 0 4 7 4 7 3 3 0 4 Zīm. 1-5. Topoloģiskā shēma pēc otrā izslēgšanas soļa, kad izslēgta virsotne 3. Grafam ir piecas virsotnes un astoņas šķautnes. Izslēdzot virsotni 5, kurai nulles rangs, jaunas šķautnes grafā neparādās. Iegūts tetraedra grafs ar virsotnēm 1, 4, 6, 7. Turpmākajā virsotņu izslēgšanā jaunas grafa šķautnes neparādās (virsotnēm nulles rangi). Grafa virsotņu izslēgšanas secība: 2, 3, 5, 1, 4, 6, 7. Tai atbilstošās vērtības masīvā S: 4, 5, 5, 7, 6, 4, 4. Tātad, ja ieved viendimensiju masīvus A un K, kuros izvieto attiecīgi nenulles elementus un to kolonu numurus, var konstatēt, ka šo masīvu dimensija ir 4 + 5 + 5 + 7 + 6 + 4 + 4 = 35, t.i., A (35), K (35). Jauno shēmu ar pārnumurētām virsotnēm iegūst no vecās shēmas: 2 1 . 1 (+2) 3 (+1) ⇒ 4 (+2) 6 5 6 3 2(+1) 7 4 (+1) 7 5 (+1) Iekavās šeit norādīts, par cik vienībām palielinās virsotnes “buferis” (tam rezervētā vieta masīvos A un K). Atbilstoši jaunajai shēmai un numerācijai masīvos A(35) un K(35) jānorāda šādi skaitļi:

10

Page 11: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

A(35): a11 a12 a13 a14 a21 a22 a23 a25 0 a31 a32 a33 a34 a35 a41 a43 a44 a46 a47 0 0 a52 a53 a55 a56 a57 0 a64 a65 a66 a67 a74 a75 a76 a77 K(35): 1 2 3 4 1 2 3 5 0 1 2 3 4 5 1 3 4 6 7 0 0 2 3 5 6 7 0 4 5 6 7 4 5 6 7 Apskatītās vielas nostiprināšanai paredzēti nākošie uzdevumi. Uzdevumi par Eiropas un Latvijas topoloģiskajām shēmām Uzdevums 1-1: Topoloģiskās optimizācijas algoritms (Gausa − Tinneja procedūra), sakārtojot Eiropas valstu sarakstu procedūrai optimālā kārtībā (pārnumurējot grafa virsotnes). Grafā jeb shēmā ir 41 virsotne, kas attēlo lielāko daļu no Eiropas valstīm. Šķautne (pavisam grafā 84 šķautnes) starp divām virsotnēm liecina, ka starp attiecīgajām valstīm pastāv reāla robeža. Ja vairākām virsotnēm vienādi minimālie rangi, atļauts jebkuru no tām izslēgt no shēmas kā pirmo. Izslēgšanas soļos nepieciešams veikt korekcijas masīvā Si, kur sākotnēji virsotnei (valstij) ar numuru i rakstīts skaitlis (ki + 1): par vieninieku palielināts virsotnei incidento šķautņu skaits. Ja shēmā parādās jauna šķautne i − j, tad aprēķina: Si = Si + 1; Sj = Sj + 1. Kad visas shēmas virsotnes (un tām incidentās šķautnes) izslēgtas optimālā veidā, summēt visas Si vērtības, t.i., aprēķināt masīvu A un K izmēru! Tabulā 1-4 norādīti Eiropas valstu numuri un to apzīmējumi. Tabula 1-4. Num. p. Ap − Valsts Num. p. Ap − Valsts Num. p. Ap − Valsts kārtas zīm. kārtas zīm. kārtas zīm. 1 Al Albānija 15 I Itālija 29 R Rumānija 2 An Andora 16 Īr Īrija 30 Sr Serbija 3 A Austrija 17 K1 Krievija 31 Sk Slovākija 4 Ba Baltkr. 18 K2 Kaļiņin. apg. 32 Sn Slovēnija 5 B Beļģija 19 La Latvija 33 So Somija 6 BH Bosn.-Herc. 20 L Lielbritānija 34 Sp Spānija 7 Bu Bulgārija 21 Li Lietuva 35 Š Šveice 8 Č Čehija 22 Lih Lihtenšteina 36 T Turcija 9 D Dānija 23 Lu Luksemburg. 37 Uk Ukraina 10 F Francija 24 Ma Maķedonija 38 Un Ungārija 11 G Grieķija 25 Mo Moldova 39 V Vācija 12 H Holande 26 N Norvēģija 40 Va Vatikāns 13 Ho Horvātija 27 P Polija 41 Z Zviedrija 14 Ig Igaunija 28 Pr Portugāle Ar K2 apzīmēts Kaļiņingradas apgabals, kas nodalīts nost no Krievijas teritorijas. Saprotams, ka starp Lielbritāniju un Franciju (Īriju) ir jūras robeža, bet tiek uzskatīts, ka tās ir kaimiņvalstis (tāpat kā, piemēram, Igaunija un Somija). Tabulā 1-5 parādītas kaimiņvalstīm (kaimiņteritorijām) atbilstošās šķautnes grafā, bet pats grafs attēlots zīmējumā 1-6.

11

Page 12: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Virsotņu izslēgšana no shēmas malām parasti grūtības nesagādā − bieži te jaunas šķautnes neparādās, shēma kādu laiku nav jāpārzīmē par jaunu. 82 N 34 So 36 K1 32 33 35 37 H 30 Ig 40 44 Z 38 48 Īr 83 L 11 13 31 La 42 B 16 D 39 Ba 10 15 41 Li 43 80 14 29 K2 45 49 9 81 V 47 46 F Lu 28 P 51 Uk 8 27 76 12 Č 25 75 74 An 3 7 17 19 Sk 22 23 73 72 53 50 2 4 Pr 1 S Š 20 A 24 Un 84 5 26 54 Lih 77 18 21 Sn 71 R Mo 79 70 52 I 78 69 55 57 6 Ho Sr 65 Bu Va 63 68 67 64 59 57 Ma 60 G BH 66 62 58 T 61 Al Zīm. 1-6. Eiropas valstu grafs, kur ar šķautnēm norādītas kaimiņvalstis (teritorijas). Tabula 1-5. 1 28 − 34 Pr − Sp 23 3 − 31 A − Sk 45 4 − 27 Ba − P 67 6 − 30 BH − Sr 2 2 − 34 An − Sp 24 3 − 38 A − Un 46 21− 27 Li − P 68 6 − 13 BH − Ho 3 10 − 34 F − Sp 25 8 − 31 Č − Sk 47 18− 27 K2 − P 69 13− 30 Ho − Sr 4 10 − 5 F − I 26 3 − 32 A − Sn 48 17− 37 K1−Uk 70 13− 38 Ho −Un 5 3 − 22 A − Lih 27 8 − 39 Č − V 49 4 − 37 Ba−Uk 71 30− 38 Sr − Un 6 15 − 40 I − Va 28 27 −39 P − V 50 37−25 Uk −Mo 72 37 − 38 Uk − Un 7 10 − 35 F − Š 29 9 − 39 D − V 51 27−37 P − Uk 73 31 − 38 Sk − Un 8 10 − 39 F − V 30 9 − 26 D − N 52 25− 29 Mo −R 74 31 − 37 Sk− Uk 9 10 − 23 F − Lu 31 9− 41 D − Z 53 29− 37 R − Uk 75 27− 31 P − Sk 10 5 − 10 B − F 32 26− 41 N − Z 54 29−38 R − Un 76 8 − 27 Č − P

12

Page 13: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Tabulas 1-5 turpinājums 11 10 − 12 F − H 33 33 −41 So − Z 55 29− 30 R − Sr 77 32 −38 Sn − Un 12 2 − 10 An − F 34 33− 26 So − N 56 7 − 29 Bu −R 78 13− 32 Ho − Sn 13 5 − 12 B − H 35 14−33 Ig − So 57 7 − 36 Bu − T 79 15 − 32 I − Sn 14 5 − 23 B − Lu 36 17− 33 K1 − So 58 11− 36 G − T 80 10− 20 F − L 15 5 − 39 B − V 37 14−17 Ig − K1 59 7 − 11 Bu − G 81 23− 39 Lu − V 16 12 − 39 H − V 38 14−19 Ig − La 60 11−24 G − Ma 82 17− 26 K1 − N 17 39 − 35 V − Š 39 19− 21 La −Li 61 1 − 11 Al −G 83 16 −20 Īr − L 18 15 − 35 I − Š 40 19 −17 La− K1 62 1 − 24 Al −Ma 84 35− 22 Š − Lih 19 3 − 39 A − V 41 21−18 Li− K2 63 7 − 24 Bu −Ma 20 3 − 35 A − Š 42 4 − 19 Ba−La 64 24−30 Ma −Sr 21 3 − 15 A − I 43 4 − 21 Ba−Li 65 7 − 30 Bu −Sr 22 3 − 8 A − Č 44 4 − 17 Ba−K1 66 1 − 30 Al −Sr Uzdevums 1-2: Jāveic topoloģiskā optimizācija Latvijas rajonu grafam. Latvijas 26 rajoni attēloti zīmējumā 1-7 kā grafa virsotnes, bet šķautnes starp tām norāda uz to, ka attiecīgās virsotnes reprezentē kaimiņu rajonus. Tabulā 1-6 norādīti Latvijas rajonu numuri un to apzīmējumi, bet grafa virsotnēm atbilstošās šķautnes tabulā 1-7. Tabula 1-6. Num. p. Ap − Rajons Num. p. Ap − Rajons Num. p. Ap − Rajons kārtas zīm. kārtas zīm. kārtas zīm. 1 Aiz Aizkraukles 10 Je Jelgavas 19 Rē Rēzeknes 2 Al Alūksnes 11 Kr Krāslavas 20 Rī Rīgas 3 Bal Balvu 12 Ku Kuldīgas 21 Sa Saldus 4 Bau Bauskas 13 Liep Liepājas 22 Ta Talsu 5 Cē Cēsu 14 Lim Limbažu 23 Tu Tukuma 6 Da Daugavpils 15 Lu Ludzas 24 Valk Valkas 7 Do Dobeles 16 Ma Madonas 25 Valm Valmieras 8 Gu Gulbenes 17 Og Ogres 26 Ve Ventspils 9 Jēk Jēkabpils 18 Pr Preiļu . Tabula 1-7. 1 Ve − Ku 15 Je − Bau 29 Cē − Valk 43 Pr − Da 2 Ve − Ta 16 Je − Rī 30 Cē − Gu 44 Valk − Al 3 Ve − Liep 17 Tu − Rī 31 Cē − Ma 45 Valk − Gu 4 Liep − Ku 18 Rī − Bau 32 Ma −Gu 46 Gu − Al 5 Ku − Ta 19 Rī − Lim 33 Ma −Bal 47 Al − Bal 6 Liep − Sa 20 Rī − Cē 34 Ma − Rē 48 Gu − Bal 7 Ku − Sa 21 Rī − Og 35 Ma − Pr 49 Pr − Rē 8 Sa − Do 22 Bau − Og 36 Ma −Jēk 50 Pr − Kr 9 Sa − Tu 23 Bau − Aiz 37 Ma − Aiz 51 Da − Kr 10 Ku − Tu 24 Cē − Og 38 Og − Ma 52 Rē − Kr

13

Page 14: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Tabulas 1-7 turpinājums 11 Ta − Tu 25 Lim − Cē 39 Og − Aiz 53 Bal − Rē 12 Do − Tu 26 Lim − Valm 40 Aiz −Jēk 54 Bal − Lu 13 Do − Je 27 Valm − Cē 41 Jēk − Da 55 Lu − Rē 14 Tu − Je 28 Valm − Valk 42 Jēk − Pr 56 Lu − Kr Limb 14 Valm 25 Valk 24 Al 2 Ta 22 Rī 20 Tu 23 Gu 8 Bal 3 Ve 26 Ku 12 Je 10 Og 17 Cē 5 Ma 16 Rē 19 Lu 15 Pr 18 Liep 13 Sa 21 Do 7 Bau 4 Aiz 1 Jēk 9 Da 6 Kr 11 Zīm 1-7. Latvijas rajonu shēma. Kā redzams, Madonas rajons ir visbagātākais ar kaimiņiem. Izslēgt no shēmas tam atbilstošo virsotni izdodas tikai topoloģiskās optimizācijas procesa beigās.

14

Page 15: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

2. Topoloģiskās optimizācijas algoritma realizācija Vislabākā programma var būt vēl labāka. Vou are better off not knowing how sausages and laws are made /Unknown/. Kā shēmā ātri sameklēt virsotnei incidentās šķautnes? Piemērs 2-1: Apskata grafu 1 3 2 5 4 6 7 Redzams, ka grafā 7 virsotnes (n = 7) un 9 šķautnes (m = 9). Lai pierakstītu shēmu, jāizvēlas divi veselo skaitļu masīvi ar garumu 9, piemēram, LI(9), LJ(9). Pieņemsim, ka, pierakstot shēmu, tie aizpildīti sekojoši: i 1 2 3 4 5 6 7 8 9 LI(i) 1 3 2 1 4 7 5 3 4 LJ(i) 2 2 4 4 6 6 7 5 5 Tātad šķautnes uzrādītas šādi: 1 − 2, 3 − 2, 2 − 4, 1 − 4, 4 − 6, 7 − 6, 5 − 7, 3 − 5, 4 − 5. Ātri meklējot virsotnei incidentās šķautnes, pirmkārt, jāveido sekojoši veselo skaitļu masīvi: IC(8) = IC(n+1), JC(8). Šos masīvus aizpilda tā, lai ātri noskaidrotu, cik saišu ir dotajai virsotnei. Masīvs IC apskata masīvā LI pierakstītos šķautņu kreisos galus, bet masīvs JC apskata masīvā LJ pierakstītos šķautņu labos galus. Masīvus aizpilda sekojoši: i 1 2 3 4 5 6 7 8 IC(i) 1 3 4 6 8 9 9 10 JC(i) 1 1 3 3 5 7 9 10 . Redzams, ka skaitīšana sākas no skaitļa 1, tāpēc pirmajā šūnā abos masīvos ir šis skaitlis. Pavisam ir 9 šķautnes, tāpēc abos masīvos pēdējais skaitlis ir 10. Otrajā vietā masīvā IC atrodas skaitlis 3. Starpība starp šo skaitli un iepriekšējo ir 2, jo šķautņu sarakstā ir divas šķautnes, kuru kreisie gali ir 1. Turpretī masīvā JC starpība starp otro un pirmo skaitli ir 0, kas liecina, ka šķautņu pierakstā nav šķautnes ar skaitli 1 labajā pusē. Otrkārt, jāveido veselo skaitļu masīvi kuri norādītu, kur saite atrodas: i 1 2 3 4 5 6 7 8 9 IK(i) 1 4 3 2 8 5 9 7 6 JK(i) 1 2 3 4 8 9 5 6 7 .

15

Page 16: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Redzams, ka šo masīvu dimensija vienāda ar šķautņu skaitu grafā: IK(9) = IK(m) un JK(9) = JK(m). Noskaidrots, ka ir divas šķautnes sarakstā, kurām kreisā pusē norādīts skaitlis 1. Ņemot pirmos divus skaitļus masīvā IK, konstatē, ka šķautņu sarakstā tās atrodas pirmajā un ceturtajā vietā. Masīvā IK pirmais un otrais skaitlis attiecas uz 1, trešais skaitlis attiecas uz 2, ceturtais un piektais skaitlis − uz 3, sestais un septītais skaitlis − uz 4, astotais skaitlis − uz 5, bet pēdējais skaitlis − uz 7. Līdzīgi masīvā JK pirmie divi skaitļi attiecas uz skaitli 2, trešais un ceturtais skaitlis – uz 4, piektais un sestais skaitlis – uz 5, septītais un astotais skaitlis – uz 6, bet pēdējais skaitlis attiecas uz skaitli 7, t. i., redzams, ka septītajā vietā atrodas šķautne ar skaitli 7 labajā pusē. Uzdevums 2-1: Apskatītajā grafā un tā pierakstā palielināt masīvus LI, LJ par četrām vienībām. Norādītā šķautņu saraksta beigās pierakstīt klāt vēl šķautnes 4 − 3 (kreisajā pusē 4, labajā pusē 3), 6 − 5, 3 − 7 un 1− 6. Aizpildīt pārējos masīvus! Kā darboties ar viendimensionāliem masīviem A, K? Vēlreiz pievērsīsimies piemērā 1-3 skaidrotajam topoloģiskās optimizācijas algoritmam. Konstatēts, ka virsotnes jāizslēdz secībā: 2, 3, 5, 1, 4, 6, 7. Noskaidrots arī, ka linearizētās vienādojumu sistēmas matricai nav jāizmanto divdimensiju masīvs 7 x 7 (tātad 49 nenulles elementi), bet masīvs A ar 35 elementiem. Katrai no linearizētās vienādojumu sistēmas rindām jāuzrāda rindas sākums un beigas, piemēram, masīvā NS(7) un masīvā NB(7). Masīvā MN(7) atceras sākotnējos virsotņu numurus − datorprogrammas darbības beigu posmā informācilu par shēmas virsotnēm un šķautnēm jāizvada ar šiem “vecajiem” numuriem. Izveidojas sekojoša tabula, kurā sākotnēji uzrādītie nulles elementi paliek ārpus segmenta NS(i), NB(i): i Mezgla numurs Sākums rindai Beigas rindai MN(i) NS(i) NB(i) 1 2 1 4 2 3 5 8 3 5 10 14 4 1 15 19 5 4 22 26 6 6 28 31 7 7 32 35 Pēc mezglu pārnumurēšanas, darbojoties programmā ar jaunajiem virsotņu numuriem, shēma izskatās šādi: 1 4(+2) 2 (+1) 6 3 7 5 (+1)

16

Page 17: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Skaitļi iekavās pie virsotnēm rāda, cik papildus šūnu (vienību) masīvos A un K jārezervē, lai Gausa izslēgšanas procedūru veiksmīgi darbotos (šos skaitļus noteic topoloģiskās optimizācijas procedūra). Tabulā 2-1 attēlots linearizētās vienādojumu sistēmas AX=B nenulles elementiem aizpildītais masīvs A(35) (masīvā K(35) ierakstīti attiecīgo nenulles elementu kolonu numuri). Rindas A(35) K(35) numurs (matricas nenulles elementi) (kolonu numuri) 1 a11 a12 a13 a14 1 2 3 4 2 a21 a22 a23 a25 0 1 2 3 5 0 3 a31 a32 a33 a34 a35 1 2 3 4 5 4 a41 a43 a44 a46 a47 0 0 1 3 4 6 7 0 0 5 a52 a53 a55 a56 a57 0 2 3 5 6 7 0 6 a64 a65 a66 a67 4 5 6 7 7 a74 a75 a76 a77 4 5 6 7 Kā organizēt topoloģiskās optimizācijas moduļa darbu? Jāatzīmē, ka apskatītā ātrā virsotnēm incidento šķautņu meklēšana jāveido datorprogrammas apakšprogrammās, kuras darbina pēc topoloģiskās optimizācijas algoritma (pēc shēmas virsotņu pārnumurēšanas). Tas notiek programmas cikliskajā daļā sekojošos programmas moduļos: 1) vienādojumu sastādīšana shēmas virsotnēm; 2) nebalansu aprēķins shēmas virsotņu vienādojumiem; 3) Jakobi matricas (pirmās kārtas atvasinājumu) aprēķins masīvos A un K; 4) linearizētās vienādojumu sistēmas risināšana. Turpretī topoloģiskās optimizācijas modulim grafu ieteicams pierakstīt tā saucamās “ķēdītes” formā. Šim nolūkam izvēlas divus pietiekami garus Integer tipa masīvus: JA un JB. Virsotnes i “ķēdīte” sākas masīva JA elementā JA(i), pāreju uz nākošo elementu ķēdītē norāda elements JB(i). Piemērs 2-2: Jāuzraksta “kēdīte” grafam K2,3 (virsotņu skaits n = 5, šķautņu skaits m = 6), kas attēlots zīmējumā 2-1, un jādemonstrē totopoloģiskās optimizācijas algoritma darbība. Sākotnējā “kēdīte” attēlota Tabulā 2-1. Tabula 2-1. K2,3: 1 2 1 2 3 4 5 6 7 8 9 10 11 12 13 JA: 5 5 1 1 1 4 3 4 3 2 2 2 5 4 3 JB: 6 8 10 11 12 7 77 9 77 77 77 77 Zīm. 2-1. Redzams, ka Tabulā 2-1 pierakstīta informācija par grafu sekojošā veidā: 1 − 5, 4, 3; 2 − 5, 4, 3; 3 − 1, 2; 4 − 1, 2; 5 − 1, 2. Kā virsotnes “ķēdītes” beigu pazīme lietots skaitlis 77. Masīviem JA un JB izvēlas pietiekoši lielu dimensiju (sākotnējam grafam tā 2m): vēl nepieciešamas brīvās vietas, lai nenotiktu masīvu pārpildīšanās. Šajā piemērā pietiek ar JA(13) un JB(13). Lieto skaitītāju Kbr =13 (Kbr > n), kas norāda pirmo brīvo vietu aiz shēmas pieraksta.

17

Page 18: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Tinneja procedūrā (formulā) izmantotais skaitlis li visām virsotnēm i vienāds ar nulli, jo divdaļīgajā grafā nav ciklu ar garumu 3. Pirmais mazākais rangs r3 = 1 liecina, ka izslēdzot no grafa virsotni 3 parādās jauna šķautne: tā ir 1 −2 (skat. zīm. 2-2). Topoloģiskās optimizācijas algoritmā, darbojoties ar pieminētajiem masīviem, lieto šādu taktiku: 1) Izmetot virsotni un tai incidentās šķautnes, masīvos ieraksta nulles (skat.Tabulu 2-2); 2) Pieraksta klāt šķautni j, kas parādās no jauna. Pie tam, ja atbilstošās virsotnes “ķēdītē” pirms beigu pazīmes 77 sastop nulli, liek tās vietā jaunās virsotnes numuru. Ja pirms 77 nav nulles, tad 77 vietā liek Kbr. Raksta JA(Kbr) = j, JB(Kbr) = 77; 3) Saspiež “ķēdīti (saspiešanas rezultāts redzams Tabulā 2-3). Tabula 2-2. 1 2 1 2 3 4 5 6 7 8 9 10 11 12 13 JA: 5 5 0 1 1 4 0 4 0 0 2 2 5 4 JB: 6 8 10 11 12 7 77 9 77 77 77 77 Zīm. 2-2. Tabula 2-3. 1 2 1 2 3 4 5 6 7 8 9 10 11 12 13 JA: 5 5 0 1 1 4 2 4 1 0 2 2 5 JB: 6 8 10 11 12 7 77 9 77 13 77 77 Zīm. 2-3. Redzams, ka brīvās vietas norādītājs Kbr = 10, un tālākās “nulles” (brīvās vietas) norādītas ar pāreju JB(10)=13. Zīmējumā 2-2 parādītajam grafam ir sekojoša “ķēdīte”: 1− 5, 4, 2; 2 − 5, 4, 1; 4 − 1, 2; 5 − 1, 2. Jāizslēdz virsotne 4, kurai rangs vienāds ar r4 = 2⋅ (2−1)/2 −1 = 0. Iegūst zīmējumā 2-3 attēloto grafu, kura pierakstam 1 − 5, 2; 2 − 5, 1 ; 5 − 1, 2 kalpo Tabulā 2-4 attēlotā “ķēdīte”. Tajā skaitītājs Kbr = 7. Tabula 2-4. 1 2 3 4 5 6 7 8 9 10 11 12 13 JA: 5 5 0 0 1 2 0 1 0 0 0 2 JB: 6 8 10 11 12 77 9 77 10 11 13 77 Tālākā shēmas virsotņu izslēgšana, lietojot “ķēdīti” ir triviāla. Uzdevums 2-2: Veikt iepriekš aprakstītā topoloģiskās optimizācijas algoritma aprēķinu, lietojot “ķēdīti”, divdaļīgajam grafam K3,3! Piezīme: Nebūtu vēlams uzskatīt, ka topoloģiskās optimizācijas algoritms attiecas vienīgi uz divdaļīgajiem grafiem!

18

Page 19: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

3. Simpleksmetode nelineārajā programmēšanā No sarežģītā līdz vienkāršajam ir tikai viens solis. Un otrādi. Laughter is the sun that drives the winter from the human face /Victor Hugo/. Optimizācijas uzdevums bez ierobežojumiem Simpleksmetodi nelineārajā programmēšanā (NLP) optimizācijas uzdevumam bez ierobežojumiem sauc arī par Neldera-Mīda metodi. Metodes pirmsākumi meklējami rakstā [1]. Nevajadzētu jaukt simpleksmetodi nelineārajā programmēšanā (NLP) ar simpleksmetodi lineārajā programmēšanā (LP). Apskata optimizācijas uzdevumu bez ierobežojumiem: jāatrod optimālā vērtība nelineārajai funkcijai (optimizācijas kritērijam), bet vienādības tipa vai nevienādības tipa ierobežojumu nav. Tātad optimizācijas parametru telpā, ko sauc arī par neatkarīgo mainīgo telpu, varam pārvietoties jebkurā virzienā, meklējot optimālo vērtību. Nelineārās programmēšanas simpleksmetode pieder nulltās kārtas metodēm – tā neizmanto parciālos atvasinājumus, bet vienīgi funkcijas vērtības noteiktos n-dimensionālās telpas punktos. Vispirms simpleksmetodi ieteica izmantošanai eksperimentu plānošanā [2]. Tālāk to vispārināja un pielietoja uzdevumiem ar ierobežojumiem [3]. Grāmatas [3] krievu izdevuma 417. − 419. lappusēs uzrādīts programmēšanas valodā FORTRAN sastādīts algoritms FLEXIPLEX (deformējamā daudzskaldņa metode), kas ļauj risināt NLP uzdevumus ar ierobežojumiem. Simpleksmetodes pamatā – sākotnējā deformējamā daudzskaldņa veidošana n−dimensionālā optimizācijas parametru telpā un tā pārvietošana, cenšoties samazināt mērķa funkcijas vērtību. Risinot minimizācijas uzdevumu, vispārīgā gadījumā atrod lokālo optimumu. Turpretī ja formulēts uzdevums mērķa funkcijas maksimālās vertības atrašanai, tā risināšanai viegli pielāgot iepriekšējo algoritmu, mainot optimizācijas kritērija zīmi uz pretējo. Deformējamais daudzskaldnis (DD) – tā ir izliekta figūra jeb ķermenis (jebkurš taisnes nogrieznis, kas savieno divus patvaļīgus daudzskaldņa robežpunktus, atrodas tā iekšienē). Deformējamam daudzskaldnim (sākumā to var izvēlēties regulāru) ir (n+1) virsotne. Funkcijas optimālās vērtības meklēšanas procesā svarīgas ir tikai funkcijas vērtības šī daudzskaldņa virsotnēs. Pieņem, ka risina minimizācijas uzdevumu (ja nepieciešams meklēt optimizācijas kritērija maksimālo vērtību, tam maina zīmi uz pretējo). Visas virsotnes nedrīkst piederēt nevienai (n − 1) − dimensionālai apakštelpai. Faktiski šo figūru nosaka simpleksplāna matrica, ko veido sekojoši vektori: X1 = (x11, x12, …, x1n); X2 = (x21, x22, …, x2n); …………. Xn+1=(x(n+1)1, x(n+1)2, …, x(n+1)n) . Deformējamā daudzskaldņa centrs (smagumcentrs): n+1

X ’ = ( ∑ Xi ) / (n+1) . i=1

Ja daudzskaldnim izņem virsotni Xi , iegūst figūras skaldni, kas pretēja šai virsotnei. Optimizācijas (minimizācijas) procesā aprēķina centru skaldnei XC , kas pretēja

19

Page 20: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

“sliktākai” daudzskaldņa virsotnei XS, kurā funkcijas vērtība ir vislielākā (ja ir vairākas virsotnes ar maksimālo funkcijas vērtību, izvēlas pirmo pēc kārtas): n+1

XC =( ∑ Xi) / n . i=1,i ≠S

Simpleksmetodes lietojums, meklējot mērķa funkcijas minimālo vērtību

1. Formē sākotnējo deformējamo daudzskaldni faktortelpā izvēlētajā procesa sākumpunktā X(0).

2. Aprēķina funkcijas vērtības daudzskaldņa virsotnēs, starp tām izvēlas “labāko” XL un “ sliktāko” XS. Pārvieto (pagriež) deformējamo daudzskaldni DD mērķa funkcijas samazināšanās virzienā, atspoguļojot sliktāko virsotni: XA = XC + α(XC −Xs). Koeficientu α parasti izvēlas vienādu ar α = 1. Tā ir pamatoperācija simpleksmetodē, ko sauc par atspoguļošanu (angl.: reflection). Parasti tā sastāda 60%-70% no visām pielietotajām operācijām.

3. Deformējamā daudzskaldņa adaptācija (latīniski: adaptātio − piemērošana, pielāgošana) mērķa funkcijas hipervirsmai notiek, daudzskaldni izstiepjot, saspiežot un veicot redukciju. Kā pirmā no šīm operācijām ir DD izstiepšana (angl.: expansion): XG = XC + γ(XC − XS). Parasti γ = 2. Izstiepšanas operāciju izmēģina, ja atspoguļotajā virsotnē XA funkcijas vērtība ir labāka par funkcijas vērtību DD virsotnē XL ar minimālo funkcijas vērtību. Izstiepšanu tiek pieņemta, ja fG < fA. Pretējā gadījumā paliek pie atspoguļošanas rezultāta.

4. Ja atspoguļošana nesekmīga (funkcijas vērtība fA = f(XA) sliktāka par fS = f(XS)), mēģina veikt saspiešanu (angl.: contraction) pēc formulām: XB = XC ± β(XC− XS). Parasti β = 0,5. Ja saspiešana pēc kādas no šīm formulām veiksmīga (ja fB = f(XB) labāka par fS), XS vietā izvēlas virsotni XB.

5. Ja saspiešanu nav iespējams veikt, uz SD virsotnēm, izņemot XL, iedarbojas ar redukcijas (angl.: reduction) operāciju:

Xi = (Xi + XL)/2, kur i =1, 2, …, n + 1; i ≠ L. Redukcijas operācija parasti tiek realizēta optimālās vērtības X* meklējumu beigu posmā, kad DD virsotnes jau izvietojušās apkārt šim punktam. 6. Ja deformējamā daudzskaldņa izmērs

n+1

D = ∑ (X’− Xi)2/(n+1) i=1

kļūst mazāks par sākotnēji uzdoto precizitāti ε, optimālās vērtības meklēšanu pārtrauc, pretējā gadījumā atgriežas iterāciju procesa punktā 2. Piemērs, kas ilustrē Neldera-Mīda metodes lietojumu

Piemērs 3-1: Ar simpleksmetodi jāatrod minimālā vērtība kvadrātiskai funkcijai f(x1, x2) = 4(x1−5)2+(x2 − 6)2. Optimālais punkts ir X* = (5; 6). Vienāda līmeņa līnijas veido elipses, kas izstieptas vertikālā virzienā (ass x2 virzienā) attiecībā 2:1. Par sākotnējo DD uzdod trijstūri ar virsotņu koordinātēm X1 = (8; 9), X2 = (10; 11), X3 = (8;11). Tad fL = f1 = 45, fS = f2 = 125, f3 = 61. Optimizācijas procesa noslēguma pazīme: visas trīs virsotnes

20

Page 21: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

atrodas attālumā 1 no X*. Šis process – minimālās vērtības meklēšana – attēlots koordinātu pierakstā, bet labākas uzskatāmības dēļ pievienots zīmējums 3−1, kurā pēdējie algoritma soļi gan nav redzami.

x2 X3 = (8; 11) X2 =(10; 11) 11 3 2 10 Xc 9 2 1 X1= (8; 9) X1=(6;8) 8 2 1 11 X1= (5; 7,5) 6 3 X* = (5; 6) X2 = (5; 5,5) 4 f = 4 0 2 4 5 6 8 10 x1 Zīm. 3−1. Neldera − Mīda metodes lietojums, meklējot optimālo (minimālo) vērtību funkcijai f(x1, x2) = 4(x1−5)2 + (x2 − 6)2. Atspoguļo sliktāko DD virsotni: fA = f2 = f(6; 9) = 13. Redzams, ka šī vērtība mazāka par fL (labāko funkcijas vērtību trijstūra virsotnē), tāpēc izmēģina DD izstiepšanu: fG = f2 = f(4; 8) = 8. Tā kā fG < fA, izstiepšana tiek pieņemta. Tagad jāatspoguļo sliktāko virsotni 3: fA = f3 = f(4; 6) = 4. Būtu jāveic DD izstiepšana, Pārvietojot virsotni 3 punktā (2; 3,5) ar izstiepšanas operāciju nevar, jo šeit fG > fA. Tāpēc paliek pie iepriekšējās operācijas − atspoguļošanas. Sliktākās virsotnes XS = X1, kur f1 = f(8; 9), atspoguļošana caur DD pretējās skaldnes centru (4; 7) ir nesekmīga: punktā (0; 5) funkcijas vērtība lielāka par fS = 45. Pienākusi kārta veikt DD saspiešanu. Iegūst f1 = fB = f(6; 8) = 8. Simpleksfigūrai (trījstūrim) divas virsotnes X1 un X2 ir ar maksimālo funkcijas vērtību 8, tāpēc izvēlas pirmo pēc kārtas virsotni X1. Tā kā tās atspoguļošanu nevar veikt, trijstūri no jauna saspiež: fB = f1 = f(5; 7,5) = 2,25. Turpmākajā optimizācijas procesā dabū: fA = f2 = f(5; 5,5) = 0,25. Var uzskatīt, ka virsotnes X2 un X3 tuvojas punkta X* ε – apkārtnei. Virsotnes X1 atspoguļošanu neizdodas veikt, un jāizdara trijstūra saspiešana. Rezultātā šī virsotne nokļūst optimālā punkta tiešā tuvumā, kur optimizācijas process beidzas.

21

Page 22: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Kas notiek, ja NLP simpleksmetodē maina procedūras operācijas? Par NLP simpleksmetodes variēšanu runa būs nākošajā nodaļā. Tagad vienīgi apskata dažas idejas, ieteikumus no grāmatas [4]. Izrādās, ka beznosacījumu optimizācijā, meklējot funkcijas optimumu (minimālo vērtību) var iztikt arī vienīgi ar atspoguļošanu: meklējumu procesā lieto regulārā daudzskaldņa DD sliktākās virsotnes atspoguļošanu, saistot to ar DD izmēru maiņu. Piemērs 3-2: Meklē minimālo vērtību funkcijai f = (x1 − x1*)2 + (x2 − x2*)2, ja sākotnējais regulārais trijstūris atrodas pirmajā kvadrantā: tiešā tuvumā koordinātu sākumpunktam (0; 0) (skat. zīm. 3-2). Apskata vienu no optimizācijas paņēmieniem, kad ar atspoguļošanu iegūtā jaunā virsotne tiek saglabāta, bet ķatrā solī notiek trijstūra izmēru samazināšana.

x2 BB4 A4 B5B x2* BB2 B3B C4 C3 C2 A3 C1 A2 A1 C0 BB1 0 A0 BB0 x1* x1 Zīm. 3-2. Virzīšanās uz optimālo vērtību, saglabājot DD regularitāti un funkcijas vērtību fA atspoguļotajā virsotnē.

Saprotams, ka zīmējumā tikai aptuveni izdevies parādīt, ka deformējamā daudzskaldņa izmēru samazināšana visu laiku notiek ar vienu un to pašu koeficientu. Svarīga nozīme ir DD izmēra samazināšanas koeficientam. Ja to uzdod par lielu, tad trijstūris paliek pārāk maza izmēra vēl tad, kad tas neatrodas tiešā optimālā punkta tuvumā. No zīmējuma redzams, ka optimālā punkta apkārtnē DD pārvietošanās virziens var stipri mainīties. Tā pēdējā zīmējumā uzrādītajā trijstūrī (A4, BB5, C4) labākā virsotne gan ir C4, tomēr trijstūris tiks samazināts virsotnes B5 B virzienā (to saglabājot). Pēc tam notiks atspoguļošana caur skaldni BB5, C5, lai tuvotos optimālai vērtībai. Piemērs 3-3: Meklē minimālo vērtību tai pašai funkcijai. Apskata nākošo optimizācijas paņēmienu, kad ar atspoguļošanu iegūtā labākā virsotne XL tiek saglabāta, bet ķatrā solī notiek trijstūra izmēru samazināšana (skat. zīm. 3-3). Virzoties uz optimālo vērtību, virsotne BB2 nonāk tuvu optimālai vērtībai X*, tāpēc kādu laiku tā paliek uz vietas (B2B = BB3), un trijstūris pagriežas ap šo virsotni. Virsotnes A4, B4B , C4 izvietojušās ap optimālo vērtību X* (abas pirmās virsotnes atrodas vienādi tuvu tai, bet trešā virsotne −mazliet tālāk.

22

Page 23: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

x2 A4 x2* BB4 C4 BB2=B3 C3 C2 A3 C2 C0 C1 A2 A1 BB1 A0 BB0 x1 0 x1* Zīm. 3-3. Virzīšanās uz optimālo vērtību, saglabājot DD regularitāti un funkcijas vērtību fL labākajā virsotnē .

Piemērs 3-4: Iepriekš apskatītajam uzdevumam, saglabājot atspoguļoto virsotni, nevis samazina, bet palielina DD (trijstūra) izmēru. Tas ļauj ar vienu virsotni ātri pietuvoties optimālajam punktam vai ietvert X* trijstūrī (skat. zīm. 3-4). Tomēr algoritmam šajā gadījumā būtu jāparedz pārorientēšanās uz turpmāku DD samazināšanu.

C4 A5 x2 BB3 B2 B

C3 x2* C0 C1 A1 C2 A2 A4 A3 BB4 A0 BB0 x1 0 x1* BB1 Zīm. 3-4. Virzīšanās uz optimālo vērtību, palielinot DD izmēru un saglabājot funkcijas vērtību fA atspoguļotajā virsotnē .

23

Page 24: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Apskatītais algoritms lietderīgs, kad sākotnējais DD (trijstūris) atrodas salidzinoši tālu no optimālā punkta. Uzdevums 3-1: Noskaidrot, kā notiek virzība uz optimālo punktu, palielinot trijstūra izmērus un saglabājot labāko virsotni XL. Attēlot procesu zīmējumā uz rūtiņu papīra!

24

Page 25: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

4. NLP simpleksmetodes variēšana Kad raksts publicēts, jāsāk to papildināt, uzlabot. I’m extraordinarily patient provided I get my own way in the end/Margaret Thatcher/. Pirms noskaidrot, kas notiek ar NLP simpleksmetodi, ja variē tās parametrus vai pat procedūras operācijas, apskatīsim dažus jēdzienus no [3]. Regulāra deformējamā daudzskaldņa veidošana optimizācijas procesa sākumā Grāmatas [3] 513. lappusē valodā FORTRAN parādīta apakšprogramma: SUBROUTINE START STEP1=STEP/(VN*SQRT(2.))*(SQRT(VN+1.)+VN-1.) STEP2=STEP/(VN*SQRT(2.))*(SQRT(VN+1.)-1.) DO 1 J=1,N 1 A(1,J)=0. DO 2 I=2,K1 DO 4 J=1,N 4 A(I,J)+STEP2 L=I-1 A(I,L)=STEP1 2 CONTINUE DO 3 I=1,K1 DO 3 J=1,N 3 X1(I,J)=X(J)+A(I,J) RETURN END Šeit N – neatkarīgo mainīgo skaits n; N = VN; K1= N+1. Soli STEP (sākotnējā regulārā deformējamā daudzskaldņa DD šķautnes garumu) izvēlamies vienādu ar 1. Noskaidro, vai sākuma daudzskaldnis, kuru inicializē minētā apakšprogramma, ir regulārs. Ja n = 2, nav grūti pārliecināties, ka matricai A šādi elementi: A11 = 0; A12 = 0; A21 = (1+√3)/(2√2); A22 = (−1+√3)/(2√2); A31 = (−1+√3)/(2√2); A32 = (1+√3)/(2√2). Redzams, ka DD šķautne, kuras galus uzrāda matricas pirmā un otrā rinda, ir ar garumu 1: ((1 + √3)/(2√2) − 0)**2+(−1 + √3)/(2√2) − 0)**2 = (3 + 1 + 3 + 1)/8 = 1. Līdzīgi šķautnei, kuru uzrāda matricas pirmā un trešā rinda, ir garums 1. Atliek pārbaudīt šķautni, ko veido matricas otrā un trešā rinda: 2⋅ ((−1 + √3)/(2√2) − (1 + √3)/(2√2))**2 = (2 ⋅ (−2)**2)/8 = 1. Ja n = 3, sākuma DD arī regulārs, jo matrica A šajā gadījumā: A11 = 0; A12 = 0; A13 = 0; A21 = A32 = A43 = 4/(3√2); A22 = A23 = A31 = A33 = A41 = A42 = 1/(3√2). FLEXIPLEX (slīdošās pielaides) stratēģija uzdevumam ar ierobežojumiem Grāmatas [3] 389. lappusē apskatīts šāds optimizācijas uzdevums: min f(X) = x1

2 + x22 pie nosacījuma

h1(X) = x12 + x2

2 − 9x2 + 4,25 = 0. Izmantojot šo uzdevumu, mēģina noskaidrot slīdošās pielaides stratēģijas algoritma darbību.

25

Page 26: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Optimālais punkts (atrisinājums) šim uzdevumam: X* = (0; 0,5); f(X*) = 0,25 ( skat. zīm. 4-1). Vienādības tipa ierobežojums ir riņķa līnija ar centru (0; 4,25) un radiusu R ≈ 3,72. x2 5 X3

(0)

X1

(0) X2(0)

4 X3

(0)

3 X1

(1)

2 X2(1)

1 0 5 x1 Zīm. 4-1. Optimālā punkta meklēšana (tās sākums, izdarot dažus soļus). NLP uzdevumam ir viens vienādības tipa ierobežojums (m = 1). Saprotams, ka gadījumā, kad NLP uzdevums ir formulēts vispārīgā veidā, optimizācijas kritērijs, ko izmanto uzdevumam bez ierobežojumiem, neder – tas jāpapildina. Risina sekojošu optimizācijas uzdevumu: min f(X) = x1

2 + x22, Φ(k) – T(X) ≥ 0, kur

T(X) = abs(x12 + x2

2 − 9x2 + 4,25) = ((h1(X))2 )0,5. Lielumu T(X) sauc par nesaiti, jo tas rāda, par cik pārkāpts vienādības tipa ierobežojums. Lielums Φ(k) ir slīdošās pielaides kritērijs etapā k (k = 0, 1, 2, …). Apskata optimizācijas uzdevuma nullto etapu (k = 0). Tam slīdošās pielaides kritēriju Φ(0) aprēķina pēc formulas: Φ(0) = 2(m + 1)t, kur t – sākotnējā deformējamā daudzskaldņa DD šķautnes izmērs; m – ierobežojumu (vienādību) skaits. Izvēlas Φ(0) = 4 (tātad t = 1). Deformējamam daudzskaldnim vajag vismaz trīs virsotnes, kaut gan brīvības pakāpe r = n − m = 2 −1 = 1, un, meklējot optimālo vērtību, varētu izmantot r + 1 = 2 virsotnes. (Piemēram, ja būtu 10 mainīgie un 5 ierobežojumi, tad izmantotu tikai 10 − 5 = 5 virsotnes). Definīcijas: Ja nesaite T(X) = 0, punktu X uzskata par pieļaujamu (apskatītajā piemērā tas atrodas tieši uz vienādības tipa ierobežojuma līknes). Ja T(X) ≤ Φ(X), punkts X ir gandrīz pieļaujams (tas atrodas tuvu ierobežojuma līknei). Ja T(X) > Φ(X), punkts ir nepieļaujams (to nedrīkst izvēlēties).

26

Page 27: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Apskata sākumu procedūrā, lai saprastu FLEXIPLEX stratēģiju. Sākotnējā DD koordinātes: X1

(0) = (3,59; 4,09); X2(0) = (4,56; 4,35); X3

(0) = (3,85; 5,06). Redzams, ka regulārajam trijstūrim, kura šķautnes garums ir 1, smagumcentrs atrodas punktā X(0) = (4; 4,5). Funkcijas f(X) vērtības DD virsotnēs: f1

(0) = 29,62; f2(0) = 39,72; f3

(0) = 40,43. Par sliktāko virsotni izvēlas trešo virsotni XS = X3

(0). Labākajā virsotnē XL: T(x1(0)) = 2,65,

tātad šī virsotne gandrīz pieļaujama. Nav nepieciešams pārbaudīt citu DD virsotņu pieļaujamību, jo tās optimizācijas procesā tiks pārvietotas. Centrs skaldnei, kas pretēja sliktākajai virsotnei: XC

(0) = (4,07; 4,22). Atspoguļotajai virsotnei XA = (4,28; 3,37) funkcijas f vērtība ir fA = f(XA). Redzams, ka fA < fL, tomēr izstiepšana nesekmīga, jo punkts XG = (4,49; 2,52) nepieļaujams: tam T(XG) = 8. Konstatē, ka trešās virsotnes koordinātes jāizvēlas vienādas ar X3 = (4,28; 3,37). Tagad pārvieto virsotni X2

(0), kas ir sliktākā. Pēc atspoguļošanas un izstiepšanas dabū koordinātes: X2 = (3,32; 2,40), kur T(X2 ) = 0,59. Tātad šis punkts gandrīz pieļaujams – tāpat, kā pārējās DD virsotnes. Labākā no virsotnēm ir X2 , kurā funkcijas vērtība ir 16,8. Tāpēc šo punktu identificē ar punktu X(1). Funkcijas f vērtība šajā virsotnē vienāda ar 16,78. Nulltais optimizācijas etaps noslēdzies. Pārejot uz jaunu etapu (uz etapu k), slīdošās pielaides kritēriju pārrēķina pēc formulas r+1

Φ (k) = min {Φ (k-1); (m +1)/(r +1) ∑ | Xi(k+1) − XSC|}, (1)

i kur otrais skaitlis figūriekavās raksturo DD izmēru, jo XSC ir DD centrs (smagumcentrs) jeb viduspunkts. Summēti tiek attālumi no DD virsotnēm līdz šim punktam. Lielums (m +1)/(r +1) vienāds ar 1. Virzoties tuvāk meklētajam optimālajam punktam, slīdošās pielaides kritērija lielums monotoni samazinās, kas nodrošina optimizācijas procesa dotās precizitātes ievērošanu. Pārejot uz nākošo etapu, deformējamam daudzskaldnim nomaina tikai vienu DD virsotni (virsotni X(1), kuras koordinātes tika noskaidrotas). Pārējās virsotnes saglabā: X1

(0) = (3,59; 4,09); X2

(0) = (4,56; 4,35) (šo virsotni atspoguļoja, pārvietoja, līdz ieguva X(1), bet tik un tā virsotne paliek DD sastāvā); X3

(0) = X(1) = (3,32; 2,40). Slīdošās pielaides kritērijs pirmajam etapam pēc formulas (1) vienāds ar Φ (1) = 0,75. Punkts X(1) ir pieļaujams: tam izpildās noteikums T(X) ≤ Φ(X), jo T(X (1)) = 0,59. Atspoguļojot sliktāko virsotni X2

(0) caur punktu XC = (3,46; 3,25), nonāk pie nepieļaujama punkta X2

(1) = (2,34; 2,23), kuram T(X2(1)) = 5,50. Izmantojot grāmatā [3] aprakstīto

FLEXIPLEX algoritmu, notiek T(X) minimizācija, un iegūst punktu X2(1) = (3,1; 2,1).

(skat. zīm. 4-1). Redzams, ka NLP simpleksmetode nodrošina virzību uz optimālo punktu (0; 0,5) uzdevumā, kas satur vienādības tipa ierobežojumu. NLP simpleksmetodes parametru variēšana, atsacīšanās no dažām operācijām Kas notiek ar simpleksmetodi, ja atmet vai izmaina kādu tās operāciju, piemēram, risinot optimizācijas uzdevumu bez ierobežojumiem? Zinātkāre mūs moka tāpat kā bērnu, kurš, noraujot rotaļlācītim ķepu, grib pārliecināties, vai tas tomēr vēl spēs skriet… Jāatzīmē, ka simpleksmetode ir stabila, noturīga optimālā punkta meklējumos, tā pieļauj samērā daudzveidīgus modernizējumus.

27

Page 28: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

A. Pielieto vienīgi atspoguļošanu (bez izstiepšanas un saspiešanas) Piemērs 4-1: Meklē minimālo vērtību uzdevumā min f(X) = x1

2 + x22

(tā vienāda ar X* = (0; 0); f(X*)= 0). Sākotnējais DD (trijstūris) izvēlēts neregulārs, ar koordinātēm: 1 − (5; 7), 2 − (4; 7), 3 − (4; 6). Pat nerēķinot funkcijas vērtības, no zīm. 4-2 redzams, ka sliktākā virsotne XS = X1, bet labākā XL = X3. Optimizācijas procesa virzība: 1 − (3; 6); 2 − (3; 5); 3 − (2; 5); 1 − (2; 4); 2 − (1; 4); 3 − (1; 3); 1 − (0; 3); 2 − (0; 2); 3 − (−1; 2). Līdz šim virzība uz optimālās vērtības pusi lineāra. Procesa trūkums – tas, ka pārvietošanās trajektorija iet garām optimālajam punktam. Tomēr turpmāk kustības virziens izmainās, lai būtu iespējams pietuvoties optimālai vērtībai: 1 – (–1; 1); 3 – (0; 1); 2 – (–1; 0); 1 – (0; 0). x2 x2 7 2 1 7 2 1 1 3 3 5 2 6 1 3 2 1 1 3 1 5 3 3 2 2 1 3 5 4 1 2 0 x1 2 (1; 3,25) Zīm. 4-2. Beznosacījumu optimizācija,. izmantojot 3 (−1; 2,75) vienīgi atspoguļošanu. −1 0 1 2 3 4 5 x1 Zīm. 4-3. Sākums beznosacījumu optimizācijai ar parasto metodi.

B. “Tradicionālā” optimizācija Tā aprakstīta iepriekšējā nodaļā, kur lietots izstiepšanas koeficients γ = 2. Optimizācijas procesa virzību no iepriekš apskatītās sākotnējās simpleksfigūras rāda zīmējums 4-3. Virsotņu koordinātes ir sekojošas: 1A – (3; 6); 1G – (2; 5,5); 2A – (2; 4,5); 2G – (1; 3,25); 3A – (–1; 2,75). Virsotnei 3 izmēģina izstiepšanas operāciju, tomēr funkcijas vērtība virsotnē 3G lielāka par vērtību fA, tāpēc paliek pie iepriekšējā rezultāta. Turpmākais optimizācijas process attēlots zīmējumā 4-4. Atspoguļojot virsotni 1, iegūst virsotni 1A (−2; 0,5) (izstiepšana nav pamatota). Situācijā, kāda tā attēlota zīmejumā, redzams, ka attiecībā pret virsotnēm 1, 2, 3 procesa noslēgumā var pielietot vienīgi atspoguļošanu (izstiepšana nav rezultatīva). Kad virsotnes novietojas ap optimālo punktu, sāks darboties saspiešanas un redukcijas operācijas.

Secinājums: Pārvietošanās optimālās vērtības virzienā notiek “interesantāk” kā iepriekšējā gadījumā. Tomēr lineārās virzības veids un kustības pārorientēšanās noris apmēram līdzīgi.

28

Page 29: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

2 (1; 3,25) x2 A 3(−1; 2,75) 3 2 2(−0,25; 2,44) 2 XB = (−1,5; 1,625) B 2 1 1 1 3 (-2;0,5) 3 -2 -1 0 1 2 x1 2 1 Zīm. 4-4. Beznosacījuma optimizācija ar parastām deformējamā daudzskaldņa pārveidošanas un pārvietošanas operācijām.

C. Ieved izstiepšanas koeficientu γ=3 Uzdevums 4-1: Veikt desmit soļus beznosacījumu optimizācijā min f(X) = x1

2 + x22,

pielietojot atspoguļošanas, izstiepšanas (γ = 3) un saspiešanas operācijas! Par sākotnējo simpleksfigūru izmanto iepriekš lietoto trijstūri. Veidot atbilstošo zīmējumu! Vai kustība uz optimālo vērtību notiek straujāk kā iepriekšējā piemērā? Vai pārorientēšanās spējāka, ar zināmu atpakaļvirzīšanos, lai tad jaunajā kustības virzienā atkal strauji pārvietotos? D. Metode ar svariem Par atspoguļošanas centru sliktākās DD virsotnes pretējai skaldnei ņem centru ar svaru

n+1 n+1 XC’= ( ∑ ci Xi )/( ∑ ci ), i=1,i≠S i=1,i≠S

kur ci –svara koeficients, kas ievēro funkcijas vērtību fi. Šis koeficients atrodas robežās no 0 līdz 1 un tiek rēķināts pēc formulas: ci = (fS – fi) / (fS – fL), kur i = 1, …, n + 1, i ≠ s. Var uzskatīt, ka robežgadījumā DD sliktākai virsotnei cS = 0, bet labākai virsotnei cL = 1. Ja pieņem, ka ci = 1 (kad i = 1,…, n + 1, i ≠ s), tad atspoguļošanas centrs sakrīt ar pretējās skaldnes ģeometrisko centru, kurš lietots agrāk.

29

Page 30: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Uzdevums 4-2: Iepriekš minētajam piemēram veikt septiņus soļus, izmantojot metodi ar svariem. Veidot atbilstošo zīmējumu, novērtēt iegūtos rezultātus! Modificētā simpleksmetode nelineārajā programmēšanā Šajā NLP simpleksmetodes modifikācijā [5] secīgi pielieto: a) atspoguļošanu; b) centrēšanu; c) maksimina operāciju. Izstiepšanu, saspiešanu, redukciju izmanto kā parasti. Veicot DD centrēšanu, deformējamā daudzskaldņa virsotnes atspoguļo pret labāko virsotni. Šajā gadījumā visām DD virsotnēm, izņemot labāko, pārrēķina koordinātes pēc formulas: Xi = XL + XL – Xi = 2XL – Xi. Jaunās kordinātes aizvieto esošās, ja tajās funkcijas vērtība labāka. Pretējā gadījumā šai DD virsotnei saglabā iepriekšējo vērtību un koordinātes. Ja kādai no virsotnēm centrēšana ļoti labvēlīga, mēģina veikt izstiepšanu. Ja kādai virsotnei nav iespējams veikt minēto operāciju, un arī maksimina operācija nesekmīga, darbojas saspiešana vai redukcija. Veicot maksimina operāciju, atspoguļo sliktāko virsotni attiecībā pret labāko: Xm = XL + XL – XS = 2XL – XS. Jaunās koordinātes aizvieto esošās, ja tām funkcijas vērtība mazāka. Kad iegūst ļoti labvēlīgu rezultātu (funkcijas vērtība labāka par funkcijas vērtību citās virsotnēs), mēģina veikt izstiepšanu. Nelabvēlīgā gadījumā iespējama saspiešana. Piemērs 4-1: Meklē minimālo vērtību uzdevumā min f(X) = x1

2 + 22.Sākotnējais DD

(trijstūris) izvēlēts neregulārs, ar koordinātēm: 1 − (5; 7), 2 − (4; 7), 3 − (4; 6). Lieto modificēto simpleksmetodi, neizmantojot izstiepšanu un saspiešanu. Optimizācijas procesa virzība (skat. zīm. 4-5) ir sekojoša: 1A − (3; 6); centrēšana: 2C – (2; 5); 3C – (2; 6); maksimina operācija: 1M – ( 1; 4); 3A – (1; 3); centrēšana: 1C – (1; 2); 2C – ( 0; 1 ); maksimina operācija: 3M – (–1; –1). x2 x2 7 2 1 7 2 3C 1 1 3 5 2C 6 1A 3 1M 3 5 1G 3 2 1C 3C 2C 2 5 4 0 x1 3M −1 2C 3 Zīm. 4-5. Beznosacījumu −2 − 1 0 1 2 3 4 x1 optimizācija, izmantojot Zīm. 4-6. Sākums beznosacījumu optimizācijai vienīgi atspoguļošanu. ar NLP modificēto metodi. Zīmējumā 4-6 parādīts sākums beznosacījumu optimizācijai ar NLP modificēto metodi iepriekšminētajam piemēram, kad izmanto izstiepšanu (γ=3), saspiešanu un redukciju. Sākotnējam deformējamam daudzskaldņim DD, kurš funkcijas y = x1

2 + x22

gadījumā ir trijstūris, koordinātes virsotnēm ir: 1 − (5; 7), 2 − (4; 7), 3 − (4; 6). Sliktākā

30

Page 31: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

virsotne (ar vislielāko funkcijas vērtību) ir virsotne 1. Veicot tās atspoguļošanu, konstatē, ka pieļaujama izstiepšana. Iegūst punktu 1G – (1; 5). Tālākā virzībā, veicot centrēšanu (izstiepšana pēc tās nav iespējama ne vienai ne otrai virsotnei), dabū sekojošas virsotņu koordinātes: 2 – (–2; 3), 3 – (–2; 4). Sliktākai virsotnei 1 maksimina operācija nav iespējama, tāpēc veic saspiešanu, kas attēlota zīmējumā 4-7: 1 – (0,5; 4,25). x2 A 5 1 (1; 5)

1 3(–2; 4) 1 (–0,5; 4,25) 4 2(-2; 3) 2 3 2 3 (1; 2,5) a) sekmīga izstiepšana 2 c) saspiešana pēc 1S e) saspiešana nesekmīgas maksimina operācijas 3A d) saspiešana pēc 1 nesekmīgas atsoguļošanas f) atspoguļošana 1 (2,5; 0,7) b) centrēšana -2 -1 0 1 2 x1 Zīm. 4-7. Modificētās simpleksmetodes piemērs. Sliktākai virsotnei 3 atspoguļošana un izstiepšana dod rezultātu: 3 – (1; 2,48). Caur šo virsotni, kas tagad ir labākā, mēģinot veikt centrēšanu, dabū koordinātes 1 – (2,5; 0.6), bet virsotnes 2 centrēšana nesekmīga, tāpat kā maksimina operācija. Ar saspiešanu iegūst 2 – (–0,5; 2,5), bet ar saspiešanu pēc neveiksmīgas atspoguļošanas: 2 – (0,63; 2,1). Tālāk nonāk pie virsotnēm 1S un 3A. Sasniegta optimālā punkta tuva apkārtne. Kad DD virsotnes izvietojas ap optimālo pumktu, saspiešanas un redukcijas operācijas, ļaus samazināt DD izmērus līdz uzdotai precizitātei (uzdotam DD lielumam) un noteikt X*. Secinājums par modificēto simpleksmetodi: Šī metode nodrošina mērķtiecīgu un ekonomisku virzību, meklējot optimālo vērtību. Meklējumu trajektorija ātri pārorientējas optimālā punkta virzienā. Pārvietošanās optimālās vērtības virzienā notiek strauji, neveicot daudz funkcijas vērtību aprēķinu. Kā pozitīvu īpašību, kas saskatāma piemērā, pirmkārt, var minēt nelielos trijstūra izmērus optimālās vērtības apkārtnē (visas virsotnes tuvu X*). Otrkārt, optimizācijas procesā nav notikusi tāla maldīšanās prom no optimālās vērtības, kas saistīta ar ilgu atgriešanos uz pareizā ceļa.

31

Page 32: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

5. Viendimensionālā optimizācija Kad esi pārāk nopietns, jāmēģina pasmaidīt. Know the true value of time, snatch, seize and enjoy every moment of it /Lord Chesterfield/. Meklē vienargumenta funkcijas minimālo vērtību. Bieži vien uzdevumam min f(x) zināms sākotnējais nenoteiktības intervāls Δ(0), kas satur optimālo vērtību x*. Pie tam funkcija šajā intervālā uzdota unimodāla (ar vienu minimālo vērtību). Meklējot x*, var izmantot intervāla dalīšanu uz pusēm vai zelta griezumu (kad intervāla garums attiecas pret lielāko nogriezni tāpat kā šis nogrieznis pret mazāko garumu). Daudzdimensionālās NLP optimizācijā (piemēram, ar gradientmetodēm) nevar iztikt bez daudz reižu veiktas viendimensionālās optimizācijas. Tāpēc priekšroka dodama efektīgām metodēm, starp kurām redzamu vietu ieņem DSK metode. Viendimensionālās optimizācijas DSK (Deviss, Svenns, Kempi) metode Veicot testus Fletčera-Pauela funkcijai f(X) = ( x1 + 10x2)2 + 5(x3 – x4)2 – (x2 – 2x3)4 + 10(x1 – x4)4

un Rozenbroka funkcijai f(X)= 100(x2 – x1

2 )2 + (1 − x1)2, kur viendimensionālā optimizācija lietota, piemēram, gradientu metodē, konstatēts, ka risināšanas laiks (izmantoto procedūru skaits), salīdzinot ar zelta griezumu, DSK metodei ir labāks. Tas var būt nozīmīgi, ja jāizdara ļoti daudz aprēķinu optimizācijas programmas ietvaros. Par procesa beigu kritēriju viendimensionālā optimizācijā var izmantot: abs{(f(x(k+1) ) − f(x(k) )) / f(x(k) )}< ε, t.i., konstatēt situāciju, kad iterāciju procesa blakus punktu vērtības viena no otras atšķiras mazāk par uzdoto precizitāti, piemēram, par ε = 0,01. Atzīmēsim, ka Rozenbroka funkcijai optimālais punkts ir X* = (1; 1), kur f* = 0. Viegli pamanīt, ka šai funkcijai f = 101, kad X = (0; 1) vai X = (1; 2) vai X = (1; 2). Ja X = (−1; 0), funkcijas vērtība ir f = 104. Virzienā no kreisās uz labo pusi funkcijas vienādas vērtības līnijas veido izliektu gravu, kas lēni pazeminās optimālā punkta virzienā. Dažādu optimzācijas procedūru testēšanā tā ir parocīga funkcija, kas ļauj aprobēt algoritmu gravas situācijā: noskaidrot, kā notiek virzības maiņa, pārorientēšanās uz jaunu kustības virzienu. Viendimensionālajā optimizācijā DSK algoritms veic soļus, kuri pieaug pēc lieluma, kamēr nav paiets garām minmālai vērtībai. Pēc tam pielieto kvadrātisko interpolāciju. Izvēlas sākotnējo soļa garumu Δx. Pirmais etaps (k = 0). Aprēķina f(x) sākumpunktā x(0) . Ja f(x(0) + Δx) ≤ f(x(0)), pāriet uz otro etapu. Ja f(x(0) + ∆x) > f(x(0) ), pieņem ∆x = −∆x. Otrais etaps. Aprēķina x(k+1) = x(k) + ∆x un f(x(k+1)). Trešais etaps. Ja f(x(k+1) ) ≤ f(x(k)), divreiz palielina ∆x (pēc absolūtās vērtības) un atgriežas uz otro etapu ar k = k + 1. Ja f(x(k+1)) > f(x(k)), apzīmē x(k+1) ar x(m), x(k) ar x(m -1), utt. Samazina ∆x divreiz (pēc absolūtās vērtības) un maina tā zīmi. Iet uz otro etapu, lai to izpildītu vēlreiz (tikai vienu reizi). Ceturtais etaps. No četriem lielumiem x(m), x(m+1), x(m -1) , x(m -2), kas ir vienādā attālumā viens no otra, izslēdz to, kam funkcijas vērtība vislielākā, t.i., četru skaitļu

32

Page 33: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

virknes vienu galu. Atlikušos trīs punktus un funkcijas vērtības, skatoties no kreisās uz labo pusi, apzīmē sekojoši: (xA, fA ), (xB, fB ), (xC, fC ). Pieaugums ∆x šajā gadījumā pozitīvs, xB = xA + ∆x, xC = xA + 2∆x (skat. zīm. 5-1). Piektais etaps. Veic kvadrātisku interpolāciju, lai noteiktu x* tuvinājumu x*t: x*t = xB + 0,5∆x(f(xA) − f(xC)) / (f(xA) − 2f(xB) + f(xC)). Ar to noslēdzas DSK metodes viens posms. Ja vēlas turpināt procedūru (ja vēl nav sasniegta vajadzīgā precizitāte pēc beigu kritērija), to jāatsāk no x*t vai viena no trijiem punktiem (ar vismazāko funkcijas vērtību, kad tā mazāka par f(x*t )). Samazina ∆x, un meklējumu procesu sāk ar pirmo etapu. f(x)

f(x(4)) – lielākā vērtība

f(x(0)) f(x(1)) f(x(5)) f(x(2)) f(x(3)) x(0) x(1) x(2) = x(m-2) x(3) = x(m-1) x(5) = x(m+1) x(4) = x(m)

0 ∆x 2∆x xA 4∆x xB 4∆x xC 4∆x x Zīm. 5-1. Parādīts, kā konstatēt paiešanu garām optimālai vērtībai, un kā lietoti apzīmējumi

Daži apsvērumi par kvadrātisko interpolāciju, lai saprastu DSK metodes formulu Dots kvadrātisks polinoms y = a1x2 + a2x + a3 ar minimālo vērtību punktā x*t. Ņemot atvasinājuma izteiksmi un pielīdzinot to nullei, iegūst: x*t = − a2/(2a1). Trijiem punktiem x1, x2 un x3 (tiem ne obligāti jābūt vienādos attālumos vienam no otra) var rakstīt:

y1 = a1x12 + a2x1 + a3;

y2 = a1x22 + a2x2 + a3;

y3 = a1x32 + a2x3 + a3.

Pēc Krāmera formulām iegūst kvadrātiskā polinoma koeficientus, ja zināmas funkcijas vērtības trijos punktos, un aprēķina x*t:

x12 y1 1 y1 x1 1

x*t = − x22 y2 1 / 2 y2 x2 1 .

x32 y3 1 y3 x3 1

Gadījumā, kad ar DSK metodi meklē kvadrātiskas funkcijas minimālo vērtību, to iespējams iegūt ar vienu kvadrātisko interpolāciju. Piemērs 3-1: Atrast min f(x) = x2 − x ar DSK metodi, sākot meklējumu procesu no punkta x = 4. Sākotnējais argumenta pieaugums ∆x = 0,2.

33

Page 34: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Var konstatēt, ka f(x) = (x − 0,5)2 − 0,25, tātad x* = 0,5; f* = − 0,25. Pārliecināmies, ka DSK metode atrod optimālo vērtību vienā piegājienā (vienreiz izmantojot interpolācijas formulu):

f(x(0)) = f(4) = 42 − 4 = 12; x(1) = x(0) + ∆x = 4,2. Tā kā f(4, 2) > f(4), izvēlas ∆x = −0,2. Tad f(x(1)) = f(3,8) = 3,82 – 3,8 = 10,64; x(2) = 3,8 – 0,4 = 3,4; f(x(2)) = 8,16. Tālāk aprēķina: x(3) =3,4 − 0,8 = 2,6; f(x(3)) = 4,16; x(4) = 2,6 – 1,6 = 1; f(x(4)) = 0; x(5) = 1 – 3,2 = – 2,2; f(x(5)) = 7,04 = f(x(m)). Veic pussoli pretējā virzienā x(6) = – 2,2 + 1,6 = –0,6 un aprēķina f(x(6)) = 0,96. Kvadrātiskajai interpolācijai izmanto sekojošus lielumus: xA = 2,6; fA = 4,16; xB = 1; fB = 0; xC = –0,6; fC = 0,96. Tā kā lielumi ņemti no labās puses uz kreiso pa x asi, tad pieaugums ∆x = −1,6. Ievietojot lielumus formulā, iegūst precīzu x* vērtību: x* = 1 + ( −1,6)(4,16 −0,96)/ (2(4,16 + 0,96 – 0) = 1−0,8(3,2 / 5,12) = 0,5; f(x*) = −0,25. Uzdevums 5-1: Ar DSK metodi aprēķināt reālu sakni polinomam y = x3 – x2 –x –2 (ar uzrādīto precizitāti procesa beigu kritērijam 0,1). Meklējumu procesu sāk punktā x(0) = 15 ar soli ∆x = 0,1. Šajā uzdevumā jāievēro to, ka, krustojot x asi, funkcijai mainās zīme. Lai paliktu pie iepriekšējās aprēķina metodikas, var funkcijas vērtību rēķināt pēc absolūtās vērtības.

34

Page 35: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

6. Rozenbroka algoritms beznosacījumu optimizācijā Solis pa labi, solis pa kreisi, - skat’, atkal greizi! Beware what you set your heart upon. For it surely shall be yours /Ralph Waldo Emerson/. Rozenbroka metode Šī metode aplūkota uzdevumam bez ierobežojumiem. Tā neizmanto optimizācijas kritērija funkcijas atvasinājumus. Metodes būtību noskaidro ar konkrētu piemēru. Piemērs 6-1: Jāatrod minimālā vērtība funkcijai min f(X) = 4(x1 – 5)2 + (x2 – 6)2. Zināms, ka X* = (5; 6), f(X*) = 0. Izvēlas sākotnējo punktu X(0) = (8; 9), kur f(X(0)) = 45. Lai metodi labāk izprastu, tai dota arī blokshēma. Algoritma pirmajā etapā (e = 1) katrai optimizācijas telpas koordinātei izvēlas parametrus: λ1 = λ2 = 0,1 (tos parasti ņem ne pārāk lielus, bet arī ne pārāk mazus). Pirmajā etapā parametri atbilst optimizācijas parametru x1, x2 pieaugumiem Δx1, Δx2 . Rozenbroka algoritms balstās uz ortonormēto vektoru izmantošanu katrā optimizācijas etapā, un sākotnēji tie ir E1 = (1; 0), E2 = (0; 1). Pirmajā iterācijā (k = 1) mainīgo pieaugumi ir Δx1 = 0,1 un Δx2 = 0,1. Tiem atbilst divu funkcijas vērtību aprēķini. Aprēķinot funkcijas vērtību punktā (8,1; 9), konstatē, ka aprēķins nesekmīgs (N), jo f = 47,44 > 45. Rēķinot funkcijas vērtību punktā (8; 9,1), secina, ka arī otrais aprēķins neveiksmīgs: f = 45,6. Pēc algoritma blokshēmas redzams, ka, atkārtojoties šādai situācijai (kad visi meklējumu virzieni izrādās nesekmīgi) otrreiz, jāpāriet uz nākošo etapu, jānosaka jauni ortonormētie vektori. Algoritms paredz neveiksmes gadījumā nākošajā iterācijā uzdot iepriekšējo (sekmīgi izvēlēto) xi vērtību un pieaugumu Δxi vērtību nomainīt ar (−0,5Δxi ). Otrajā iterācijā (k = 2) aprēķina f(7,95; 9) = 43,81 un f(7,95; 8,95) = 43,125. Redzams, ka abi aprēķini sekmīgi, jo 43,81< 45 un 43,125 < 43,81. Kad pārvietošanās sekmīga (S), algoritms paredz nākošajā iterācijā trīs reizes palielināt atbilstošā mainīgā pieaugumu, nomainot Δxi ar 3Δxi. Pirmā etapa aprēķinus apkopo sekojoša Tabula 6-1. Tabula 6-1. Iterācijas Mainīgā Pieaugums Koordinātes vērtība Funkcijas vērtība Sekm.? numurs k indekss i Δxi xi1 xi2 f(xi1; xi2) (S / N) 1 1 0,1 8,1 9 47,44 N 1 2 0,1 8 9,1 45,6 N 1 –

2 1 −0,05 7,95 9 43,81 S 2 2 −0,05 7,95 8,95 43,125 S 3 1 −0,15 7,8 8,95 40,06 S 3 2 −0,15 7,8 8,8 39,2 S 4 1 −0,45 7,35 8,8 29,93 S 4 2 −0,45 7,35 8,35 27,61 S 5 1 −1,35 6 8,35 9,52 S 5 2 −1,35 6 7 5 S 6 1 −4,05 1,95 7 32,21 N 6 2 −4,05 6 2,95 13,30 N 2 –

35

Page 36: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Noslēdzies pirmais etaps: labākā sasniegtā funkcijas vērtība ir f = 5 punktā (6; 7). Pārvietošanās no sākotnējā punkta (8; 9) notikusi, pateicoties vektoram (−2; −2). Šī vektora virzienā aprēķina pirmo ortonormēto vektoru otrajam etapam: E1 = (−2; −2) / SQRT(22 + 22 )) = (−1/√2; −1/√2), kur SQRT nozīmē kvadrātsaknes izvilkšanu. Nav grūti pārliecināties, ka vienības vektors, kas ortogonāls vektoram E1, ir E2 = (1/√2; −1/√2). Tiešām, abu vektoru skalārais reizinājums vienāds ar nulli: – ½ + ½ = 0. Vektors E2 aptuveni atbilst vektoram (0,706; −0,706). Vispārīgajā gadījumā, kad optimizācija notiek n−dimensionālā telpā, ortonormētos vektorus algoritma etapiem meklē ar Grama -Šmita procedūru. Atšķīrībā no pirmā Rozenbroka algoritma etapa, turpmākie meklējumi nesaistās tikai ar vienu koordināti, tāpēc aprēķini kļūst nedaudz komplicētāki. Otrā etapa pirmajā iterācijā ņem λ1 = λ2 = −4,05 ⋅ (−0,5) = 2,025, jo pirmā etapa noslēgumā abām nesekmīgi aprēķinātajām funkcijas vērtībām izmantots argumenta pieaugums (−4,05). Gadījumam, kad k =1, i = 1, funkcijas arguments ir X = (6+2,025⋅(−0,706); 7+2,025⋅(−0,706)) = (4,568; 5,568). Funkcijas vērtības aprēķins ir sekmīgs: f(X) = 0,933 < 5. Gadījumam k =1, i = 2 funkcijas aprēķins nav sekmīgs: f(4,568+2,025⋅(0,706); 5,568 + 2,025⋅(−0,706)) = f(6; 4,136) = 7,474 > 0,933. Otrā etapa aprēķinus apkopo sekojoša Tabula 6-2. Tabula 6-2. Iterācijas Mainīgā Parametrs Pieaugums Koordin.vērtība Funkc.vērtība Sekm.? numurs k indekss i λi Δxi1 Δxi2 xi1 xi2 f(xi1; xi2 ) (S / N)

1 1 2,025 −1,432 −1,432 4,568 5,568 0,933 S 1 2 2,025 1,432 −1,432 6 4,136 7,474 N 2 1 6,075 −4,296 −4,296 0,272 1,272 11,175 N

2 2 −1,013 −0,716 0,716 3,852 5,568 5,351 N 1 – 3 1 −3,038 2,148 2,148 6,716 7,716 14,722 N 3 2 0,506 0,358 –0,358 4,926 5,210 0,646 S 4 1 1,518 −1,074 –1,074 3,852 4,136 8,743 N 4 2 1,518 1,074 −1,074 6 4,136 7,473 N 2 −

Noslēdzies optimālās vērtības meklējumu otrais etaps, atrasta vērtība f(4,926; 5,21) = 0,646. Turpinot optimizāciju, būtu redzams, ka meklējumu trajektorija ievirzās elipsoīda ieplakā, optimālās vērtības virzienā, lai pēc četriem etapiem sasniegtu punkta X* tuvu apkārtni: X(4) = (5,036; 5,938).

Rozenbroka algoritma blokshēma Apskata beznosacījuma optimizāciju n − dimensionālā telpā: min f(X) = min f(x1, …, xn). A1: Noteic sākotnējos Λ(0) = (λ1

(0), λ2(0), …, λn

(0)); Δxi(0) = λi

(0). Aprēķina f(X(0)). Etapa numurs: e = 1. A2: Iterācijas numurs: k = 1. Mainīgā indekss: i = 1. A3: Aprēķina mērķa funkciju fi = f(Xi). Vai f(Xi ) vērtība uzlabojas? Jā A5. Nē A4. A4: Uzdod iepriekšējo (sekmīgo) xi vērtību. Nomaina Δxi ar (–0,5)Δxi , A6.

36

Page 37: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

A5: Nomaina Δxi ar 3Δxi , A6. A6: i = i + 1. Vai i ≤ n? Jā A7. Nē A8. A7: xi = xi + Δxi , A3. A8: i =1; k = k+1. Vai visi meklējumu virzieni izrādījušies nesekmīgi divas reizes? Jā A9. Nē A7. A9: Nosaka jaunus ortonormētos virzienus Ei, Δxi = λi Ei , i = 1, …, n. X(0) = Xlabākais, f(X(0) ) = f(Xlab). Vai izpildās beigu kritērijs ( funkcijas vērtības vai punktu koordinātes atšķiras par vērtību, kas mazāka par uzdoto precizitāti)? Jā END. Nē A10. A10:Vai etapa numurs e ≤ euzd ? Jā A11. Nē END. A11: e = e + 1; xi = xi +Δxi, A2.

Uzdevums 6-1: Ar Rozenbroka metodi veikt vienu etapu (līdz ortonormētās vektoru bāzes maiņai) uzdevumam min f(x1; x2) = x1

2 + x22 no sākotnējā punkta X(0) = (−10; 7),

ΔX(0) = (0,1; 0,1). Uzrādīt pēc pirmā etapa iegūtos ortonormētos vektorus un kustības trajektoriju (tabulu)! Piemērs 6-2: Ar Rozenbroka metodi, sākot no punkta X(0) = (−1,2; 1), jāveic optimālā punkta X* meklēšanu Rozenbroka funkcijai f(X) = 100(x2 − x1

2)2 + (1 − x1)2. Zīmējumā 6-1 parādīta optimālā punkta X* = (1; 1) meklējuma trajektorija (206 funkcijas aprēķini, punkti X(0), 40, 48, …, 206. Šajā pašā zīmējumā attēlota arī optimālā punkta meklēšanas trajektorija ar deformējamā daudzskaldņa (DD) metodi piecpadsmit soļos. x2 X(0) 1 1 f =75 15 11 40 13 206 48 2 f=50 10 180 12 0,5 f= 25 164 56 9 86 140 f=25 76 3 120 −1 −0,5 6 0 0,5 1 x1 Zīm. 6-1. Rozenbroka funkcijas minimālās vērtības meklēšana, sākot no X(0) = (−1,2; 1) ar deformējamā daudzskaldņa metodi (15 soļi veido punktus X(0), X(1), …, X(15)) un ar Rozenbroka algoritmu (206 funkcijas aprēķini).

37

Page 38: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

7. Lineārās programmēšanas vienkārši uzdevumi Vai laime mīt piecdesmit septītajā paralēlē?

Education’s purpose is to replace on empty mind with on open one/Malcolms Forbes/. Izmantosim analītisku pieeju, lai atrisinātu dažus lineārās programmēšanas (LP) uzdevumus. LP ir nelineārās programmēšanas (NLP) apakšnozare. Šeit optimizācijas kritērijs un visi ierobežojumi ir lineāras funkcijas. Piemērs 7-1: Atrast max f = 2x + y, izpildoties ierobežojumiem:

x ≥ 0; y ≥ 0; x + 5y ≤ 70; 13x + 5y ≤ 130. Viegli pārliecināties, ka minētie ierobežojumi divdimensiju telpā (plaknē) nodala pieļaujamo apgabalu, ko ierobežo četrstūris ar virsotnēm: O(0; 0), A(0; 14), B(10; 0), C(5; 13). Funkcijas vērtība šiem ekstremālajiem punktiem (ekstremālais punkts ir vismaz divu norobežojošu līniju krustpunkts) atbilstoši ir: 0; 14; 20; 23. Zīmējot funkcijas vienādas vērtības līnijas (paralēlas taisnes), var pārliecināties, ka uzdevuma atrisinājums tiešām ir X* = (5, 13), f(X*) = 23 (skat. zīm. 7-1). Y z A x+5y = 70 2 14 C(5; 13) 10 f=14 13x + 5y =130 E(0; 0; 1) C(1; 0; 1) D(0,5; 0,5; 1) pieļaujamais O 1 2 x 5 apgabals A f =10 1 B x B(1; 1; 0) O 5 10 2 y Zīm. 7-1. Zīm. 7-2. Piemērs 7-2: Jānoskaidro, kādu objektu trīsdimensiju telpā norobežo nevienādības (ja šīs nevienādības ir saderīgas): x + y + z ≤ 2; x – y ≥ 0; z ≤ 1; x ≥ 0; z ≥ 0. Nav grūti konstatēt, ka piecas nevienādības nodala trīsdimensiju telpā daudzskaldni − nošķeltu trijstūra piramīdu (skat. zīm. 7-2). Pamata skaldne (trijstūris) atrodas plaknē xOy, un ekstremālo punktu koordinātes šeit ir: O(0; 0; 0), A(2; 0; 0), B(1; 1; 0). Punkti B un O atrodas uz pirmā kvadranta bisektrises, kuru nosaka vienādojums x − y = 0. Nošķeltās piramīdas augšējam trijstūrim atbilst ekstremālie punkti C(1; 0; 1), D(0,5; 0,5; 1) un E(0; 0; 1). Trīs sānu skaldnes ir trapeces. Piecu nevienādību sistēmas risinājums ir izliekts daudzstūris: nošķelta trijstūra piramīda. Uzdevums 7-1: Apskata četras nevienādību sistēmas, kurās ieiet mainīgie x un y:

a) x + 2y ≤ 4; b) x + 2y ≤ 4; c) x + 2y ≤ 4; d) x + 2y ≥ 4; x − y ≥ 0; x − y ≤ 0; x − y ≤ 0; x − y ≤ 0; y ≥ −1; y ≥ −1; y ≤ −1; y ≤ −1.

38

Page 39: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Katrā no gadījumiem uzzīmēt diagrammā robežlīnijas. Analizēt atrisinājuma iespējamību. Konstatēt ekstremālos punktus gadījumos, kad ir atrisinājums. Vai atrisinājuma apgabals ir noslēgts? LP maksimizācijas un minimizācijas uzdevumi. Piemērs 7-3: Jūrnieks nolēmis nežēlot naudu, iegādājoties sev uzvalkus un mēteļus. Tomēr drēbniekam, pie kura viņš griežas, kokvilnas, zīda un vilnas audumu krājumi ierobežoti. Zināms, ka uzvalkam nepieciešamas 2 vienības kokvilnas auduma, 1 vienība zīda auduma un 1 vienība vilnas auduma, bet mētelim − 1 vienība kokvilnas, 2 vienības zīda un 3 vienības vilnas auduma. Pavisam drēbniekam ir 16 vienības kokvilnas, 11 − zīda un 15 − vilnas auduma. Uzvalka cena 30 eiro, bet mēteļa cena 50 eiro. Cik maksimāli naudas jūrnieks var izdot, pasūtot uzvalkus un mēteļus pie šī drēbnieka? Tā kā neesam vēl iepazinušies ar tradicionālu LP uzdevumu risināšanas metodi – LP simpleksmetodi – risināsim uzdevumu, konstruējot uzdevuma pieļaujamo apgabalu un meklējot atrisinājumu šī apgabala robežvirsotnēs. Uzdevuma nosacījumiem atbilst sekojošs LP uzdevums, kur x −uzvalku skaits, y – mēteļu skaits (x ≥ 0; y ≥ 0): max f = max (30x + 50y) pie nosacījumiem 2x + y ≤ 16; x + 2y ≤ 11; x + 3y ≤ 15. Divdimensiju telpā (plaknē) meklē atrisinājumu pirmajā kvadrantā. Koordinātu sākumpunktā (0; 0) funkcijas f vērtība vienāda ar nulli. Viegli pārliecināties, ka: 1) taisne 2x + y = 16 iet caur šī kvadranta punktiem A(8; 0), B(7; 2); 2) taisne x + 2y = 11 − caur punktiem C(3; 4), B(7; 2); 3) taisne x + 3y = 15 iet caur punktiem C(3; 4), D(0; 5). Atliek pārbaudīt, kurā no minētiem punktiem funkcija f sasniedz maksimālo vērtību - tas ir uzdevuma atrisinājums: f(A) = 240; f(B) = 310; f(C) = 290; f(D) = 250 (skat. zīm. 7-3). Tātad, jūrnieks visvairāk naudas − 310 eiro − var izdot, pasūtot drēbniekam septiņus uzvalkus un divus mēteļus. y 16 14 12 2x + y =16 10 8 x + 3y = 15 f(D) = 250 6 D(0; 5) C(3; 4); f(C) = 290 4 B(7; 2); f(B) = 310 2 A(8; 0); f(A) = 240 pieļaujamais apgabals x + 2y = 11 x O 2 4 6 8 10 12 14 Zīm. 7-3. LP uzdevuma atrisinājuma meklēšana.

39

Page 40: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Uzdevums 7-2: (LP minimizācijas uzdevums). Personai savā dārziņā pēc agroķīmijas noteikumiem jāizlieto 10 vienības ķīmiskas vielas A, 12 vienības vielas B un 12 vienības vielas C. Veikalā var nopirkt produktu škidrā veidā, kas vienā traukā satur attiecīgi 5, 2 un 1 vienību no katras šīs vielas. Tāpat šeit var iegādāties cieta veida produktu, kas pakā satur attiecīgi 1, 2 un 4 vienības šo vielu. Trauka cena 3 eiro, bet paka maksā 2 eiro. Cik trauku un paku (x – trauku skaits, y – paku skaits) dārziņa īpašniekam jānopērk, lai maksimāli ietaupītu naudu un lai dārziņš saņemtu visu nepieciešamo?

40

Page 41: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

8. Potenciālu metode transportuzdevumam Trāpīt mērķī ir vienkārši, bet vēl vienkāršāk – aizšaut garām. The older a man gets, the farther he had to walk to school as a boy/Commercial Appeal/. Vispirms apskata raksturīgu lineārās programmēšanas uzdevumu, kura risināšanai izstrādāta potenciālu metode. Pēc tam risina maksimizācijas un minimizācijas uzdevumus lineārajā programmēšanā (LP). LP ir NLP apakšnozare, tāpēc likumsakarīgi, ka tiek aplūkotas dažas vispārīgas tās problēmas. Ziemeļrietumu stūra paņēmiens Risina LP transportuzdevumu, izmantojot ziemeļrietumu stūra paņēmienu. Ar šo paņēmienu veido sākotnējo pārvadājumu plānu. Uzskata, ka dotas m noliktavas jeb bāzes, kur uzglabā noteiktus daudzumus A1, A2,…, Am viendabīga produkta. To visu jāizvadā pa n objektiem (veikaliem) BB1, B2B , …, BBn. Dota matrica C ar izmēru (m × n), kas ietver sevī ceļa izdevumus pārvadājumiem no konkrētām bāzēm uz objektiem. Skaitlis cij matricā rāda, cik maksā vienas svara vienības produkta transports no bāzes i uz objektu j. Parasti uzdevumā lieto veselos skaitļus − tas ir veselo skaitļu programmēšanas uzdevums. Izskaidro metodi, apskatot konkrētu piemēru. Piemērs 8-1: Dots, ka trīs noliktavās uzglabā sekojošus daudzumus produkta: A1 = 100; A2 = 130; A3 = 170 (kopumā 400 vienības produkta). Pieprasījums četros veikalos pēc šī produkta: BB1 = 150; B2 B = 120; BB3 = 80; B4B = 50. Matrica C (ceļa izdevumu matrica) sastāv no trīs rindām un četrām kolonām: c11 = 3; c12 = 5; c13 = 7; c14 = 3; c21 = 1; c22 = 4; c23 = 6; c24 = 3; c31 = 5; c32 = 8; c33 = 12; c34 = 7 (skat. zīm. 8-1). vj ui 3 6 10 5 0 100 100 3 5 7 11 2 50 80 130 C = 1 4 6 3 −2 40 80 50 170

5 8 12 7 150 120 80 50 BBj Ai Zīm. 8-1. Ceļa izdevumu matrica. Zīm. 8-2. Sākotnējais pārvadājumu plāns. Šajā matricā ziemeļrietumu (kreisais augšējais) stūris satur elementu c11. Atbilstoši tam pārvadājumu plāna matricā (3 × 4) izvēlas elementu P11 = min{100; 150} = 100. Pirmās bāzes kapacitāte izsmelta, bet saskaņā ar ziemeļrietumu stūra paņēmienu nākošajam kreisajam augšējam elementam P21 var uzrādīt piegādi: P21 = min {50; 130} = 50. Līdz ar to pirmā veikala pieprasījums apmierināts, bet otrajam veikalam no otrās bāzes vēl iespējama piegāde: P22 = min {120; 80} = 80. No palikušās trešās bāzes otrajam veikalam var piegādāt P32 = min {40; 170} = 40, bet trešajam un ceturtajam veikalam, atbilstoši: P33 = 80; P34 = 50 (skat. zīm. 8-2). Līdz ar to sastādīts sākotnējais pārvadājumu plāns X, aizņem sešas rūtiņas (ja plānā mazāk par m + n −1 = 3 + 4 − 1 = 6 aizpildītajām rūtiņām, tad plānā var iekļaut jebkuru tukšo rūrtiņu, norādot tajā piegādi 0).

41

Page 42: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Pēc sākotnējā plāna sastādīšanas aprēķina potenciālus: ui − katrai matricas rindai i un vj − katrai matricas kolonai j. Aprēķinā izmanto sešu aizpildīto rūtiņu lielumus cij, tāpēc vienu no potenciāliem var uzdot patvaļīgi: u1 = 0. Pārējos potenciālus (tie norādīti arī zīmējumā 8-2) plāna rūtiņām nosaka pēc formulas: vj – ui = cij . ( 1 ) Viegli pārliecināties, ka secīgi aprēķināmas sekojošas potenciālu vērtības: v1 = 3; u2 = 2; v2 = 6; u3 = −2; v3 = 10; v4 = 5. Jānoskaidro, vai sākotnēji sastādītais pārvadājumu plāns ir optimāls (vai vēl nepieciešami plāna uzlabojuma soļi). Lai plāns būtu optimāls, tukšajās rūtiņās jāizpildās nosacījumam vj – ui ≤ cij . ( 2 ) Veic aprēķinus: v2 – u1 = 6 > c12 = 5 (optimālā nosacījuma pārkāpums); v3 – u1 = 10 > c13 = 7 (maksimāls optimālā nosacījuma pārkāpums); v4 – u1 = 5 < c14 = 11; v3 – u2 = 8 > c23 = 6 (optimālā nosacījuma pārkāpums); v4 – u2 = 3 = c24; v1 – u3 = 5 = c31. Tātad, sākotnēji izvēlētais pārvadājumu plāns nav optimāls, nepieciešami tā uzlabojumi. Sāk pirmo vispārīgo soli. Katrā no soļiem jāievēro rakstnieka Marģera Zariņa (atcerēsimies viņa šedevru “Viltotais Fausts jeb Pārlabota un Papildināta Pavārgrāmata”!) izgudrotais PPP princips, t.i., mūsu gadījumā jāveic: 1) plāna labošanu; 2) potenciālu labošanu; 3) pārvadājumu optimāluma pārbaudi.

Plāna labošana, veidojot ķēdi No plāna X rūtiņas (1, 3), kur vislielākais optimālā nosacījuma pārkāpums, pretēji pulksteņa rādītāja virzienam veido ķēdi, izvēloties aizpildītās rūtiņas:(1, 3), (1, 1), (2, 1), (2, 2), (3, 2), (3, 3). Rūtiņā (3, 3) ķēde, kas satur pāra skaitu locekļus, noslēdzas, atgriežoties sākotnējā rūtiņā (1, 3). Sadala ķēdi pozitīvajā un negatīvajā pusķēdē, secīgi mainot + un − zīmes (skat. zīm. 8-3). Lielums Δ vienāds ar minimālo elementu negatīvajā pusķēdē: Δ = 80. Pozitīvā pusķēde, kur, uzlabojot plānu, pieskaita lielumu Δ, satur rūtiņas (1, 3), (2, 1), (3, 2); negatīvā pusķēde, kur lielumu Δ atskaita, atbilst rūtiņām (1, 1), (2, 2), (3, 3). Tā kā minimālais elements Δ sastopams divās negatīvās pusķēdes rūtiņās, tad no plāna jāizslēdz vienu no šīm rūtiņām, piemēram, (3, 3). vj ui 3 6 7 5 100− + 0 20− + 80 100 X: 50+ 80− 2 130+ 0− 130 40+ 80− 50 −2 120 50 170

150 120 80 50 BBj Ai Zīm. 8-3. Ķēdes veidošana plānam. Zīm. 8-4. Pārvadājumu plāns (pirmais solis). Zīmējumā 8-4 redzams pirmajā solī iegūtais plāns X: P13 = 80; P11= 20; P21 = 130; P22 = 0; P32 = 120; P34 = 50 (šī rūtiņa saglabā savu vērtību no iepriekšējā plāna). Gadījumā, kad nepieciešams turpmākais plāna uzlabojums, veidojot ķēdi, ķēdes + un − simboli tiek attēloti tajā pašā zīmējumā.

42

Page 43: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Potenciālu labošana Potenciālu pārbaudi veic, nosakot, vai plāna tukšajām rūtiņām (rindā i un kolonā j) izpildās nosacījums: αij = vj – ui − cij ≤ 0. ( 3 ) Rūtiņai (1, 3) noteikums (3) neizpildās. No potenciāla v3 lieluma atskaita α13 = v3 – u1 − c13 = 10 − 7 = 3, t.i., v3 = 7. Trešajā kolonā nav citu plāna X rūtiņu. Tātad citur nosacījums nav pārkāpts, citi potenciāli nav jālabo. Iegūto v3 vērtību ieraksta zīmējumā 8-4.

Vai pārvadājumu plāns optimāls? Veic potenciālu kopas {ui; vj } pārbaudi, noskaidrojot, vai pārvadājumu plāns optimāls, t.i., pārbauda tukšās rūtiņas: v2 – u1 = 6 > 5 = c12 (pārkāpts optimālais nosacījums); v4 – u1 = 5 < 11 = c14; v3 – u2 = 7 −2 < 6 = c23 ; v4 – u2 = 5 − 2 = 3 = c24; v1 – u3 = 5 = c31; v3 – u3 = 9 < 12 = c33. Jāveic otru vispārīgo soli, jo plāns nav optimāls.

Plāna labošana, veicot otro vispārīgo soli Veidojot ķēdi, tajā ieved rūtiņu (1, 2), kur nav ievērots optimālais noteikums. Veidojas noslēgta ķēde: (1, 2), (1, 1), (2, 1), (2, 2) (skat. zīm. 7-4), kur pozitīvā pusķēde sastāv no rūtiņām (1, 2) un (2, 1). Minimālais elements negatīvajā pusķēdē Δ = 0, tātad pārvadājumi nemainās: nulli ieraksta rūtiņā (1, 2), kas ietilpst plānā, bet rūtiņu (2, 2) no plāna izslēdz. Pārvadājumu plānam X: P11 = 20; P12 = 0; P13 = 80; P21 = 130; P32 = 120; P34 = 50 (skat. zīm. 8-5). ui vj 3 5 7 4 0 20− 0+ 80 100 2 130 130 −3 + 120− 50 170

150 120 80 50 Ai BBj Zīm. 8-5. Pārvadājumu plāns (otrais solis). Rūtiņai (1, 2) nav atbilstoša potenciāla, jo α12 = 1 > 0. Tāpēc koriģē potenciāla v2 vērtību: v2= 6 − 1 = 5. Otrajā kolonā vēl ir plāna rūtiņa (3, 2), atbilstoši kurai jākoriģē u3 vērtība: u3 = −2 − 1= −3. Tā kā trešajā rindā ir plāna rūtiņa (3, 4), pārrēķina v4 vērtību: v4 = 5 − 1 = 4. Visi šie potenciālu vērtību pārrēķini atspoguļoti zīmējumā.

Plāna labošana, veicot trešo vispārīgo soli Pārbaudot plāna X tukšās rūtiņas noskaidro, ka plāns nav optimāls, jo α31 = v1 – u3 – c31 =3 − (−3) − 5 = 1 > 0. Jāveic trešais vispārīgais solis. Veidojas noslēgta ķēde, izmantojot rūtiņas: (3, 1), (3, 2), (1, 2), (1, 1), kurā minimālais elements negatīvajā pusķēdē (3, 2), (1, 1) ir Δ = 20 = min{120; 20} (skat. zīm. 8-5). Pārvadājumu plāns X ir šāds: P12 = 20; P13 = 80; P21 = 130; P31 = 20; P32 = 100; P34 = 50 (skat. zīm. 8-6).

43

Page 44: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Rūtiņai (3, 1) nav atbilstoša potenciāla, jo α31 = 1 > 0. Tāpēc labo v1: v1 = 3 − 1 = 2. Potenciāla labošana vēl nepieciešama otrajā rindā: u2 = 2 − 1 = 1 (skat. zīm. 8-6). Pārbaudot optimālos nosacījumus tukšajām rūtiņām, izrādās, ka tie nav pārkāpti: α11 = 2 − 0 − 3 = −1 < 0; α14 = 4 − 0 − 11< 0; α22 = 5 − 1 − 4 = 0; α23 = 7 − 1 − 6 = 0; α24 = 4 − 1 − 11< 0; α33 = 7 + 3 −12 < 0. vj ui 2 5 7 4 0 20 80 100 1 130 130 −3 20 100 50 170

Ai 150 120 80 50 BBj Zīm. 8-6. Pārvadājumu plāns (trešais solis). Plāns ir optimāls: X = X*. Pārvadājumu izmaksas tā realizēšanai: W* = 5 ⋅ 20 + 7 ⋅ 80 + 130 + 5 ⋅ 20 + 8 ⋅ 100 + 7 ⋅ 50 = 2040. Sākotnēji sastādītajam plānam izmaksas ir lielākas: W = 100 ⋅ 3 + 50 + 80 ⋅ 4 + 40 ⋅ 8 + 8 ⋅ 12 + 50 ⋅ 7 = 2300. Minimālā elementa paņēmiens Saprotams, ka ziemeļrietumu stūra paņēmiens sākotnējā pārvadājumu plāna sastādīšanā nav labākais (vajadzīgi vairāki soļi tā uzlabošanā), jo šis paņēmiens neievēro pārvadājumu izmaksu matricas C minimālās vērtības. Minimālā elementa paņēmiens var garantēt ātrāku optimālā plāna sasniegšanu. Tas redzams arī apskatītajā piemērā, kur ceļa izdevumu matrica C dota zīmējumā 8-1. Sastādot sākotnējo pārvadājumu plānu pēc minimālā elementa paņēmiena, konstatē, ka no otrās noliktavas uz pirmo veikalu (c21 = 1 ir minimālais skaitlis) jāsūta 130 = min{130, 150} vienības produkta. Līdz ar to otrās noliktavas krājumi izsmelt1. No pirmās noliktavas uz pirmo veikalu sūta 20 vienības produkta, jo c11 =3 ir nākošais mazākais elements matricas C pirmajā kolonā. Pāri palikušās 80 vienības sūta uz otro veikalu: nākošais minimālais elements pirmajā matricas rindā ir c12 = 5. Atliek pārsūtīt trešās noliktavas saturu: 40 vienības nonāk otrajā veikalā; 80 – trešajā, bet 50 – ceturtajā veikalā. Sākotnējam plānam X, kas redzams zīmējumā 8-7 (P11 = 20; P12 = 80; P21 = 130; P32 = 40; P33 = 80; P34 = 50), ceļa izdevumi: W = 60 + 400 + 130 + 320 + 960 + 350 = 2220. vj 3 5 9 4 ui 0 20 80− + 100 2 130 130 −3 40+ 80− 50 170 Ai

150 120 80 50 BBj Zīm. 8-7. Sākotnējais pārvadājumu plāns.

44

Page 45: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Aprēķina potenciālu vērtības, izmantojot sešas aizpildītās plāna rūtiņas un piešķirot potenciālam u1 vērtību 0.Viegli pārliecināties, ka secīgi aprēķināmas sekojošas potenciālu vērtības: v1 = 3; v2 = 5; u2 = 2; u3 = −3; v3 = 9; v4 = 4 (skat. zīm. 8-7). Jānoskaidro, vai plāns optimāls. Konstatē, ka trijās tukšajās rūtiņās neizpildās optimālais nosacījums (3): α13 = v3 – u1 – c13 = 9 − 7 = 2 > 0 (maksimālais pārkāpums); α23 = 9 −2 − 6 = 1 > 0; α31 = v1 – u3 – c31 = 1 > 0. Sāk pirmo vispārīgo soli plāna labošanā, veidojot ķēdi: (1, 3), (1, 2), (3, 2), (3, 3). Minimālais elements Δ = 80 negatīvajā pusķēdē sastopams 2 rūtiņās: (1, 2) un (3, 3). Vienu no šīm rūtiņām, piemēram, (1, 2) ar vērtību 0 ņem plānā, bet otru rūtiņu no plāna izmet (veicot atbilstošu aprēķinu, var pārliecināties, ka otra izvēle gala rezultātā dod to pašu rezultātu). Iegūst plānu X: P11 = 20; P12 = 0; P13 = 80; P21 = 130; P32 = 120; P34 = 50. Labo potenciāla v3 vērtību: v3 = 7 (skat. zīm. 8-8). vj vj ui 3 5 7 4 ui 2 5 7 4 0 20− 0+ 80 100 0 20 80 100 2 130 130 1 130 130 −3 + 120− 50 170 −3 20 100 50 170

150 120 80 50 BBj Ai 150 120 80 50 Bj B Ai Zīm.8-8. Pārvadājumu plāns (pirmais solis). Zīm. 8-9. Optimālais pārvadājumu plāns. Pārbaudot, vai pārvadājumu plāns optimāls, konstatē pārkāpumu tukšajai rūtiņai (3,1): α31 = v1 – u3 – c13 = 3 + 3 − 5 = 1 > 0. Pāriet pie otrā vispārīgā soļa, veidojot ķēdi: (3, 1), (3, 2), (1, 2), (1, 1). Minimālais elements negatīvajā pusķēdē (1, 1), (3, 2) ir Δ = 20, tāpēc iegūst plānu: P12 = 20; P13 = 80; P21 = 130; P31 = 20; P32 = 100; P34 = 50. Labojot potenciālus, dabū sekojošas to vērtības: v1 = 2; u2 = 1 (skat. zīm. 8-9). Pārbaudot nosacījumu (2) tukšajām rūtiņām, konstatē, ka plāns optimāls. Tas sakrīt ar zīmējumā 8-6 doto risinājumu. Uzdevums 8-1: Atrisināt transportuzdevumu, pielietojot minimālā elementa paņēmienu! Dots, ka trijās noliktavās uzglabā sekojošus daudzumus produkta: A1 = 100; A2 = 200; A3 = 300. Pieprasījums četros veikalos pēc šī produkta: BB1 = 180; B2 = 150; B3B = 110; BB4 = 160. Matrica C (ceļa izdevumu matrica) sastāv no trīs rindām un četrām kolonām: c11 = 3; c12 = 5; c13 = 4; c14 = 2; c21 = 1; c22 = 6; c23 = 9; c24 = 8; c31 = 2; c32= 3; c33 = 7; c34 = 4. Kādas izmaksas ir sākotnējam un optimālajam plānam?

45

Page 46: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

9. Simpleksmetode lineārajā programmēšanā Par lēmumu pieņemšanu kādas pilsētas domē deputāts sūdzas: “Pēdējā laikā Blaumanis bieži slimo. Viņa domas domē nedzird. Bet akceptēti tiek V.Uļjanova ieteikumi.” Perpetual optimism is a force multiplier /Colin Powell/. Zināms, ka lineārai programmēšanai (LP) kā NLP daļai veltījama uzmanība. Iepazīsimies ar LP simpleksmetodi, bet vispirms pievērsīsimies LP dualitātes problēmai. Dualitātes problēma lineārajā programmēšanā Piemērs 9-1: Apskata uzdevumu par jūrnieku, kurš drēbniekam pasūta uzvalkus un mēteļus (skat. piemēru 7-3). Tas ir maksimproblēmas uzdevums max f = 30x + 50y, kur x – uzvalku skaits, y – mēteļu skaits (x ≥ 0; y ≥ 0). Ierobežojumi, kas vēl jāievēro uzdevumā: 2x + y ≤16; x + 2y ≤ 11; x+ 3y ≤ 15. Noskaidrots, ka slēgtais pieļaujamais apgabals, kur meklē uzdevuma risinājumu, maksimālo funkcijas vērtību uzrāda kādā no apgabala robežpunktiem: O(0; 0), f(O) = 0; D(0; 5), f(D) = 250; C(3; 4), f(C) = 290; B(7; 2), f(B) = 310 (maksimāla vērtība); A(8; 0), f(A) = 240. Izrādās, var risināt atbilstošās minimproblēmas uzdevumu: min g = 16u + 11v + 15w, kur mainīgie u, v, w (tie visi ≥ 0) atbilst trijiem maksimproblēmas uzdevuma ierobežojumiem. Funkcijas g(u, v, w) koeficienti 16, 11, 15 sakrīt ar iepriekšējā uzdevuma ierobežojumu labās puses skaitļiem. Savukārt, šajā minimproblēmas uzdevumā figurē divi nevienādības tipa ierobežojumi 2u + v + w ≥ 30; u + 2v + 3w ≥ 50, kurus iegūst no iepriekšējā uzdevuma nevienādību pirmās un otrās kolonas koeficientiem. Skaitļi, kas figurē nevienādību labajā pusē ir funkcijas f koeficienti (it kā, rakstot maksimproblēmas uzdevumu tabulas veidā, funkcijas f rinda būtu rakstīta šajā tabulā pēdējā). Ja maksimproblēmai nevienādībām izmanto zīmi ≤, tad zīme ≥ tiek izmantota minimproblēmai. Kāds pieļaujamais apgabals atbilst minimproblēmai? Viegli pārliecināties, ka trīsdimensiju telpā (atbilstoši mainīgajiem u, v, w) pieļaujamais apgabals nav slēgts. Tā robežplaknes ir: 2u + v + w = 30; u + 2v + 3w = 50 un koordinātu sistēmas plaknes (skat. zīm. 9-1). Pirmā robežplakne 2u + v + w = 30 šķeļ asis u, v, w punktos A = (0; 0; 30), B = (0; 30; 0), C = (15; 0; 0), kur funkcijas vērtība ir: g(A) = 450; g(B) = 330; g(C) = 240. Otrā plakne u + 2v + 3w = 50 šķeļ asis punktos D = (0; 0; 50/3); E = (0; 25; 0); F = (50; 0; 0), kur g(D) = 250; g(E) = 275; g(F) = 800. Var atrast šķautni, ko veido abas robežplaknes, un atbilstošos robežpunktus A1 = ( 8; 0; 14) un BB1 = (10 / 3; 70 / 3; 0), kur g(A1)= 16 ⋅ 8 + 0 + 15 ⋅ 14 = 338 un g(B1B ) = 160 / 3 + 770 / 3 = 930 / 3 = 310. Atrasta minimālā funkcijas g vērtība g* = 310 vienā no pieļaujamā apgabala robežpunktiem. Tā sakrīt ar maksimālo funkcijas f vērtību f* = 310 iepriekšējā uzdevumā. Jāatzīmē, ka pieļaujamā apgabala robežpunkti nav visi agrāk uzskaitītie punkti, bet vienīgi punkti: A, B, A1 ,BB1 , F. Dualitātes teorēma: LP max f uzdevumam ir maksimālā vērtība tad un tikai tad, ja atbilstošajai duālai problēmai eksistē min g. Šajā gadījumā max f = min g. Tātad, ja P un Q ir pieļaujamie risinājumi – tādi, ka f(P) = g(Q), tad tas ir optimālais risinājums. Uzdevums 9-1: Uzdevumam 7-3 veidot duālo maksimālās vērtības meklēšanas uzdevumu un tad risināt to ar LP simpleksmetodi!

46

Page 47: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

w A(0; 0; 30); g(A) = 450 D(0; 0; 16,7) A1(8; 0; 14); g(A1) = 338 g(D) = 250 C(15; 0; 0) F(50; 0; 0) u 0 g(F) = 800 E(0; 25; 0) BB1(10/3; 70/3; 0); g(B1B ) = 310 B(0; 30; 0); g(B) = 330 v Zīm. 9-1. Analītisks LP duālā uzdevuma risinājums. LP simpleksmetode LP simpleksmetodes izklāstam izmanto iepriekš apskatīto uzdevumu par jūrnieku un drēbnieku. Kā šim uzdevumam sastādīt sākotnējo simplekstabulu? Maksimproblēmas uzdevumā ir divi nezināmie x un y. Tiem atbilst pirmās divas kolonas tabulā, virs kurām raksta lielumus P1 un P2. Pirmā kolona sastāv no skaitļiem 2; 1; 1; −30 atbilstoši koeficientiem pie nezināmā x nevienādībās un funkcijas izteiksmē (tai koeficientu ņem ar mīnuszīmi). Pēdējo rindu tabulā raksta zem svītras, lai parādītu, ka šai rindai ir īpaša nozīme. Otrā tabulas kolona sastāv no no skaitļiem 1; 2; 3; −50 atbilstoši koeficientiem pie nezināmā y nevienādībās un funkcijas izteiksmē (tai koeficientu ņem ar mīnus zīmi). Tabulas pēdējā kolonā izvieto skaitļus 16; 11; 15 un 0. Pirmos trīs skaitļus nosaka uzdevuma nevienādību labās puses koeficienti, bet tabulas labās puses apakšējā stūrī ieraksta 0, jo uzskata, ka meklējumu procesu simpleksmetodei jāsāk no pieļaujamā punkta 0 (koordinātu sākumpunkta), kur funkcijas f vērtība ir 0. Tabulas vidusdaļā atbilstoši trijām rindām (neskaitot pēdējo tabulas rindu) izvieto trešās kārtas diagonālo vienības matricu, zem kuras pēdejā rindā ieraksta trīs nulles. Ko tas nozīmē? Simpleksmetode paredz risināt nevis maksimproblēmas uzdevumu ar nevienādības tipa ierobežojumiem, bet gan, ievedot fiktīvos (angl.: slack) mainīgos x1, x2, x3, pāriet uz sekojošu trīs vienādojumu risināšanu: 2x + y + x1 = 16; x + 2y + x2 = 11; x + 3y + x3 = 15. Tad simpleksmetodes stratēģija ir virzīties no sākotnējā pieļaujamā apgabala robežpunkta 0 pa kādu no robežapgabala šķautnēm, kura pieļauj funkcijas f vērtības pieaugumu, līdz nākošam robežpunktam, kura sasniegšanu attēlo nākošā LP simplekstabula.

47

Page 48: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Sākotnējā simplekstabula: P1 P2

2 1 1 0 0 16 1 2 0 1 0 11 1 3* 0 0 1 15 −30 −50 0 0 0 0 Par indikātoru pēdējā tabulas rindā kalpo mīnuszīme pie skaitļa. Tas nozīmē to, ka šajā kolonā var meklēt galveno pagrieziena elementu (galveno elementu), lai varētu pāriet uz nākošo simplekstabulu (veikt pārvietošanos pa pieļaujamā apgabala robežšķautni līdz nākošajam robežpunktam). Meklē galveno elementu otrajā kolonā (to būtu iespējams atrast arī pirmajā kolonā). Galveno elementu noteic pēc minimālās attiecības starp pēdējās kolonas elementu un elementu šajā rindā (attiecībai jābūt ≥ 0). Mūsu gadījumā min {16/1; 11/2; 15/3 } = 5. Tātad galvenais elements atrodas otrās kolonas trešajā rindā (iezīmē to ar zvaigznīti). Trešā tabulas rinda ir galvenā. Nākošajā tabulā šajā rindā dala visus elementus ar galveno elementu. Iegūst rindu: 1/3; 1; 0; 0; 1/3; 5, kuru iezīmē ar simbolu P1. Pārējās rindas tabulā iegūst, lietojot elementārās operācijas ar matricas rindām. Piemēram, otrai tabulas rindai pieskaita galveno rindu, pareizinātu ar (−2), tad dabū rindu, kas galvenajā kolonā satur 0, t.i., 1/3; 0; 0; 1; −2/3; 1. Nākošajā tabulā galvenajā kolonā visi elementi ir nulles, izņemot galveno elementu, kas vienāds ar 1. Simplekstabula ir sekojoša: P1 P2

5/3 0 1 0 –1/3 11 1/3* 0 0 1 –2/3 1 P2 1/3 1 0 0 1/3 5 −40/3 0 0 0 50/3 250 Pirmā kolona ir galvenā. Par to liecina indikātora zīme − mīnuszīme − pēdējā tabulas rindā. Meklē tajā galveno elementu: min {33/5; 3; 15}= 3. Otrajai rindai, kur atrodas galvenais elements, nākošajā tabulā ir iezīme P1 un šāds saturs: 1; 0; 0; 3; −2; 3. Nākošā simplekstabula: P1 P2

0 0 1 −5 3* 6 P1 1 0 0 3 –2 3 P2 0 1 0 −1 1 4 0 0 0 40 −10 290 Indikātorzīme priekšpēdējā tabulas kolonā rāda, ka to jāizvēlas par galveno. Galvenais elements atrodas pirmajā rindā: min {6/3; 4/1 } = 2. Tā kā virs galvenās kolonas nav iezīmes, tad pirmā rinda nākošajā simplekstabulā netiek iezīmēta.

48

Page 49: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Nākošā tabula: P1 P2

0 0 1/3 –5/3 1 2 P1 1 0 2/3 –1/3 0 7 P2 0 1 -1/3 2/3 0 2 0 0 10/3 70/3 0 310 Šī ir beigu simplekstabula, kas labajā apakšējā stūrī satur optimālo vērtību f* = 310. Indikātora zīmju pēdējai tabulas rindai vairs nav – tālāka virzība (jaunas tabulas veidošana) nav iespējama. Tabulas otrajā rindā iezīme P1 un elements 7 pēdējā tabulas kolonā rāda, ka x* = 7, bet iezīme P2 tabulas trešajā rindā un elements 2 atbilst vērtībai y* = 2. Pēdējā simplekstabula dod ne tikai maksimproblēmas risinājumu, bet tās pēdējā rindā ir arī duālās minimproblēmas risinājums: (10/3; 70/3; 0). Atzīmēsim, ka otrajā simplekstabulā ar iezīmi P2 norādīts uz koordināti y = 5. Tā kā iezīmes P1 nav, koordinātei x jāņem vērtība x = 0. Tātad otrā simplekstabula rāda pārvietošanos uz pieļaujamā apgabala robežpunktu D = (0; 5), kur funkcijas vērtība ir f(D) = 250 atbilstoši skaitlim simplekstabulas labajā apakšējā stūrī. Trešajā tabulā norādīta pārvietošanās uz pieļaujamā apgabala robežpunktu C = (3; 4), kur funkcijas vērtība f = 290. Apskata vēl piemēru, kurā risina maksimproblēmu. Piemērs 9-2: Jāatrod optimālā vērtība uzdevumā max f = 4x − 2y − z ar ierobežojumiem x + y + z ≤ 3; 2x + 2y + z ≤ 4; x − y ≤ 0; x ≥ 0; y ≥ 0; z ≥ 0. Šajā uzdevumā veidojas sekojošas simplekstabulas: P1 P2 P3 P1 P2 P3 1) 1 1 1 1 0 0 3 2) 0 2 1 1 0 −1 3 2 2 1 0 1 0 4 0 4* 1 0 1 −2 4 1* −1 0 0 0 1 0 P1 1 −1 0 0 0 1 0 −4 2 1 0 0 0 0 0 −2 1 0 0 4 0

P1 P2 P3

3) 0 0 ½ 1 −½ 0 1 P2 0 1 ¼ 0 ¼ −½ 1 P1 1 0 ¼ 0 ¼ ½ 1 0 0 3/2 0 ½ 3 2

Redzams, ka max f = 2; P*= (1; 1; 0). Tā kā mainīgajam z nav iezīmes P3 , tad risinājumā ņem vērtību: z = 0. Atzīmēsim, ka šajā uzdevumā pirmajai tabulai izvēlas galveno rindu, kas satur nulli kā pēdējo skaitli: min {0/1; 4/2; 3/1}= 0.

49

Page 50: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Uzdevums 9-2: Kompānijai pieder divas nelielas raktuves (A un B): A katru dienu dod vienu tonnu augstvērtīgu ogļu, 3 t vidējas kvalitātes ogļu un 5 t zemas kvalitātes ogļu; B dod ik dienu 2 t no katras ogļu šķiras. Pircējs no kompānijai grib iegādāties 80 t augstvērtīgu, 160 t vidējas kvalitātes un 200 t zemas kvalitātes ogļu. Cik dienu jādarbojas raktuvēm A un B, izpildot pasūtījumu? Katras raktuves darbs izmaksā 200 eiro dienā. Kompānija vēlas darboties pēc iespējas ekonomiskāk: taupot naudu. Pirmkārt, atrisināt minimproblēmu, veidojot pieļaujamā apgabala diagrammu (zīmējumu)! Otrkārt, jormulēt duālo maksimproblēmu un atrisināt to ar simpleksmetodi! Uzdevums 9-3: (Uzdevums par trakiem) Traku (smago auto) kompānijai produktu pārvadāšanai jāiznomā divu veidu trakus: A tipam ir 20 m3 rezfridžerātortelpas un 40 m3 telpas bez saldēšanas; B tipa trakam ir 30 m3

telpas gan ar saldēšanu, gan bez tās. Plāns paredz 900 m3 saldētu un 1200 m3 nesaldētu produktu pārvadāšanu. Cik daudz katra tipa traku kompānijai jāiznomā, lai būtu minimālas izmaksas? Traku A iznomā par 20, B – par 30 (santīmi / km). Risināt minimproblēmu, veidojot pieļaujamā apgabala zīmējumu un meklējot optimālo vērtību apgabala robežpunktos! Pēc tam ar simpleksmetodi atrisināt atbilstošo duālo problēmu!

50

Page 51: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

10. Lēmumu pieņemšana spēļu teorijā Age is not important unless you’re a cheese /Helen Hayes/. Vinnēt ir labi, bet vēl labāk − nezaudēt. Stingri noteiktas spēles Ievadam apskatīsim kādu divu personu spēli. (spēli ar pirkstiem). Piemērs 10-1: Šajā spēlē (spēlē ar pirkstiem) personas R un C vienlaicīgi var parādīt vienu vai divus pirkstus. Ja uzrādīto pirkstu summa ir pāra skaitlis, tad šo summu otrais spēlētājs C izmaksā pirmajam spēlētājam R, ja nepāru skaitlis, tad maksātājs ir pirmais spēlētājs. Saprotams, ka azartspēles nav nekas labs, un labāk tajās nepiedalīties, bet mūsu uzdevums noskaidrot, kuram spēlētājam šī spēle ir izdevīgāka. Spēli var attēlot ar matricu: 2 −3 −3 4 . Ja pirmais spēlētājs R, piemēram, rāda vienu pirkstu, kas atbilst matricas pirmās rindas (angl.: row) izvēlei, bet spēlētājs C arī rāda vienu pirkstu, kas atbilst pirmās kolonas (angl.: column) izvēlei, tad viņam jāmaksā pirmajam spēlētājam summa 2. Ja turpretī šajā gadījumā otrais spēlētājs rādītu divus pirkstus (būtu izvēlējies otro kolonu), tad viņš vinnētu summu 3, atbilstoši skaitlim ( -3) pirmās rindas otrajā kolonā. Gluži tāds pats vinnests spēlētājam C būtu, ja R rādītu divus pirkstus, bet viņš rādītu vienu pirkstu (skaitlis (–3) otrās rindas pirmajā kolonā). Lielākais vinnests, ko spēlētājs R var iegūt vienā spēlē, ir summa 4, kad abi spēlētāji rāda divus pirkstus (skaitlis 4 otrās rindas otrajā kolonā). Saskaitot iespējamos vinnestus (pirmajam spēlētājam ar pluszīmi, otrajam spēlētājam ar mīnuszīmi), iegūst: 2 + 4 − 3 − 3 = 0. Šī ir tā saucamā divu personu matricspēle ar nulles summu. Tas liecina, ka abu spēlētāju izredzes iegūt vinnestu ir apmēram vienādas, bet vai tā ir īstenībā? Jautājums paliek atklāts. Piemērs 10-2: Apskata spēles, kuras ir divu personu (R un C) matricspēles – tās dotas ar matricas vērtībām (matricas var būt gan taisnstūra, gan kvadrātiska veida): 6 −4 −2 3 −1 4 −2 1 2 0 3 A1 = 1 −1 3 ; A2 = 0 2 −1 6 ; A3 = 2 3 2 5 . −8 −3 7 3 −3 5 1 3 0 1 4 Matricspēle ir stingri noteikta (angl.: stricktly determined game), ja tai ir seglu punkts, kurā sakrīt minimālā vērtība skaitļiem kādā matricas rindā un maksimālā vērtība atbilstošajā kolonā. Iepriekšējā piemērā šāda seglu punkta nebija. Seglu punkta noteikto matricas vērtību sauc par matricas vērtību (cenu) v. Ja v = 0, tad tā ir taisnīga jeb godīga (angl.: fair) spēle, kas nedod priekšrocības nevienam spēlētājam. Ja spēlētāji R un C pastāvīgi pieturas pie tā saucamās minimaksa stratēģijas (ja R un C ir minimaksa spēlētāji), t.i., ja spēlētājs R pastāvīgi izvēlas rindu, bet spēlētājs C kolonu, kas atbilst seglu punktam, tad vērtība v = 0 liecina, ka pēc katras spēles tiem nekas nav jāmaksā viens otram. Negatīvas vērtības gadījumā summu |v| spēlētājs R maksātu spēlētājam C, bet pozitīvas spēles vērtības gadījumā spēlētājs C maksātu summu v spēlētājam R. Matricai A1 minimālā vērtība pirmajai rindai ir (−4), otrajai rindai (−1), bet trešajai: (−8). Savukārt, maksimālās vērtības spēles matricas pirmajai kolonai ir 6; otrajai kolonai

51

Page 52: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

(-1), bet trešajai kolonai 7. Iezīmējot minimālās vērtības ar zīmi *, bet maksimālās ar ^, iegūst sekojošas matricas: 6^ −4* −2 3^ −1 4 −2* 1 2 0* 3 A1 = 1 −1*^ 3 ; A2 = 0 2^ −1* 6^ ; A3 = 2* 3^ 2*^ 5^ . −8* −3 7^ 3^ −3* 5^ 1 3^ 0* 1 4 Redzams, ka spēles matricai A1 seglu punkts ir otrajā rindā un otrajā kolonā, spēles vērtība v vienāda ar (−1). Kāda optimālā stratēģija ir pirmajam spēlētājam R, kurš izvēlas vienu no rindām? Ja viņš pastāvīgi izvēlas otro rindu, tad līdz ar to viņš izvēlas minimālo maksājumu (vienādu ar vienu vienību), ko viņam jāmaksā otrajam spēlētājam. Spēles vērtība v = -1 liecina, ka šī spēle dod nelielas priekšrocības otrajam spēlētājam. Optimālo stratēģiju pirmajam spēlētājam R rāda vektors p0 = (0; 1; 0), kurš liecina, ka spēlētājs pastāvīgi izvēlas otro rindu. Savukārt, optimālai otrā spēlētāja C stratēģijai atbilst vektors q0 = (0; 1; 0), kas liecina, ka spēlētājs C pastāvīgi izvēlas otro kolonu. Spēles matricā A2 redzams, ka šeit nav seglu punkta, t.i., spēle nav stingri noteikta. Ievērosim, ka pirmajā kolonā atzīmētas divas vienādās maksimālās vērtības. Spēles matricai A3 ir seglu punkts. Spēles vērtība ir v = 2, tātad tā dod priekšrocības pirmajam spēlētājam. Optimālās stratēģijas spēlētājiem ir sekojošas: p0 = (0; 1; 0), q0 = (0; 0; 1; 0), t.i., R pastāvīgi izvēlas otro rindu, bet C − trešo kolonu. Ievērosim, ka otrajā rindā iezīmēti divi vienādie minimālie elementi 2. Piemērs 10-3: Dota matricspēle A(3×4), kurai trīs rindas, četras kolonas 1* 3 2 9^ 1

5 4*^ 4* 6 4* 8^ 2* 6^ 2* 2 8 4^ 6 9

Minimālos matricas rindu elementus uzrāda kolonā pa labi no matricas, bet maksimālos matricas kolonu elementus − apakšējā rindā. Norādītajās vietās redzami: minimālie elementi min Aij (i =1, 2, 3) un maksimālie elementi max Aij, kur j = 1, …, 4. i j Spēlei ir seglu punkts, un šajā gadījumā α = max min Aij = β = min max Aij = 4.

i j j i

Spēle izdevīga spēlētājam R, kurš pastāvīgi izvēlas otro rindu. Turpretī spēlētājam C pastāvīgi jāizvēlas otrā kolona, jo pretējā gadījumā viņa zaudējums būs lielāks par 4. Teorēma: Spēles matricai A spēkā vienādība α = max min Aij = β = min max Aij

i j j i

t.u.t.t., ja matricai A ir seglu punkts (ja ir stingri noteikta spēle). Šajā gadījumā spēles cena ir noteikta: v = α = β. Apskatītajos piemēros, kad spēle stingri noteikta, lieto tīro stratēģiju (pastāvīgi izvēlas konkrētu rindu vai kolonu). Turpmāk apskatīsim arī jaukto stratēģiju – gadījumos, kad spēle nav stingri noteikta. Pierāda sekojošu teorēmu, kas pamato to, ka spēļu matricai var būt tikai viens seglu punkts.

52

Page 53: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Teorēma: Ja a un b ir matricas A seglu punkti, tad a = b. Pierādījums: Ja a un b atrodas vienā rindā, tad a un b ir rindas minimālās vērtības, tātad a = b. Ja a un b atrodas vienā kolonā, tad abi skaitļi ir kolonas maksimālās vērtības un līdz ar to a = b. Vēl ispējama situācija, ka seglu punkti a un b atrodas dažādās rindās un dažādās kolonās, tad matricā veidojas, piemēram, sekojošs četrstūris: … a … d … … c … b … . Tā kā a ir seglu punkts, tad a ≤ d, c ≤ a pēc seglu punkta definīcijas. Arī b ir seglu punkts, tāpēc b ≤ c, d ≤ b. Iegūst sakarības: a ≤ d ≤ b ≤ c ≤ a. Seko, ka a = d = b = c, t.i., a = b, k.b.j. Lēmumu pieņemšana spēļu teorijā Ļēmumu pieņemšanu spēļu teorijā pamato sekojoša teorēma. Fon Neimana teorēma par minimaksu: Katrai matricai A (m × n) un jebkuriem varbūtību vektoriem p = ( p1, …, pm ) un q = (q1, …, qn ) ir spēkā vienādība: m n m n max min ∑ ∑ pi qj Aij = min max∑ ∑ pi qj Aij.

p q i=1 j=1 q p i=1 j=1

Šī teorēma liecina, ka, izvēloties optimālo jaukto stratēģiju p0 = (p10, …, pm

0), spēlētājs R neatkarīgi no otra spēlētāja atbildes gūst vismaz vinnestu, kas vienāds ar spēles cenu: m n v = ∑ ∑ pi qj Aij. i=1 j=1

Vispirms jāsastāda rīcības plāns, kā veikt nepieciešamos soļus spēļu teorijā: 1) Ja spēle stingri noteikta, jāpielieto tīrā atratēģija. Tas apskatīts iepriekš; 2) Atmet katru lieko (angl.: recessive) rindu vai kolonu; 3) Ja ir spēle (2 × 2), lieto teorēmu par spēles (2 × 2) risinājumu; 4) Ja ir spēle (2 × m) vai (m × 2), to reducē uz spēli (2 × 2); 5) Visos pārējos gadījumos lieto simpleksmetodi. Lieko rindu vai kolonu atmešana spēles matricā

Pirmais spēlētājs R tiecas izvēlēties rindu, kas satur pēc iespējas lielākus skaitļus, jo tas garantē pēc iespējas lielāku vinnestu. Turpretī tā saucamo lieko rindu (tādu matricas rindu, kurā elementi mazāki par atbilstošajiem elementiem kādā citā rindā) spēlētājs R nekad neizvēlas (ja tas erudīts spēlētājs). Tāpēc lieko rindu var no spēles matricas svītrot. Savukārt spēlētājs C nekad neizvēlas matricā lieko kolonu – tādu kolonu, kurā elementi lielāki par atbilstošajiem elementiem kādā citā kolonā. Tas izriet no spēlētāja C vēlmes pēc iespējas samazināt iespējamo zaudējumu. Tāpēc lieko kolonu var no spēles matricas svītrot. Piemērs 10-4: Apskata spēles matricu −5 −3 1

A = 2 −1 2 −2 3 4 .

53

Page 54: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Redzams ka pirmā rinda “mazāka” par otro rindu: (-5; -3; 1) ≤ (2; -1; 2), t.i., katrs skaitlis pirmajā rindā nav lielāks par atbilstošo skaitli otrajā rindā. Tātad pirmā rinda ir liekā rinda, kuru izmetot, spēle reducējas uz spēli (2 × 3): 2 −1 2 −2 3 4 . Konstatē, ka liekā kolona ir trešā, jo katrs skaitlis tajā ir lielāks par atbilstošo skaitli otrajā kolonā. Tātad spēle ir reducējama uz spēli (2 × 2): A* = 2 −1 −2 3 . Protams, nav grūti noskaidrot, vai matricai ir seglu punkts, t.i., vai spēle ir stingri noteikta. Bet var šim nolūkam izmantot sekojošu lemmu. Lemma par spēli (2 x 2): Matricai a b c d nav seglu punkta, ja kādai no tās diagonālēm abi elementi ir lielāki par otrās diagonāles elementiem, t.i., ja 1) a, d > b un a, d > c vai 2) b, c > a un b, c > d. Mūsu gadījumā galvenās diagonāles elementi a = 2 un d = 3 ir lielāki par otrās diagonāles elementiem b = −1 un c = −2, tātad matricai nav seglu punkta. Lemmas nosacījumi nodrošina arī to, ka nākošajā teorēmā vērtība daļas saucējam nav vienāda ar nulli. Jauktas stratēģijas lietošana spēlē (2 x 2) Teorēma par spēles (2 x 2) risinājumu: Ja matricspēle A = a b , kurai D = a b c d c d un S =(a + d − b − c), nav stingri noteikta, tad optimālo stratēģiju spēlētājam R nosaka vektors p0 = (p1; p2) = ( (d − c) / S); (a − b) / S), bet spēlētājam C − vektors q0 = (q1; q2) = ((d − b) / S; (a− c) / S). Spēles vērtība v vienāda ar v = D / S = (a ⋅ d – b ⋅ c) / S. Redzams, ka p1 + p2 = 1 un q1 + q2 = 1. Izteiksme (a ⋅ d – b ⋅ c) vienāda ar det A. Piemēra 10-4 matricspēlei A*, kurā a = 2, b = −1, c = −2, d = 3, iegūst p1 = (3 + 2) / (2 + 3 + 2 + 1) = 5/ 8, p2 = 3/8, q1 = (3 + 1)/8 = ½, q2 = ½. Spēles cena vienāda ar v = (6 − 2) / (2 + 3 + 1 +2) = 4 / 8 = ½. Optimālās stratēģijas ir: p0* = (5/8; 3/8); q0* = (½; ½). Tātad risinājums sākotnējai spēlei A ir: v = ½; p0 = (0; 5/8; 3/8); q0 = ( ½ ; ½; 0). Atceramies, ka šajā spēlē atmeta pirmo rindu un trešo kolonu, kas atbilžu vektoriem dod atbilstošās nulls. Piemērs 10-5: Jānoskaidro, kuram no spēlētājiem izdevīgāka ir iepriekš minētā spēle ar pirkstiem. Šeit spēles matrica ir A = 2 −3 −3 4 . Izmantojot teorēmu par spēles (2 × 2) risinājumu, iegūst:

54

Page 55: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

p1 = (4 + 3) / (2 + 4 + 3 + 3) = 7 / 12; p2 = 5 /12; q1 = (4 + 3) / 12 = 7 / 12; q2 = 5 / 12; v = (8 −9) /12 = −1 /12. Spēle izdevīgāka otrajam spēlētājam. Analīze par spēles (2 ×2) risinājumu Jānoskaidro, vai teorēma par šo spēli tiešām ļauj izvēlēties optimālu jaukto stratēģiju. Apskata uzdevumu: A = 0 1 2 0 . Pieņem , ka optimālās stratēģijas ir: p0 = ( p; 1 − p); q0 = (q; 1 − q). Tātad sagaidāmā vērtība (angl.: expected value) jeb spēles cena ir E(p; q) = pq ⋅ 0 + p(1 −q) ⋅ 1 + (1 − p)q ⋅ 2 + (1 − p) (1 −q) ⋅ 0 = p − 3pq + 2q. Zīmējumā 10-1 funkcijai E(p; q) parādītas vienāda līmeņa līnijas. Var ievērot, ka E(½; 1) = ½ − 3/2 + 2 = 1; E(0; ½) = 0 − 0 + 1 = 1; E(0; 0) = 0; E(1; 1) = 1 − 3 + 2 = 0; E(1; 0) = 1; E(0; 1) = 2. Seglu punktam, kura nav matricā A, ir koordinātas p* =2/3; q*=1/3, bet spēles vērtība E* = 2/3 − 2/3 + 2/3 = 2/3 (viegli pārliecināties, ka, izmantojot teorēmu par spēles (2 × 2) risinājumu, iegūst to pašu rezultātu: p0 = (2/3; 1/3); q0 = (1/3; 2/3); v = 2/3). q E 1 2 5/3 0 5/6 4/3 1/6 p=0 2/3 1 1/3 1 p=1/3 ½ ½ p=2/3 1/3 2/3 ½ p=1 1/3 5/6 1/3 0 1/6 1 O p q 1/6 1/3 ½ 2/3 5/6 1 O 1/3 1 Zīm. 10-1. Funkcijas E(p, q) vienāda Zīm. 10-2. Cits funkcijas E(p, q) līmeņa līnijas. attēlojums. Zīmējumā 10-1 spēlētāja R optimālajai stratēģijai p = 2/3 atbilst vienāda līmeņa līnija, kas perpendikulāra asij p. Tas nozīmē to, ka neatkarīgi no C stratēģijas ar varbūtību 2/3 spēlētājam R garantēts vinnests E* = 2/3. Līdzīgi var teikt par mazāko pieļaujamo zaudējumu spēlētājam C (optimālā stratēģija q* = 1/3). Mazliet neparasti tas, ka spēlētājam R optimālā minimaksa stratēģija liek izvēlēties pirmo rindu divreiz biežāk kā otro, kaut gan otrā rinda izskatās “pievilcīgāka”. Zīmējums 10-2 palīdz to izskaidrot. Šajā zīmējumā lielums p ņemts kā argumentu E un q funkcija. Redzams, ka vienāda līmeņa līnijas ir taisnes, kas visas iet caur punktu q = 1/3, E = 2/3. Ja spēlētājs R izvēlas stratēģiju, kas atšķiras no optimālās (piemēram, kad p

55

Page 56: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

= 1/3, t.i., otro rindu R izvēlas divas reizes biežāk), viņš var cerēt uz augstāku vinnestu E(p; q) = E(1/3; 1) = 4/3, bet vienlaicīgi riskē iegūt tikai vinnestu E(1/3; 0) = 1/3. Risinājums matricspēlei ar simpleksmetodi Piemērs 10-6: Apskata spēles matricu A = 3 −1 0 −2 1 –1 . Neviena no kolonām nav liekā, spēli nevar reducēt uz mazāka izmēra spēli. Matricai nav seglu punkta. Pieskaita skaitli k = 3 visiem matricas elementiem, lai nebūtu neviena skaitļa, kas mazāks vai vienāds ar nulli. Iegūst matricu A* = 6 2 3 1 4 2 . Sākotnējo simplekstabulu sastāda sekojošā veidā: P1 P2 P3

6 2 3* 1 0 1 1 4 2 0 1 1

−1 −1 −1 0 0 0 Kā redzams, tabula atbilst sekojošai maksimproblēmai: max f = x1 + x2 + x3; 6x1 + 2x2 + 3x3 ≤ 1; x1 + 4x2 + 2x3 ≤ 1, kur xi ≥ 0, i= 1, 2, 3. Pielietojot simpleksmetodi, iegūst secīgas tabulas (angl.: successive tableaux): P1 P2 P3 P1 P2 P3 P3 2 2/3 1 1/3 0 1/3 P3 11/4 0 1 ½ −¼ ¼ −3 8/3* 0 −2/3 1 1/3 P2 −9/8 1 0 −¼ 3/8 1/8

1 −1/3 0 1/3 0 1/3 5/8 0 0 ¼ 1/8 3/8 Optimālais risinājums maksimproblēmai ir P = (0; 1/8; ¼ ), bet duālajai minimproblēmai: Q = ( ¼ ; 1/8 ); v* = 3/8. Lai aprēķinātu optimālo stratēģiju sākotnējai matricspēlei, pielieto sekojošas formulas: p0 = Q / v*; q0 = P / v*; v = 1 / v* − k. Tātad p0 = (2/3; 1/3), q0 = (0; 1/3; 2/3), v = 8/3 − 3 = −1/3. Spēlē priekšrocības ir otrajam spēlētājam C. Matricspēles (2 × m) un (m × 2) Iepriekšējai matricspēlei A = 3 −1 0 −2 1 –1

56

Page 57: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

atrod spēlētāju optimālās stratēģijas p0, q0 un spēles cenu v ar citu paņēmienu. Pieņem, ka p0 = (x; 1 − x). Izmanto faktu, ka spēles matricai A ar izmēru (m × n ) ir spēkā sekojošas izteiksmes: p0A ≥ (v, v, …, v), ( 1 ) q0AT ≤ (v, v, …, v), ( 2 ) kur iekavās pirmajā gadījumā uzrādīts vektors ar garumu m, bet otrajā gadījumā – ar garumu n. Apzīmējums AT attiecas uz matricai A transponēto matricu. No izteiksmes (1) seko: 3x −2(1 − x) ≥ v; v ≤ 5x − 2; −x + (1 − x) ≥ v; v ≤ −2x + 1; 0 − (1 − x) ≥ v jeb v ≤ x − 1. Zīmējumā 10-3 parādītas trīs lineāru nevienādību robežtaisnes intervālā (0; 1). Maksimālā vērtība pieļaujamam apgabalam ir robežpunktā W, ko veido taisnes v = −2x + 1 un v = x - 1, krustojoties punktā x = 2/3; v = −1/3. Tātad spēles vērtība ir v = −1/3, un optimālā stratēģija spēlētājam R vienāda ar p0 = (2/3; 1/3). v 2 1 v=−2x+1 0,5 v=5x−2 O 0,5 1 x v=x−1 W −1 pieļaujamais apgabals −2 Zīm 10-3. Triju lineāru nevienādību robežtaisnes segmentāā x ∈ [0; 1]. Lai atrastu optimālo stratēģiju spēlētājam C, saskaņā ar izteiksmi (2) var izmantot nosacījumus q0AT ≤ (−1/3; −1/3; −1/3). Redzams, ka zīmējumā punkti, kuros taisnes krusto vertikālos nogriežņus x = 0 un x = 1, norāda uz matricas A kolonām. Divas līnijas, kas nosaka punktu W, atbilst matricas A otrajai un trešajai kolonai. Tātad pirmo kolonu var atmest. Iegūst spēli (2 × 2):

57

Page 58: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

A* = −1 0 1 −1 . Saskaņā ar teorēmu par matricspēles (2 × 2) risinājumu: v* = −1/3; p0* = (2/3; 1/3); q0* = (1/3; 2/3). Tad spēlētājam C optimālā stratēģija spēlē A ir q0 = (0; 1/3; 2/3). Spēles cena v* = v = −1/3 un spēlētāja R optimālā stratēģija ir p0 = p0* = (2/3; 1/3). Uzdevums 10-1: Atrast spēles cenu un optimālās spēlētāju stratēģijas spēlei 2 1 −1 A = −1 2 −1 −1 −1 0 . Uzdevums 10-2: Atrast spēles cenu un optimālās stratēģijas spēlei −1 5 1 −2 A = 1 −3 −2 5 . Uzdevums 10-3: Diviem spēlētājiem R un C ir ASV monētas daims (angl.: dime) (10 centi) un quarter (25 centi). Viņi abi uzrāda kādu no tām vienlaicīgi. Ja monētu vērtība sakrīt, to (vienu monētu spēlētāja C rokā) vinnē spēlētājs R. Ja nauda atšķiras, vinnētājs ir spēlētājs C. Attēlot spēli kā matricspēli un atrast optimālās stratēģijas spēlētājiem, kā arī noteikt spēles cenu! Uzdevums 10-4: Diviem spēlētājiem R un C ir ASV monētas: penijs (1 cents), niķelis (5 centi) un daims (10 centi). Tie uzrāda kādu no naudiņām vienlaicīgi. Ja summa ir pāru skaitlis, pretinieka uzrādīto naudu vinnē spēlētājs R, ja nepāru skaitlis – vinnē C. Attēlot spēli kā matricspēli un atrast optimālās stratēģijas spēlētājiem, kā arī noteikt spēles cenu!

58

Page 59: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

11. Maršrutizācija Saule mijas ar ēnām, un apskaidrība nāk lēnām. The minute you start talking about what you’re going to do if you lose, you have lost /George P. Shultz/. Apskata dažādus auto pārvadājumu uzdevumus, t.i., tādus uzdevumus, ko bieži risina autotransporta uzņēmuma (ATU) dispečers. Kaut arī ne vienmēr izdodas atrast uzdevuma optimālo risinājumu, kas garantē maksimālu degvielas ekonomiju, minimālu nobrauktā ceļa garumu u.t.t., tomēr bieži iespējams sasniegt kvazioptimālu (tuvu optimālajam) risinājumu. Sakarā ar to, ka šādi ATU dispečera uzdevumi praksē var stipri atšķirties viens no otra, ne visus tos iespējams detalizēti aplūkot un iztirzāt. Piemērs 11-1: Dots tīkls (grafs) ar šķautņu svariem (km). Grafa virsotnes attēlo vietas (punktus), kurp jānogādā krava. No bāzes A krava jānogādā 11 citos punktos. Punktā A savukārt jāatved tukšā tara. Kravas automašīnas ietilpība 250 vienības. Darba uzdevumu nosacījumi atspoguļoti tabulā 11-1. Tabula 11-1. Punkti B C D E F G H I J K L Ievest (vienības) 60 30 10 50 100 60 20 40 30 40 40 Izvest (vienības) 60 80 20 70 − 100 10 40 30 − 70 Ceļu tīkla neorientēts grafs, kas parādīts zīmējumā 11-1, ir sekojošais: AC 11, AE 5, AF 7, AG 6, AI 5, AL 6, AH 11, EF 3, ED 4, EC 4, CD 2, CB 3, DB 2, DF 4, BF 4, FG 5, HG 7, HI 10, HK 7, HJ 6, HL 6, IL 6, IJ 5, IK 3, IG 5, GJ 7, GK 6, JK 2, LJ 5 (attālumi kilometros). F B 4 5 G 7 H 3 7 7 2 4 5 6 J 6 10 4 E 7 6 K 2 3 D 3 5 5 6 6 2 4 5 I L 5 6 11 C 11 A Zīm.11-1. Ceļu shēma starp autotransporta uzņēmuma bāzi un 11 punktiem ar attālumiem kilometros. Izmantojot skopo algoritmu, var uzzīmēt grafa minimālo pārklājošo koku, kurš ir, piemēram, CD, DB, DE, FE, AE, FG, GI, IK, KJ, JK, JL ar kopīgo garumu 42 km. Bet tas maz ko palīdz uzdevuma risinājumā. Pārvadājumu shēmas sadalīšana daļās Vispirms noskaidro apakšējo novērtējumu nepieciešamo maršrutu skaitam. Saskaitot skaitļus tabulas 11-1 rindā, iegūst summu 480. Redzams, ka no punkta A uz pārējiem

59

Page 60: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

punktiem jāizvadā 480 kravas vienību. Tā kā auto kravnesība ir 250 vienības, tad nepieciešami vismaz divi braucieni (divi maršruti). Novērtējot tabulā uzrādītos skaitļus, var shēmas punktus sadalīt divās daļās (punkti B, C, D, E, F un G, H, I, J, K, L), kur katru no daļām ir cerība apbraukt vienā maršrutā. Tomēr šādu sadalījumu vēl jāpamato ar aprēķiniem. Pirmo maršrutu jāuzsāk, izbraucot no punkta A ar 250 kravas vienībām, otro − ar 230 vienībām. Maršruta noskaidrošanai var izmantot šķautņu un robežu metodi (uzdevumu par ceļojošo tirgotāju). Tomēr aprēķini šeit samērā darbietilpīgi (tie nav piemērpti vienkāršam ATU dispečeram). Tāpēc lieto summu metodi. Apskata tīkla daļu, kas satur punktus A, B, C, D, E, F. Veidojas tabula 11-2, kur pēdējā kolona satur summu mazākajiem attālumiem no šiem punktiem līdz pārējiem punktiem. Tabula 11-2. A 11 9 9 5 7 41 B 3 2 6 4 26 C 2 4 6 24 D 4 4 21 E 3 22 F 24 Tabulā jeb matricā uz galvenās diagonāles izvietoti shēmas punktu apzīmējuma burti, bet pa kreisi no tiem skaitļi nav rakstīti. Iztrūkstošos skaitļus simetriskajai matricai var viegli atrast kolonā virs attiecīgā burta. Redzams, ka trīs lielākās summas atbilst punktiem A, B, C. No šiem punktiem veido sākotnējo maršrutu A, B, C, A, kura garums ir 11 + 3+ 9 = 23 (km). Saprotams, ka pretēja virziena maršrutam A, C, B, A ir tas pats garums. Nākošais mezgls ar lielāko summu (pēc kārtas) ir F. Jānoskaidro, kur to ieslēgt. Apskata pārus AB, BC, CA. Nosaka ceļa pieaugumu, ieslēdzot punktu F: ∆AB = −|AB| + |AF| + |FB| = −11 + 7 + 4 = 0. Tas ir minimālais ceļa pieaugums, un lielumus ∆BC = −|BC| + |BF| + |FC| = −3 + 4 + 6 = 7 un ∆BC = −|AC| + |CF| + |FA| = −9 + 6 + 7 = 4 nav nepieciešams vairs rēķināt. Esam izvēlējušies maršrutu A, F, B, C, A ar ceļa garumu 23 km. Nākošais punkts ar maksimālo summu ir E. Aprēķina pieaugumus ceļa garumam atkarībā no punkta E atrašanās vietas: ∆AF = −|AF| + |AE| + |FF| = −7 + 5 + 3 = 1; ∆ FB = −|FB| + |FE| + |EB| = −4 + 3 + 6 = 5; ∆ BC = −3 + 6 + 4 = 7; ∆CA = −9 + 4 + 5 = 0 (min). Ir izvēlēta sekojoša punktu secība: A, F, B, C, E, A. Jānoskaidro vēl, kur novietot punktu D: ∆ AF = −7 + 9 + 4 = 6; ∆ FB = −4 + 4 + 2 = 2; ∆ BC = −3 + 2 + 2 = 1 (min); ∆ CE = −4 + 2 + 4 = 2; ∆ EA = −5 + 4 + 9 = 8. Tātad maršruts ir shēmas punktu secība A, F, B, D, C, E, A ar garumu 24 km. Tabula 11-3 rāda, ka šajā maršrutā iespējams vienlaicīgi pievest un aizvest kravas. Turpretī, izvēloties auto maršrutam pretējo kustības virzienu A, E, C, D, B, F, A, punktā E būtu jāsaskaras ar auto celtspējas pārkāpumu (automašīnā punktā E atrastos 270 kravas vienības), kas nav pieļaujams.

60

Page 61: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Tabula 11-3. Maršruta punkti A F B D C E A Auto krava 250 150 150 160 210 230 230 Līdzīgu aprēķinu jāveic otrajam maršrutam, kas aptver punktus A, G, H, I, J, K, L. Tabulā 11-4 attēlota īsāko ceļu attālumu tabula šajā gadījumā. Tabula 11-4. A 6 11 5 10 8 6 46 G 7 5 7 6 11 47 H 10 6 7 6 47 I 5 3 6 34 J 2 5 35 K 7 33 L 41 Sākotnējais maršruts ir A, G, H, A ar garumu 6 + 7 + 11 = 24 (km). Kā ceturto punktu izvēlas L, kuram pieaugumi ir: ∆AG = −6 + 6 + 11 = 11; ∆GH = −7 + 11 + 6 = 10; ∆ HA = −11 + 6 + 6 = 1 (min). Iegūst punktu virkni: A, G, H, L, A (25 km). Tālāk izvēlas: punktu J novietojumu. No ceļa garuma pieaugumiem ∆AG = −6 + 10 + 7 = 11; ∆GH = −7 + 7 + 6 = 6; ∆HL = −6 + 6 + 5 = 5 (min); ∆LA = −6 + 5 + 10 = 9 izriet, ka shēmas punktu virkne ir A, G, H, J, L, A (30 km). Kā nākošo maršrutā iekļauj punktu L, kuram ceļa garumu pieaugumi: ∆AG = −6 + 5 + 5 = 4 (min); ∆GH = −7 + 5 + 10 = 8; ∆HJ = −6 + 10 + 5 = 9; ∆JL = −5 + 5 + 6 = 6; ∆LA = −6 + 6 + 5 = 5. Iegūta shēmas punktu virkne A, I, G, H, J, L, A (34 km). Vēl jānoskaidro punkta K novietojumu punktu virknē: : ∆AI = −6 + 8 + 3 = 5; ∆IG = −5 + 3 + 6 = 4; ∆GH = −7 + 6 + 7 = 6; ∆HJ = −6 + 7 + 2 = 3 (min); ∆JL = −5 + 2 + 7 = 4; ∆LA = −6 + 7 + 8 = 9. Līdz ar to aprēķināts 37 kilometrus garš pārvadājumu maršruts A, I, G, H, K, J, L, A. Tabula 11-5 ļauj noskaidrot, vai iespējams vienlaicīgi pievest un aizvest kravas šajā maršrutā. Tabula 11-5. Maršruta punkti A I G H K J L A Auto krava 230 230 270 Maršruta punkti A L J K H G I A Auto krava 230 260 Redzams, ka aprēķinātajā maršrutā abos virzienos auto pārslogots.

61

Page 62: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Maršruta pārrēķins Mēģina mainīt otro maršrutu (šeit no bāzes A jāizved 230, bet jāieved tajā 250 kravas vienību). Redzams, ka sākotnēji neizdevīgi ir apmeklēt punktus G un L, kur kravas lielums pieaug attiecīgi par 40 un 30 vienībām. Šos punktus iekļauj maršrutā tikai tā beigās. Kopā ar punktu A izvēlas divus punktus ar lielākajām summām (tie nevar būt G vai L). Tātad sākotnējā punktu virkne ir: A, H, J, A ar garumu 27 km. Noskaidro, kur šajā virknē iekļaut punktu I: ∆AH = −11 + 5 + 10 = 4; ∆HJ = −6 + 10 + 5 = 9; ∆JA = −10 + 5 + 5 = 0 (min). Izveidojas punktu virkne A, H, J, I, A, kurai atbilstošās kravas ir 230; 220; 220; 220; 220 vienību lielas. Jānoskaidro, kur virknē iekļaut punktu K: ∆AH = −11 + 8 + 7 = 4; ∆HJ = −6 + 7 + 2 = 3; ∆JI = −5 + 2 + 3 = 0 (min). Veidojas punktu virkne A, H, J, K, I, A, kurai atbilstošās kravas ir: 230; 220; 220; 180; 180; 180. Punktu L virknē var ievietot, sākot no punkta J. Rēķina ceļa pieaugumus: ∆JK = −2 + 5 + 7 = 10; ∆KI = −3 + 7 + 6 = 10; ∆IA = −5 + 6 + 6 = 7 (min). Iegūst punktu virkni A, H, J, K, I, L, A (34 km), kurai atbilstošie kravu lielumi ir: 230, 220, 220, 180, 180, 210, 210. Vēl jānoskaidro, kurā vietā, sākot no punkta K, var novietot punktu L: ∆KI = −3 + 6 + 5 = 8 (min); ∆IL = −6 + 5 + 11 = 10; ∆LA = −6 + 11 + 6 = 11. Maršruta A, H, J, K, G, I, L, A garums 42 km. Kopīgais abu maršrutu garums ir 65 kilometri. Uzdevums 11-1: No bāzes A ar auto , kura celtspēja ir 250 vienības, punktos B, C, D, E, F, G, H, I, J, K, L jānogāda un no turienes jāizved sekojošs daudzums kravas vienību: Punkti B C D E F G H I J K L Ievest (vienības) 70 40 20 90 50 30 30 50 20 50 30 Izvest (vienības) 70 50 10 − 80 10 30 40 20 − 50 Ceļu tīkla grafs ir iepriekš apskatītais, tikai ar citiem šķautņu svariem: AC 10, AE 7, AF 9, AG 8, AI 4, AL 7, AH 13, EF 3, ED 2, EC 5, CD 2, CB 4, DB 2, DF 4, BF 3, FG 4, HG 7, HI 9, HK 7, HJ 5, HL 3, IL 6, IJ 3, IK 2, IG 5, GJ 8, GK 4, JK 3, LJ 2 (attālumi kilometros). Atrast optimālajiem tuvus auto pārvadājumu maršrutus! Maršruti dažādu kravu pārvadāšanai Piemers 11-2: Dota ceļu shēma (skat. zīm. 11-2) starp autotransporta uzņēmumu (ATU), četriem piegādātājiem A1, A2, A3, A4 un pieciem patērētājiem BB1, B2B , BB3, B4B , BB5. Autotransporta uzņēmuma (ATU) rīcībā ir automašīnas ar celtspēju 4,5 t, kas paredzētas dažādu kravu pārvadāšanai. No piestātnes A1 uz celtni B1B jānogādā 67,5 t grants (15 auto braucieni). No ogļu noliktavas A2 uz piena kombinātu BB2 jānogādā 45 t ogļu (10 braucieni) un uz apavu fabriku B3 B – 90 t ogļu (20 braucieni). No karjera A3 uz piestātni BB4 jāved 135 t šķembu (30 braucieni). No mēbeļfabrikas A4 uz celulozes rūpnīcu B5B jānogādā 22,5 t zāģskaidu, kurām jāparedz divkārt lielāks tilpums kravu pārvadāšanai, tāpēc nepieciešami 10 braucieni. Punkts C shēmā ir vienkārši ceļu krustojums, bet starp punktiem A1 un BB4 piestātnē attālums 0 km. Automašīnās var iekraut dažāda veida kravas, izvadājot tās no piegādātāja līdz patērētājam. Uzdevuma nostādne: noteikt kārtību, kā auto pēc izkraušanas sūtīt uz nākošo iekraušanu, lai kopējais nobrauciens bez kravas būtu minimāls.

62

Page 63: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Aprēķinot nepieciešamo auto braucienu skaitu, iespējams risināt lineārās programmēšanas transporta uzdevumu ar matricu C (4 × 5). Ceļu matrica ar attālumiem kilometros starp piegādātājiem un patērētājiem ir sekojoša: BB1 B2 B BB3 B4 B BB5 11 10 12 0 17 A1 M = 5 4 15 6 20 A2 22 13 10 18 5 A3 16 15 17 5 22 A4 Šos attālumus var viegli noteikt zīmējumā. © BB1 5 A2 BB2

3 © A3 4 3 10 ATU 5 C 6 © BB5 8 8 5 © BB3 A1 12 © 5 BB4 A4 Zīm. 11-2. Ceļu shēma. Tabulā 11-6 parādīts veicamo darbu saraksts. Tabula 11-6. Piegādātājs Patērētājs Vajag Braucienu skaits A1: piestātne BB1: jaunceltne 67,5 t smilšu 15 A2: ogļu noliktava BB2: piena kombināts 45 t ogļu 10 BB3: apavu fabrika 90 t ogļu 20 A3: grantskarjers BB4: piestātne 135 t grants 30 A4: mēbeļu fabrika BB5: celulozes rūpnīca 22,5 t zāģskaidu (trans- 10 porta divkāršs tilpums)

63

Page 64: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Sastāda pārvadājumu matricu, kas satur braucienu skaitu, attālumu kilometros. Tā attēlota tabulā 11-7. Tabula 11-7. v u 5 4 15 6 10 6 11 10 12 15 0 17 15 A1 0 15 5 10 4 0 15 5 6 20 30 A2 5 22 13 20 10 18 10 5 30 A3 1 16 15 17 10 5 22 10 A4 15 BB1 10 B2B 20 BB3 30 B4B 10 BB5 85 Pēc minimālā elementa paņēmiena transportuzdevumam nosaka pārvadājumu plānu. Aizpildīto rūtiņu skaits ir 7. Lai šo skaitli palielinātu līdz 9 – 1 = 8, ieraksta nulli otrās rindas trešajā rūtiņā. Aprēķina potenciālus. Lai vieglāk būtu tos izskaitļot, ņem u2 = 0, jo šajā rindā maksimāls aizpildīto rūtiņu skaits. Tad v1 = 5, v2 = 4, v3 = 15, v4 = 6. Tālāk aprēķina: u1 = 6, u3 = 5, v5 = 10, u4= 1. Pārbauda tukšās rūtiņas, noskaidrojot, vai plāns optimāls: α12 = 4 – 6 – 10 < 0; α13 = 15 – 6 – 12 < 0; α15 = 10 – 6 – 17 < 0; α25 = 10 – 20 < 0; α31 = 5 – 5 – 22 < 0; α32 = 4 – 5 – 13 < 0; α34 = 6 – 5 – 18 < 0; α41 = 5 – 1– 16 < 0; α42 = 4 – 1 – 15 < 0; α43 = 15 – 1 – 17 < 0; α45 = 10 – 1 – 22< 0. Plāns ir optimāls, bet jānosaka vēl optimālie (pseidooptimālie) automaršruti, ievērojot ceļu shēmu. Zināms, ka punktā B auto izkrauj, un to nepieciešams nosūtīt uz kādu no punktiem A, lai atkal piekrautu. Nav grūti pamanīt maršrutu 1: No ATU automašīna dodas uz punktu A2, kur uzņem kravu un ved to uz BB2. Pēc izkraušanas auto dodas uz punktu A2, tā veicot desmit pārvadājumus pirms atgriežas autotransporta uzņēmumā (skat zīm. 11-3). Izslēdz no turpmākas apskates rūtiņu C22, t.i., A2B2B . A2 10× BB2

3 © 4 10× ATU Zīm. 11-3. Pirmais maršruts (10 kravas A2 → BB2). Tālāk veido četrstūrus, kur virsotnes atrodas aizpildītajās rūtiņās. Maršrutā 2 izmanto rūtiņas C23, C33, C34, C24, t.i., A2BB3, A3B3B , A3BB4, A2B4B jeb ceļu A2, BB3, A3, B4B , A2, kurā iespējams veikt ciklu piecas reizes (skat zīm. 11-4). A2 3 15 18 A3 ATU 6 10 BB4 © © B3B

Zīm. 11-4. Otrais maršruts (5 kravas A2 → BB3, 5 kravas A3 → B4B ).

64

Page 65: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Maršrutā 3 apskata rūtiņas C34, C44, C45, C35, t.i., A3BB4, A4B4B , A4BB5, A3B5B jeb ceļu A3, BB4, A4, B5B , A3, kurā iespējams veikt ciklu desmit reizes (skat zīm. 11-5). ATU A3 18 10 × 5 5 BB4 A4 © 22 10× © BB5 Zīm. 11-5. Trešais maršruts (10 kravas A3 → BB4, 10 kravas A4 → B5B ). Turpmāk transportshēmā nav iespējams veikt pārvadājumus, izmantojot četras rūtiņas, bet var organizēt maršrutu 4 izmantojot sešas rūtiņas C11, C21, C23, C33, C34, C41, t.i., A1BB1, A2B1B , A2BB3, A3B3B , A3BB4, A1B4B . Apbraucot punktus A1, BB1, A2, B3B , A3, BB4, A1, veic ciklu piecpadsmit reizes (skat. zīm. 11-6). 15× © BB1 11 A2 A3 15 18 ATU 10 15× 15× A1 © BB4 © B3B

Zīm. 11-6. Ceturtais maršruts (15 kravas A1 → BB1, 15 kravas A2 → B3B , 15 kravas A3 → BB4). Veidotie maršruti atbilst piegādātāju un lietotāju jaudām A1 15 BB1 15 A2 10 + 5 + 15 = 30 BB2 10 A3 5 + 10 + 15 = 30 BB3 5 + 15 = 20 A4 10 BB4 5 + 10 + 15 = 30 BB5 10 Dažādu transportlīdzekļu izmantošana maršrutos Piemers 11-3: Trīs klienti BB1, B2B , BB3 katru dienu no noliktavām A1, A2, A3 pasūta sekojošas kravas (klientiem ir iespēja noteikt arī, ar kāda veida auto kravas piegādāt). ATU dispečera stratēģija ir tāda, ka viņš nozīmē katru dienu uz A1 20 A tipa auto, uz A2 15 A tipa auto un 15 B tipa auto, bet uz A3 10 A un 10 B tipa auto, lai tie vienlaicīgi varētu iesaistīties klientu pasūtījumu piegādāšanā. Klientam B1B jāpiegādā 80 t ar A tipa auto, klientam BB2 – 120 t ar A tipa auto un 230 t ar A vai B tipa auto, klientam B3B – 100 t ar B tipa auto. Viena brauciena laikā A tipa automašīna spēj pārvadāt 8 t un tās 1 km nobrauciena izmaksas ir 16 santīmi. Turpretī B tipa automašīnas parametri ir 10 t un 23 santīmi par kilometru. Attālumi kilometros no noliktavām līdz klientiem doti tabulā 11-8.

65

Page 66: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Tabula 11-8. 10 16 8 A1 7 10 5 A2 5 12 15 A3 BB1 B2B BB3 Tabulā 11-9 norādītas pašizmaksas 1 t kravas nogādāšanai ar A tipa auto pie klientiem, bet tabulā 11-10 – pašizmaksas B tipa automašīnai. Tabula 11-9. Tabula 11-10. A) B) 20 32 16 A1 160 t 23 37 18,5 A1 0 t 14 20 10 A2 120 t 16 23 11,5 A2 150 t 10 24 30 A3 80 t 11,5 27,6 34,5 A3 100 t 80 120+x 0 0 230 − x 100 BB1 B2B BB3 B1B BB2 B3B Ar minimālā elementa paņēmienu risina divus transportuzdevumus. Pie tam A) daļā uzdevums reducējas uz matricu ar izmēru (3 × 2), bet B) daļā – uz matricu (2 × 2). Pirmajam uzdevumam (skat. tabulu 11-11) rūtiņu C32 ieved plānā, lai varētu aprēķināt potenciālus. Tabula 11-11. Tabula 11-12. v1=18 v2=32 v2=23 v3=11,5 A) B) u1=0 20 32(80) 16 A1(160) 23 37 18,5 A1 ( 0) u2=12 14 20(120) 10 A2 (120) u2=0 16 23(50) 11,5(100) A2 (150) u3=8 10(80) 24(0) 30 A3 (80) u3=−4,6 11,5 27,6(100) 34,5 A3 (100) 80 120+x 0 0 230 − x 100 BB1 B2B BB3 B1B BB2 B3B Potenciālus rēķina tikai tām rindām, kas atbilst noliktavām ar preci, un tām kolonām, kur klientam ir pasūtījums. Pārbauda tukšās rūtiņas pirmajā uzdevumā: α11 = 18 – 0 – 20 < 0; α21 = 18 – 12 – 14 < 0. Tātad pārvadājumu plāns optimāls. Līdzīgi tas optimāls arī otrajā uzdevumā (skat. tabulu 11-12), kur α33 = 11,5 + 4,6 – 34,5 < 0. No noliktavas A1 nepieciešami 10 A tipa auto braucieni, un vēl 10 ir rezervē. No noliktavas A2 veic 15 braucienus ar A tipa un 15 ar B tipa auto, bet no A3 – 10 braucienus ar A un B tipa automašīnām. Uzdevums 11-2: Trīs preču noliktavas apgādātas ar autotransportu sekojoši: A1 – 25 A tipa auto, kur katram celtspēja 10 t; A2 – 10 A tipa auto un 20 B tipa auto, kur katram celtspēja 15 t; A3 – 15 A tipa auto un 15 B tipa auto. A tipa automašīnai 1 t. km pārvadājumi izmaksā 3 sant., bet B tipa auto tie sastāda 4 sant. Attālums (km) no četrām noliktavām līdz 3 klientiem:

66

Page 67: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

10 16 10 8 7 20 13 6 9 8 15 7 . Klientu pieprasījumi: BB1 – 150 t piegāde ar A tipa auto; B2 B – 100 t piegāde ar A tipa auto un 105 t − ar B tipa auto; BB3 – 200 t piegāde ar A tipa auto un 195 t − ar B tipa auto; B4 B – 210 t piegāde ar B tipa auto. Noteikt optimālos braucienus pie klientiem! Cik autotransporta jaudu paliek rezervē konkrētajā noliktavā? Apskata vēl vienu uzdevumu par maršrutizāciju. Piemērs 11-4: Autotransporta uzņēmuma (ATU) dispečeram jāizlemj, kā vislabāk noslogot automašīnas, autokrāavējus, autokrānus un stacionāros krānus. Pavisam ir trīs maršruti, kuriem laika patēriņu stundās uzrāda tabula 11-13. Tabula 11-13. Maršruts 1 2 3 Auto 400 100 100 Autokrāni − 20 20 Autoiekrāvēji 60 30 − Stacionārie krāni 8 − − Lielāko no skaitļiem katram maršrutam uzskatot par vienu vienību, pārrēķina tehniskos koeficientus (attiecības) maršrutiem. Tabulas 11-14 kolonās atsevišķiem maršrutiem norādīts tehnikas veidu skaits. Tabula 11-14. Maršruts 1 2 3 Skaits Auto 1 1 1 200 Autokrāni 0 0,2 0,2 24 Autoiekrāvēji 0,15 0,3 0 24 Stacionārie krāni 0,02 0 0 2 Maršrutā 1 uz vienu auto vajag 60 / 400 = 0,15 autoiekrāvējus un 8 / 400 = 0,02 stacionāros krānus. Maršrutā 2 relatīvi vairāk iekārtu: 1 + 0,2 + 0,3 = 1,5 , kas ir vairāk nekā 1 + 0,2 vai 1 + 0,15 + 0,02. Uz šejieni dispečers vispirms sūta tehniku. Pavisam ir 24 autoiekrāvēji. Tie var nodrošināt darbu 24 / 0,3 = 80 automašīnām, un vēl šajā maršrutā izmanto 80⋅0,2 = 16 autokrānus. Paliek pāri 120 auto, 8 autokrāni un 2 stacionārie krāni. Pēc maršruta 2 relatīvi vairāk tehnikas maršrutā 3, bez tam te neizmanto autoiekrāvējus, kuri jau izmantoti. Ir astoņi autokrāni, kas var nodrošināt darbu 8 / 0,2 = 40 automašīnām. Paliek vēl 80 auto un divi stacionārie krāni. Bet pirmajā maršrutā, izrādās, stacionāros krānus bez autoiekrāvējiem izmantot nevar. Iznāk, ka ATU dispečers ar tehnikas sadali pa maršrutiem nav ticis galā. Viegli pārliecināties, ka lineārās programmēšanas uzdevums, kur nezināmie xi (i = 1, 2, 3), xi ≥ 0, norāda auto skaitu maršrutos, ja optimizācijas kritērijs ir Cmax = x1 + x2 + x3 + 0,2 x2 +0,2 x3 + 0,15x1 +0,3 x2 +0,02 x1 = 1,17x1 + 1,5x2 +1,2 x3, bet ierobežojumi

67

Page 68: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

x1 + x2 + x3 ≤ 200; 0,2 x2 + 0,2 x3 ≤ 24; 0,15x1 +0,3 x2 ≤ 24; 0,02 x1 ≤ 2 . Risinot šo LP uzdevumu ar simpleksmetodi, iegūst tabulā 11-15 parādīto tehnikas sadali maršrutos, kur visa tehnika izmantota. Tabula 11-15. Maršruts 1 2 3 Skaits Auto 80 40 80 200 Autokrāni 0 8 16 24 Autoiekrāvēji 12 12 0 24 Stacionārie krāni 1,6 0 0 2 Saprotams, ka skaitlis 1,6 jānoapaļo uz 2.

68

Page 69: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

12. Uzdevums par mugursomu Kad košais pavasaris nāk, Tad aprēķini sajukt sāk; Bet arī slapjā rudenī Tiem visi gali ūdenī. My formula for success? Rise early, work late, strike oil /Jean Paul Getty/. Ja līdz šim apskatītos nelineārās programmēšanas uzdevumus un metodes var droši izvietot NLP celtnes pamatstāvā, tad lineārās programmēšanas uzdevumiem un metodēm vieta alegoriski būtu celtnes pagrabstāvā, kur arī iekārtojama spēļu istaba. Turpretī uzdevums par mugursomas sakravāšanu, kas risināms ar dinamiskās programmēšanas paņēmieniem, izvietojams NLP celtnes bēniņos. Uzdevumam par mugursomu, tāpat kā kombinatorikā risināmiem piemēriem par īsākā ceļa atrašanu, ir daudz pielietojumu. Uzdevumam ir vienkārša struktūra un tikai viens ierobežojums, tas attiecināms uz veselo skaitļu programmēšanu. Uzdevums formulēts šādi. Tūristam, dodoties ceļojumā, jāizlemj, kādus priekšmetus ņemt līdz. Katram priekšmetam savs svars un vērtība (cena). Prasības: a) lai mugursomas kopējais svars (ar priekšmetiem) nepārsniegtu kādu uzdotu lielumu S; b) lai priekšmetu kopējā cena jeb vērtība būtu vislielākā. Ar aj , kur j pieņem vērtības no 1 līdz n, apzīmē j-tā priekšmeta svaru. Ar cj apzīmē j-tā tipa priekšmeta cenu, bet ar xj – izvēlēto j-tā tipa priekšmetu skaitu. Lielumi xj, cj, aj, S ir veseli, pozitīvi skaitļi, kas nemazina uzdevuma vispārīgo raksturu un nozīmību. Tātad, jāatrod maksimālo vērtību mērķa funkcijai max f = ∑n cj xj, ievērojot ierobežojumu svaram ∑n aj xj ≤ S, j=1 j=1

kur xj, cj, aj, S - veseli, pozitīvi skaitļi. Risinot uzdevumu, definē satura vērtības funkciju ψk(y) sekojoši: ψk(y) = max ∑k cj xj (1≤ k ≤ n), kur ∑k aj xj ≤ y (0 ≤ y ≤ S). j=1 j=1

Funkcija ψk(y) ir mērķa funkcijas maksimālā vērtība, kad priekšmetus izvēlas no pirmajiem k tipiem, bet kopīgo izvēlēto priekšmetu svaru ierobežo lielums y (0 ≤ y ≤ S). Pieņem, ka ψo(y) = 0 visiem y (0 ≤ y ≤ S), kas atbilst gadījumam, kad nav izvēlēts neviens priekšmets; ψk(0) = 0 visiem k (0 ≤ k ≤ n) – atbilstoši gadījumam, kad kopīgais mugursomas (priekšmetu) svars vienāds ar 0. Acīmredzot, ψ1(y) = [y / a1] ⋅ c1 , kur [y /a1] ir veselā daļa no dalījuma y / a1, kas atbilst situācijai, kad mugursomā liek pēc iespējas vairāk pirmā tipa priekšmetu. Vispārīgi, kad k ≥ 1, funkcijai ψk(y) spēkā sekojoša sakarība: ψk(y) = max {ψk-1(y); ψk(y − ak) + ck) . ( 1 ) To viegli pamatot. Kad, iegūstot ψk(y), priekšmetus izvēlas no pirmajiem k veidiem, tad k-tā tipa priekšmetu vai nu izvēlas, vai neizvēlas. Ja to neizvēlas, tad ψk(y) = ψk-1(y). Bet, ja k-tā tipa priekšmets izvēlēts vismaz vienu reizi, tad pārējo priekšmetu svaru ierobežo lielums y – ak. Maksimālā vērtība mērķa funkcijai, kuru var iegūt, izmantojot pirmo k tipu priekšmetus pie ierobežojuma y – ak, apzīmēta ar ψk(y – ak). Var sastādīt tabulu lielumiem ψk(y) ar n rindām un S kolonām, kur k = 1, 2, …, n; y = 1, 2, …, S. Ja y < 0, rēķinot pēc formulas (1), ņem ψk(y) vērtību, vienādu ar pietiekoši

69

Page 70: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

lielu negatīvu skaitli. Kad pirmā tabula ar izmēru (n × S) aizpildīta, vēl jāparedz, kā noteikt xj vērtības, kuras nosaka lielumus ψk(y). Izmanto vēl vienu tabulu ar izmēru (n × S), kuras elementi ir i(k, y). Vienādība i(k, y) = j nozīmē to, ka vismaz vienu j-tā tipa priekšmetu ieliek mugursomā. Pirmā rinda otrajā tabulā aizpildās sekojoši: i(1, y) = 0, ja ψ1(y) = 0; 1, ja ψ1(y) > 0. Pārējo elementu aprēķina kritērijs ir šāds: i(k, y) = i(k −1, y), ja ψk-1(y) > ψk(y − ak) + ck ; k, ja ψk-1(y) ≤ ψk(y − ak) + ck. ( 2 ) Katru nākošo rindu tabulās aizpilda, izmantojot informāciju tikai par iepriekšējo tabulas rindu. Tas algoritmu vienkāršo, jo izvēlēto priekšmetu (mugursomas satura) vērtība var tikai pieaugt, pieaugot tabulas rindas numuram. Ērta ir (k−1) – ās rindas elementa ψk-1(y) “aizmiršana”, tikko aprēķināts elements ψk(y) nākošajā rindā. Piemērs 12-1: Ir četru veidu priekšmeti (n = 4), tātad tabulās jāaizpilda četras rindas. Maksimālais, pieļaujamais mugursomas svars ir S =10, t.i., tabulās jāaizpilda 10 kolonas. Uzrādīts sekojošs novērtējums par priekšmetu svaru un to vērtību: Priekšmeta svars ai (vienības) 2 3 4 7 Priekšmeta vērtība (cena) ci 1 3 5 9 Viegli konstatēt, ka abu veidojamo tabulu pirmās kolonas satur nulles elementus: nav iespējams izvēlēties priekšmetu ar svaru 1 (skat. tabulu 12-1 un tabulu 12-2). Pirmā tabula atbilst ψk(y) vērtībām, kur k – tabulas rinda, bet y – svars, kas atbilst tabulas kolonai. Otrā tabula satur i(k, y) vērtības: tā rāda, no kāda veida priekšmetiem veidots mugursomas saturs. Kā jau sagaidāms, maksimālais mugursomas saturs uzrādīts tabulu apakšējā labajā stūrī. Tabula 12-1. Tabula 12-2. k y 1 2 3 4 5 6 7 8 9 10 k y 1 2 3 4 5 6 7 8 9 10 1 0 1 1 2 2 3 3 4 4 5 1 0 1 1 1 1 1 1 1 1 1 2 0 1 3 3 4 6 6 7 9 9 2 0 1 2 2 2 2 2 2 2 2 3 0 1 3 5 5 6 8 10 10 11 3 0 1 2 3 3 3 3 3 3 3 4 0 1 3 5 5 6 9 10 10 12 4 0 1 2 3 3 3 4 3 4 4 Pārbauda tabulās dažus skaitļus. Redzams, ka optimālo risinājumu uzrāda skaitļi i(4, 10) = 4 un ψ4(10) = 12. Tātad vismaz vienu ceturtā tipa priekšmetu jāliek mugursomā. Atņemot šī priekšmeta svaru no argumenta vērtības, iegūst 10 −7 = 3, kas norāda uz nākošo murursomā liekamo priekšmetu: i(4, 3) = 2. Konstatē, ka tajā jāievieto vismaz vienu otrā tipa priekšmetu. Var pārliecināties, ka, izņemot vienu ceturtā tipa un vienu otrā tipa priekšmetu, somā neko citu ielikt nevar, jo i(4, 3-3) = i(4, 0) = 0. Saskaitot vērtību ψ4(3) = c2 = 3 ar vērtību c4 = 9, iegūst maksimālo mugursomas svaru 12.

70

Page 71: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Pārbauda, kāpēc otrās tabulas ceturtajā rindā, astotajā kolonā parādās skaitlis 3. Sastādot tabulas, šajā vietā pēc kritērija (2) izvēlēts lielums 3 no iepriekšējās rindas, jo ψ3(8) > ψ4(8 − 7) + 9 jeb 10 > ψ4(1) + 9 = 0 + 9. Pēc formulas (1) ψ4(8) = max{ψ3(8); ψ4(8 − 7) + 9} = max {10; ψ4(1) + 9} = max {10; 9} = 10. Kāpēc tabulas 12-1 otrajā rindā, trešajā kolonā atrodasir skaitlis 3? Redzams, ka ψ1(3) = 1 < ψ2(3 −3) + 3 = 3. Tāpēc formula (1) liek izvēlēties otro skaitli. Nobeigumā vēl pārdomas par skaitli no trešās rindas un ceturtās kolonas. Šeit izteiksme ψ2(4) = 2 < ψ2(4 − 4) + 5 = 5 pamato otrā skaitļa izvēli. Uzdevums 12-1: Jāsakravā mugursoma optimālā veidā, ja mugursomas svars nedrīkst pārsniegt 12 vienības un pieejami četru veidu priekšmeti ar svariem a1 = 2; a2 = 3; a3 = 5; a4 = 6 un priekšmetu vērtību (cenu) c1 = 2; c2 = 3; c3 = 4; c4 = 7. Aizpildīt divas tabulas!

71

Page 72: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

13. NLP uzdevuma ģeometriskā interpretācija Bija kāds, kas sacīja: Tā ir laba interpretācija. To live only for some future goal is shallow. It’s the sides of the mountain that sustain life, not the top/Robert M. Pirsig/. Līdzīgi kā lineārās programmēšanas (LP) uzdevumiem, arī nelineārās programmēšanas vienkāršākajiem uzdevumiem var izmantot ģeometrisko interpretāciju. Piemērs 13-1: Atrast NLP uzdevuma atrisinājumu, izmantojot uzdevuma ģeometrisko interpretāciju! Optimizācijas uzdevums: max F = x2 – x1

2 + 6x1, kur mainīgie x1, x2 ≥ 0, bet ierobežojumi ir 2x1 + 3x2 ≤ 24; x1 + 2x2 ≤ 15; 3x1+2x2 ≤ 24; x2 ≤ 4. Var pārliecināties, ka pieļaujamais apgabals ir četrstūris OABC (skat. zīm. 13-1). Šajā zīmējumā, aprēķinot atbilstošās argumenta vērtības, parādītas vienādas vērtības (vienāda līmeņa) funkcijas F=9 un F=13. Redzams, ka tās ir parabolas, kuru minimālā vērtība atbilst koordinātei x1 = 3. Tātad maksimālā funkcijas vērtība F* = 13 sasniegta punktā D ar koordinātēm (3; 4) uz pieļaujamā apgabala robežas. x2 12 3x1+2x2 = 24 F =13 F =9 8 4 A D B 2x1 + 3x2 = 24 x1 + 2x2 = 15 C x1 O 3 8 12 15 Zīm. 13-1. Pieļaujamais apgabals OABC un maksimālā vērtība funkcijai F punktā D. Uzdevums 13-1:

a) Atrast NLP uzdevumam minimālo un maksimālo vērtību, izmantojot uzdevuma ģeometrisko interpretāciju! Funkcijas izteiksme ir f = (x1− 4)2 +(x2 – 3)2, kur mainīgie x1, x2 ≥ 0, bet ierobežojumi ir 2x1 + 3x2 ≥ 6; 3x1 − 2x2 ≤ 18; −x1 + 2x2 ≤ 8.

72

Page 73: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

b) Atrast NLP uzdevuma atrisinājumu, izmantojot uzdevuma ģeometrisko interpretāciju! Optimizācijas uzdevums: max f = 3x1 + 4x2 , kur mainīgie x1, x2 ≥ 0, bet ierobežojumi ir x1

2 + x22 ≤ 25; x1 ⋅ x2 ≥ 4.

Piemērs 13-2: Risina NLP uzdevumu (skat. [3], 47. lpp) min f(X) = x1

2 + x2 pie nosacījumiem h1(X) = x1

2 + x22 – 9 = 0;

g1(X) = −(x1 + x22)+1 ≥ 0;

g2(X) = −(x1 + x2) + 1 ≥ 0. Atrodot risinājumu, izmanto uzdevuma ģeometrisko interpretāciju (skat. zīm.13- 2). x2 g2(X) 3 g1(X) h1(X) 2 B(0; 1) C(1; 0) −2 −1 0 1 2 3 x1 −2 A =X* f = 0 −4 f =−1 Zīm. 13-2. NLP uzdevums (min f(X) = x1

2 + x2 pie dotajiem nosacījumiem). Punkts A = X* = (x1*; x2*) = (−2,37; −1,84) uzrāda koordinātes funkcijas lokālai minimālai vērtībai. Aktīvie ierobežojumi ir h1(X) un g1(X). Noskaidrosim, vai gradientvektori no aktīviem ierobežojumiem grad h1(X*) = (2x1*; 2x2* ) un grad g1(X*) = (−1; −2x2* ) ir lineāri neatkarīgi. Tas ļautu pamatoti spriest par punktu A kā uzdevuma atrisinājumu. Tiešām, koordinātēm un divām konstantēm c1 un c2 spēkā izteiksmes 2x1*c1 − c2 = 0; 2x2*c1 – 2x2*c2 = 0 vienīgi tādā gadījumā, ja abas konstantes vienādas ar nulli. Tātad izpildās pirmās un otrās kārtas nosacījumi, kurus analizējot, iespējams izdarīt secinājumus, ka tiešām atrasts uzdevuma atrisinājums [3].

73

Page 74: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Redzams, ka NLP uzdevumi nebūt nav vienkārši un viegli risināmi, bet katrā gadījumā jāizmanto teorētisku atziņu un praktisku algoritmu arsenāls, lai kaut ko sasniegtu. Apskatītais piemērs būtībā ir kvadrātiskās programmēšanas uzdevums, kas detalizētāk aplūkots nākošajā nodaļā.

74

Page 75: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

14. Lagranža reizinātāju metode The best career advice given to the young is ‘Find out what you like doing best and get someone to pay you for doing it’/Katherine Whitehorn/. Apšaubāms padomdevējs arī prot rēķināt. Klasiskais optimizācijas uzdevums Apskata NLP uzdevumu, kas matemātiskās analīzes kursā nosaukts par nosacīto ekstrēmuzdevumu vai par klasisko optimizācijas uzdevumu. Šeit ir vienīgi vienādības tipa ierobežojumi, nav nevienādības tipa ierobežojumu. Nav obligāti nosacījumi xi ≥ 0, t.i., mainīgie var pieņemt arī negatīvas vērtības. Tātad vispārīgajā gadījumā risina uzdevumu f(x1, x2, …, xn) max (min), gi(x1, x2, …, xn) = bi (i =1, .., m). Lai atrastu risinājumu, ieved mainīgos λ1, λ2, …, λm – Lagranža reizinātājus. Sastāda Lagranža funkciju L(x1, x2, …, xn , λ1, λ2, …, λm) = f(x1, x2, …, xn) + ∑m λi(bi – gi (x1, x2,…, xn)). i=1

Atrod parciālos atvasinājumus

∂L / ∂xj = ∂f /∂xj − ∑m λi∂gi / ∂xj = 0 (j =1,…, n); i=1

∂L/∂λi = bi − gi (x1, x2,…, xn ) = 0 (i =1, …, m). Sistēmai ir (n + m) vienādojumi ar (n + m) nezināmajiem. Risinot šo sistēmu, atrod punktu, kur mērķa funkcija iegūst ekstremālo vērtību. Piemērs 14-1: Rūpnīcai jāizgatavo 180 iekārtas. Tās var ražot, izmantojot divus tehnoloģiskos paņēmienus: 1) izmaksas x1 iekārtām ir 10 + 4x1 + x1

2 Ls; 2) izmaksas x2 iekārtām ir 10 + 8x2 +x2

2 Ls. Jānoskaidro, cik iekārtu jāražo ar katru paņēmienu, lai produkcijas izmaksas būtu minimālas. Meklē min f = 20 + 4x1 + x1

2 + 8x2 + x22 pie nosacījumiem x1 + x2 = 180; x1, x2 ≥ 0.

Uzdevuma ģeometriskā interpretācija Vispirms atrod uzdevuma atrisinājumu, izmantojot tā ģeometrisko interpretāciju. Mērķa funkcija ir riņķa līnija ar centru (−2; −4), bet ierobežojums – taisne, kas iet caur punktiem (180; 0), (0; 180) (skat. zīm. 14-1). x2 180 D* = (91; 89); f* = 17 278 89 O 91 180 x1 Zīm. 14-1. Optimālā punkta meklēšana funkcijai f pie nosacījuma x1 + x2 = 180.

75

Page 76: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Optimālais punkts D* = (91; 89), kur riņķa līnija pieskaras taisnei. Kā to atrast? Uzskata, ka x2 ir funkcija no x1, t.i., x2 = g(x1). Diferencējot 20 + 4x1 +x1

2 + 8x2 +x22 , dabū

4 +2x1 + 8x2’+2x2 ⋅ x2’ = 0. Tātad x2’= −(2 + x1) / (4 + x2) = −1 (tāds ir taisnes leņķa koeficients). Iegūst vienu vienādojumu punkta D* noteikšanai: 2 + x1 = 4 + x2 jeb x1− x2 = 2. Ievērojot nosacījumu x1 + x2 = 180, nonāk pie atrisinājuma x1=91; x2=89. Ja 91 iekārtu ražo ar pirmo tehnoloģisko paņēmienu, det 89 iekārtas ar otro paņēmienu, tad izmaksas ir minimālas: f* =17278 Ls. Lagranža reizinātāju metodes pielietojums Risina šo uzdevumu ar Lagranža reizinātāju metodi. Veido Lagranža funkciju (pāriet uz beznosacījumu optimizāciju): L(x1, x2, λ1 ) = 20 + 4x1 + x1

2 + 8x2 + x22 + λ(180 − x1 −x2).

Aprēķina parciālos atvasinājumus un pielīdzina tos nullei: ∂L / ∂x1 = 4 + 2x1 − λ = 0; ∂L / ∂x2 = 8 + 2x2 − λ = 0; ∂L / ∂λ = 180 − x1 − x2 = 0. No pirmā un otrā vienādojuma seko, ka 4 + 2x1 = 8 + 2x2 vai x1 − x2 = 2. Risinot šo vienādojumu kopā ar nosacījumu x1 + x2 = 180, iegūst x1 = 91, x2 = 89. Vai šis ekstremālais punkts ir nosacītā minimālā vērtība? Var izmantot otros parciālos atvasinājumus, kas veido Hesses matricu: ∂2L / ∂x1

2 = 2; ∂2 / ∂x22 =2; ∂2L / ∂λ2 = 0; ∂2L / ∂x1∂x2 = ∂2L / ∂x2∂x1 = 0; ∂2L / ∂x1∂λ =

∂2L / ∂λ ∂x1= −1; ∂2L / ∂x2∂λ = ∂2L/∂λ ∂x2= −1. Ja ņem Hesses matricas determinantu (Hessianu) ar mīnuszīmi, tad iegūst matricu 2 0 –1 − 0 2 −1 = 2 + 2 = 4 > 0. −1 −1 0 Redzams, ka matrica pozitīvi definēta, tātad atrasta lokāla un globāla minimālā vērtība. Uzdevums 14-1: Ar Lagranža metodi atrisināt uzdevumu min f = x1

2 + x22 pie nosacījuma x1 + x2 = 5.

76

Page 77: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

15. Izliektā programmēšana I’m opposed to millionaires, but it would be dangerous to offer me the position /Mark Twain/. Zemeslode ir apaļa, un dzīve ir salda. Šīs nodaļas ietvaros uzmanība pievērsta uzdevumam: max f = 2x1 + 4x2 − x1

2 − 2x22 , kur x1, x2 ≥ 0 un ierobežojumi ir

x1 + 2x2 ≤ 8; 2x1 − x2 ≤ 12. Funkcija f šajā uzdevumā ieliekta (negatīvi definēta) saskaņā ar sekojošu definīciju. Definīcija 1: Kvadrātiska forma F pozitīvi (negatīvi) definēta, ja F(X) > 0 (< 0) visiem X = (x1, x2, …, xn), izņemot X = 0. Dažkārt noderīga vēl sekojoša definīcija. Definīcija 2: Kvadrātiska forma F pozitīvi (negatīvi) pusdefinēta, ja F(X) ≥ 0 ( ≤ 0) visiem X = (x1, x2, …, xn) un, bez tam eksistē tāds mainīgo komplekts X’ = (x1’, x2’, …, xn’), kur ne visi mainīgie vienādi ar nulli, ka F(X’) = 0. Vispārīgajā gadījumā kvadrātisku formu, kas pozitīvi (negatīvi) pusdefinēta, sauc par izliektu (ieliektu) funkciju. Izliektā programmēšana nodarbojas ne tikai ar izliektām, bet arī ar ieliektām funkcijām (runājot par mērķa funkciju un ierobežojumiem). Lineāru funkciju var uzskatīt gan par ieliektu, gan par izliektu. Ievērosim, ka izliektai viena argumenta funkcijai, pieaugot argumentam, pieaug tās atvasinājuma vērtības. Kūna – Takera nosacījumi Vispirms formulēsim nepieciešamos noteikumus, lai punktā X = (x1, x2, …, xn) sasniegtu optimālu risinājumu NLP uzdevumam, kur mērķa funkcija ieliekta: max f(X) pie nosacījumiem gj(X) ≤ 0, xj ≥ 0 (j = 1, 2, …, m). Aizvieto katru nevienādību ar vienādību gj(X) + uj = 0, uj ≥ 0, pie kam uj > 0, ja gj(X) < 0, un uj = 0, ja gj(X) = 0. Tad uzdevums reducējas uz jau apskatītu uzdevumu, kurā ir vienādības tipa ierobežojumi ar n + m mainīgiem (X = (x1, x2, …, xn); Λ = (λ1, λ2, …, λm)). Lagranža funkcija šajā gadījumā: L(X, U, Λ) = f(X) + ∑m λj(gj(X) + uj). j=1

Nepieciešamais noteikums mainīgajiem uj, lai punkts X būtu šī optimizācijas uzdevuma risinājums: ∂L / ∂uj = λj, kur λj = 0, ja uj > 0, un λj > 0, ja uj = 0. Šis noteikums ieved ierobežojumus attiecībā pret Lagranža reizinātājiem. Tas nosaka, ka Lagranža funkcijā L(X, U, Λ) nevienādības tipa ierobežojumi neieiet, jo tiem λj = 0, bet vienādības tipa ierobežojumi, kas atbilst uj = 0, ieiet ar lielumu λj > 0. Tāpēc Lagranža funkcija L(X, U, Λ) faktiski sakrīt ar L(X, Λ) = f(X) + ∑m λjgj(X). j=1

Kūna-Takera nosacījumi (nepieciešamie noteikumi optimālās vērtības eksistencei): pi = ∂L/∂xi > 0, ja xi = 0; −qj = ∂L/∂λj < 0, ja λj = 0; ∂L/∂xi = 0, ja xi > 0; ∂L/∂λj = 0, ja λj > 0,

77

Page 78: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

kur i = 1, 2, …, n; j = 1, 2, …, m. Šos nosacījumus var arī izteikt formā: xi ≥ 0, pi ≥ 0, xipi = 0; λj ≥ 0, qj ≥ 0, λjqj = 0, kur i = 1, 2, …, n; j = 1, 2, …, m. Cita Kūna – Takera nosacījumu interpretācija saistīta ar Lagranža funkcijas seglu punkta jēdzienu. Funkcijas L(X, Λ) seglu punkts ir tāds punkts, kurā L(X, Λ) iegūst minimālo vērtību pēc X un maksimālo pēc Λ, t.i., punktam (X0, Λ0) ir īpašība: L(X 0, Λ) ≤ L(X 0, Λ0) ≤ L(X, Λ0). Seglu punkta nosacījumi sakrīt ar Kūna –Takera nosacījumiem. Diemžēl, vispārīga veida NLP uzdevumam nav atrasta efektīga aprēķina procedūra. Tāpēc apskata tikai vienu uzdevumu veidu – kvadrātisko programmēšanu (KP), kur tāda metode izstrādāta. Kvadrātiskās programmēšanas uzdevuma ģeometriskā interpretācija Vispirms atrisina kvadrātiskās programmēšanas uzdevumu (līdzīgi kā iepriekšējā nodaļā), izmantojot uzdevuma ģeometrisko interpretāciju. Piemērs 15-1: Jāatrod max f = 2x1 + 4x2 − x1

2 − 2x22,

kur x1, x2 ≥ 0 un ierobežojumi ir x1 + 2x2 ≤ 8; 2x1 − x2 ≤ 12. Pieļaujamā apgabala robežtaisnes (skat. zīm. 15-1) pirmajā kvadrantā uzrāda šādus pieļaujamā apgabala robežpunktus: O(0; 0); A(0; 4); B(6,4; 0,8); C(6; 0), kur mērķa funkcijas vērtības ir f(0; 0) = 0; f(0; 4) = −16; f(6,4; 0,8) = − 26,24; f(6; 0) = −18. x2 A(0; 4) 4 2 f=0 f=2 B(6,4; 0,8) f* =3 C= (6; 0) O 1 2 3 4 6 8 x1 Zīm. 15-1. Kvadrātiskās programmēšanas uzdevums (max f = 2x1 + 4x2 − x1

2 − 2x22).

Redzams, ka elipsoīda virsotne no pieļaujamā apgabala atrodas koordinātu sākumpunkta tuvumā. Funkcijas vērtība f = 0 atbilst punktiem (0; 0), (2; 0), (0; 2), (2; 2), vērtība f = 1 atbilst punktiem (1; 0), (1; 2), bet f = 2 – punktiem (0; 1), (2; 1). Lielākā funkcijas vērtība tiek sasniegta punktā X* = (1; 1), kur f* = 3.

78

Page 79: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Kvadrātiskā programmēšana Risina sekojošu NLP uzdevumu max f(X) = CX + X T DX pie nosacījumiem AX ≤ B, X ≥ 0, kur dots X – vektors –kolona un matricas ar izmēriem: A(m × n), D(n × n), B(m), C(n), X(n). Uzdevumam ir n mainīgie un m ierobežojumi. Izvērstā veidā šo uzdevumu formulē šādi: max f(X)= ∑n cjxj + ∑n ∑n djk xj xk (mērķa funkcija izliekta), j=1 j=1 k=1

∑n ajk xk − bj ≤ 0 (j = 1, 2, …, m), xi ≥ 0 (i = 1, 2, …, n).

k=1

Apskatāmajam uzdevumam (tāpat kā vispārīgam NLP uzdevumam) efektīgu algoritmu tā risināšanai var atrast tikai tad, ja mērķa funkcijai ir vienīgā (globālā) maksimālā vērtība. Lai pierakstītu Kūna – Takera nosacījumus, ieved Lagranža funkciju: L(X, Λ) = ∑n cj xj + ∑n ∑n djk xj xk + ∑m λj ( ∑n ajk xk − bj).

j=1 j=1 k=1 j=1 k=1

Atvasinot L(X, Λ) pēc xi un λj, iegūst: ci + 2∑n dik xk + ∑m λj aji = pi, (i =1, 2,…, n);

k=1 j=1 ( 1 ) bj − ∑n ajk xk = qj, ( j = 1, 2,…, m).

k=1

Kūna – Takera nosacījumiem šajā gadījumā ir veids: xi pi = 0, λj qj = 0; xi ≥ 0; λj ≥ 0; pi ≥ 0; qj ≥ 0, ( 2 ) kur i =1, 2, …, n; j = 1, 2, …, m. Sistēma (1) satur n + m vienādojumus ar 2(n + m) nezināmajiem (mainīgajiem) xi, pi, λj, qj, no kuriem n + m ir brīvi (tos var pielīdzināt nullei). Pārējie (n + m) veido bāzes risinājumu, kas ir pieļaujams, ja izpildās nosacījumi (2). Ja mainīgo skaits neliels, var mēģināt noskaidrot pieļaujamo bāzes risinājumu, caurskatot iespējamos variantus. Ja pieļaujamais bāzes risinājums atrasts, tad tā uzlabojumu (pāreju uz jaunu, labāku risinājumu) veic kā LP uzdevumu, kurā jāpārbauda nosacījumi (2). Tas nozīmē to: ja bāzē ir lielumi xi un λj, tad tajā nevar atrasties lielumi pi un qj. Piemērs 15-2: Apskata piemēra 15-1 optimizācijas uzdevumu, tā risinājumā izmantojot Lagranža funkciju.. Lagranža funkcija šajā gadījumā ir: L = 2x1 + 4x2 − x1

2 − 2x22 + λ1(8 − x1 −2x2) +

λ2(12 − 2x1 + x2). Aprēķina tai atvasinājumus: ∂ L/ ∂x1 = 2 − 2x1 − λ1 − 2λ2 ≤ 0; 2x1 + λ1 + 2λ2 ≥ 2; ∂L / ∂x2 = 4 − 4x2 − 2λ1 + λ2 ≤ 0; 4x2 + 2λ1 − λ2 ≥ 4; ∂L / ∂λ1 = 8 − x1 − 2x2 ≥ 0; jeb x1 + 2x2 ≤ 8; ∂L / ∂λ2 = 12 − 2x1 + x2 ≥ 0 2x1 − x2 ≤ 12. Ieved palīgmainīgos, kas pārvērš nevienādības par vienādībām:

79

Page 80: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

2x1+ λ1+ 2λ2 − p1 = 2; 4x2 + 2λ1 − λ2 − p2 = 4; x1 + 2x2 + q1 = 8; 2x1 − x2 + q2 = 12. No (2) seko, ka x1 p1 = 0; x2 p2 = 0; λ1 q1 = 0; λ2 q2 = 0. Var pārliecināties, ka seglu punkts X* = (1; 1) ir optimālais risinājums sākotnējam uzdevumam. Tad λ1 = λ2 = p1 = p2 = 0, bet q1 = 5; q2 = 11. Lagranža funkcijas seglu punkta noskaidrošana Ja apzīmējumi, kas ievesti Kūna – Takkera nosacījumiem šķiet par sarežģītiem, tad izlīdzēt var sekojoša teorēma. Teorēma: Izteiksmes ∂L(X*; Λ*) / ∂xi ≥ 0, xi* ≥0, xi* ∂L(X*; Λ*) / ∂xi = 0, i = 1, 2, …, n; ∂L(X*; Λ*) / ∂λk ≤ 0, λk*≥0, λk* ∂L(X*; Λ*) / ∂λk = 0, k = 1, 2, …, m ir nepieciešamie un pietiekamie nosacījumi Lagranža funkcijas seglu punkta (X*; Λ*) eksistencei. Ja dota tikai daļa no meklējamā punkta koordinātēm, tad, izmantojot teorēmas izteiksmes, var atrast visas koordinātes (ja risinājums eksistē). Līdz ar to atrod Lagranža funkcijas seglu punktu. Piemērs 15-3: Jānoskaidro, vai punkts X* = (0,5√3; 0,5; 0) ir risinājums sekojošam optimizācijas uzdevumam max f(X) = −4x1 − x2 + x3

2, kur x1, x2, x2 ≥ 0 un ierobežojumi g1(X) = x1

2 + x22 + x1 x3 −1 ≤ 0;

g2(X) = x12 + x2

2 − 2x2 ≤ 0; g3(X) = −x1 + x2 + x3 ≤ 0. Ja šis punkts ir atrisinājums uzdevumam, tad jāatrod Lagranža funkcijas seglu punktu. Lagranža funkcija šajā gadījumā: L(X; Λ) = −4x1 −x2 + x3

2 + λ1(x12 + x2

2 + x1 x3 −1) + λ2(x12 + x2

2 − 2x2) + λ3 (−x1 + x2 + x3 ). To atvasinot, iegūst izteiksmes: ∂L(X*; Λ) / ∂λ1 = 0,75 + 0,25 −1 = 0; ∂L(X*; Λ) / ∂λ2 = 0,75 + 0,25 −1 = 0; ∂L(X*; Λ) / ∂λ3 = −0,5√3 + 0,5 = (1 −√3) / 2 < 0. Tātad λ3 = 0. Pieprasa, lai izpildītos nosacījumi: ∂L(X*; Λ) / ∂x1 = −4 + √3λ1 + √3λ2 − λ3 = −4 + √3λ1 + √3λ2 = 0; ∂L(X*; Λ) / ∂x2 = −1 + λ1 − λ2 = 0; ∂L(X*; Λ) / ∂x3 = 0,5√3λ1 + λ3 ≥ 0.

80

Page 81: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Ņemot vērā, ka λ3 = 0, no pirmiem diviem vienādojumiem seko: λ1 + λ2 =4 /√3; λ1 − λ2 = 1. Risinot šo sistēmu, dabū atrisinājumu: λ1 = (4√3 + 3)/6; λ2 = (4√3 −3)/6. Tātad punkts (X*; Λ*) = (0,5√3; 0,5; 0; (4√3 + 3)/6; (4√3 − 3)/6; 0) ir Lagranža funkcijas seglu punkts.

81

Page 82: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

16. Dinamiskā programmēšana Next week there can’t be any crisis. My schedule is already full /Henry A. Kissinger/. Vienreizējs algoritms… Vai to izpilda vienreiz? Varbūt tas ir lielisks? Uzdevums par kapitālieguldījumiem Iespējams, nodaļas materiāls atsauc atmiņā uzdevumu par mugursomu, kur arī izmantoti dinamiskās programmēšanas principi. Piemērs 16-1: Piedāvāts risināt sekojošu uzdevumu. Lai palielinātu izlaidi produkcijai, pēc kuras ir paaugstināts pieprasījums, n uzņēmumiem izdalīti kapitālieguldījumi S tūkst. Ls. Izmantojot i-tajam uzņēmumam xi tūkst. Ls, nodrošināts produkcijas izlaides pieaugums, ko nosaka nelineārās funkcijas vērtība fi(xi). Jāatrod kapitālieguldījumu sadali starp uzņēmumiem, kas nodrošina maksimālu produkcijas izlaides pieaugumu. Uzdevuma matemātiskais formulējums − atrast max F = ∑n fi(xi) ( 1 ) pie nosacījumiem i=1

∑n xi = S, ( 2 ) i=1

xi ≥ 0, (i = 1, …, n). ( 3 ) Formulētais uzdevums ir NLP uzdevums. Tajā gadījumā, kad fi(xi) – izliektas vai ieliektas funkcijas, tā atrisinājumu var atrast, piemēram, ar Lagranža reizinātāju metodi. Bet, ja funkcijas tādas nav, tad zināmās NLP uzdevumu risinājumu metodes neļauj noteikt funkcijas (1) globālo maksimālo vērtību. Tomēr uzdevumu (1) − (3) var atrisināt ar dinamiskās programmēšanas paņēmieniem. Šim nolūkam sākotnējo uzdevumu var uzskatīt par daudzetapu vai daudzsoļu uzdevumu. Tā vietā, lai apskatītu pieļaujamos variantus kapitālieguldījumu sadalei starp n uzņēmumiem un novērtētu to efektivitāti, veic kaut ko citu. Proti, izpēta efektivitāti līdzekļu ieguldījumam vienā uzņēmumā, divos uzņēmumos u.t.t. − beidzot n uzņēmumos. Tādējādi iegūst n etapus. Dinamiskā programmēšana ir samērā sarežģīts process, kur, nosakot optimālo risinājumu, jāiziet, jāmodelē viss izvēļu spektrs no uzdevuma beigām uz sākumu, un tad – pretējā virzienā. Apzīmē ar Fn(X(0)) maksimālo ienākumu, ko gūst n soļos, sistēmai pārejot no sākotnējā stāvokļa X(0) uz galīgo stāvokli X(n), kad tiek realizētas optimālās vadības stratēģijas U = (u1, u2, …, un). Tad Fn-k(X(k)) – maksimālais ienākums, ko iegūst pārejā no stāvokļa X(k) uz galīgo stāvokli X(n), kad tiek lietota optimālā vadības statēģija atlikušajos n − k soļos. Kopējais ienākums (vinnests) n soļos sastāda summu, kas atkarīga no izvēlētās vadības konkrētajos soļos un nosacītā optimālā risinājuma iepriekšējos soļos. Mērķa funkcijai uzdevumā izpildās aditīvais nosacījums, kuru var uzskatīt par pirmo nosacījumu dinamiskajā programmēšanā (mērķa funkcija izsakās kā summa). Bet vēl ir Bellmana formulētais otrais nosacījums jeb optimālais princips (par sistēmas vadību). Saskaņā ar to, lai arī kāds būtu sistēmas stāvoklis pirms kārtējā soļa, vadību šajā solī jāizvēlas tā, lai ieguvums dotajā solī plus optimālais ieguvums visos sekojošos soļos būtu maksimāls. Optimālais princips realizējas Bellmana funkcionālajā pamatizteiksmē, kuras pielietošanu apskata konkrētajos uzdevumos: uzdevumā par ražošanas uzņēmuma iekārtas izmantošanu un uzdevumā par resursu sadali. Tie ir tipiski dinamiskās

82

Page 83: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

programmēšanas (DP) uzdevumi ar nosacīti optimālu lēmumu (NOL) pieņemšanu to soļos. Uzdevums par ražošanas iekārtas izmantošanu Piemērs 16-2: Pieņem, ka uzņēmums iegādājies jaunu tehniku, kura nodrošina uzņēmuma ekonomiskos rādītājus, kas atspoguļoti tabulā 16-1. Tabula 16-1. Laiks τ, kurā izmanto iekārtu (gadi) 0 1 2 3 4 5 Produkcijas gada izlaide R(τ) vērtības izteiksmē (tūkst. Ls) 80 75 65 60 60 55 Ikgada izdevumi Z(τ) iekārtas uzturēšanai un remontam (tūkst. Ls) 20 25 30 35 45 55 Zināms, ka izdevumi, kas saistīti ar jaunas tehnikas iegādi sastāda 40 tūkst. Ls. Iegādājoties jauno tehniku, veco tehniku noraksta. Jāsastāda tāds tehnikas nomaiņas plāns pieciem gadiem, lai kopīgā peļņa šajā periodā būtu maksimāla. Šo uzdevumu var uzskatīt par DP uzdevumu. Kā sistēma S funkcionē tehnika (iekārta) uzņēmumā. Sistēmas stāvokli nosaka tehnikas faktiskais izmantošanas laiks ( tās vecums) τ, t.i., to apraksta vienīgais parametrs τ. Kā vadības darbojas lēmumi par tehnikas nomaiņu vai saglabāšanu, ko pieņem katra gada sākumā. Ar u1 apzīmē lēmumu saglabāt iekārtu, ar u2 apzīmē lēmumu iekārtu nomainīt. Dinamiskās programmēšanas uzdevumu realizē divos etapos. Pirmajā etapā, virzoties no piektā gada sākuma uz pirmā gada sākumu, katram pieļaujamam iekārtas stāvoklim atrod nosacīti optimālo vadību jeb lēmumu (NOL). Otrajā etapā, virzoties no pirmā gada sākuma uz piektā gada sākumu, no nosacīti optimāliem lēmumiem katram gadam sastāda optimālo iekārtas nomaiņas plānu pieciem gadiem. Lai noteiktu nosacīti optimālos lēmumus (NOL), vispirms jāveido Bellmana funkcionālo vienādojumu. Pēc vienošanās, k-tā gada sākumā (k =1, 2, …, 5) var pieņemt tikai vienu no diviem lēmumiem – nomainīt vai nenomainīt iekārtu. Tāpēc peļņa uzņēmumam k-tajā gadā: F(τk) = {R(τk) − Z(τk), ja uk = u1; R(0) − Z(0) − C, ja uk = u2}, kur τk – iekārtas vecums k-tā gada sākumā (k = 1, 2, …, 5); uk – vadība, ko realizē k-tā gada sākumā; C = 40 – jaunās iekārtas izmaksas. Tātad, Bellmana vienādojumiem šāds veids: F(τk) = max {R(τk) − Z(τk) + Fk+1(τk+1); R(0) − Z(0) − C + Fk+1(1)}. ( 4 ) τ Izmantojot vienādojumu (4), meklē izejas uzdevuma risinājumu. Šo risinājumu sāk ar NOL noteikšanu piektajam gadam. Atrod iekārtas pieļaujamo stāvokļu kopu šī gada sākumā. Tabula 14-1 sastādīta ar aprēķinu, ka kalkulācija par pieciem gadiem (τ1 = 0) notiek apstākļos, kad iegādāta jauna tehnika. Tātad piektā gada sākumā tehnika var būt 1,

83

Page 84: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

2, 3, 4 gadus veca. Tāpēc pieļaujamie sistēmas stāvokļi dotajā laika periodā ir: τ5 = {1; 2; 3; 4}. Katram no šiem stāvokļiem atrod atbilstošu funkcijas vērtību F(τ5). Izmantojot (4) un atbilstību F(τ6) = 0 (jo apskata pēdējo aprēķina perioda gadu), iegūst: F(τ5) = max{R(τ5) − Z(τ5); R(0) − Z(0) − C}. ( 5 ) Tabulā 16-2 apkopo sekojošus aprēķinus funkcijai F(τ5): F1(τ5) = max{R(1) − Z(1); R(0) − Z(0) − C} = max{75 − 25; 80 − 20 − 40} = 50; uo = u1. Aplūko arī citas iespējamās vērtības: F2(τ5) = max{R(2) − Z(2); R(0) − Z(0) − C} = max{65 − 30; 80 − 20 − 40} = 35; uo = u1; F3(τ5) = max{R(3) − Z(3); R(0) − Z(0) − C} = max{60 − 35; 20} = 25; uo = u1; F4(τ5) = max{R(4) − Z(4); R(0) − Z(0) − C} = max{60 − 45; 20} = 20; uo = u2. Tabula 16- 2. Iekārtas vecums τ5 (gadi) Vērtība funkcijai F(τ5) (tūkst. Ls) NOL uo 1 50 u1

2 35 u1 3 25 u1 4 20 u2 Apskata situāciju ceturtā gada sākumā. Acīmredzot, pieļaujamie stāvokļi sistēmai ir τ4 = {1; 2; 3}. Izmantojot (4), tabulā 16-3 apkopo sekojošus aprēķinus funkcijai F(τ4): F1(τ4) = max{R(1) − Z(1) + F2(τ5); R(0) − Z(0) − C + F1(τ5)} = max{75 − 25 + 35; 80 − 20 − 40 + 50} = 85; uo = u1; F2(τ4) = max{R(2) − Z(2) + F3(τ5); 70} = max{65 − 30 + 25; 70} = 70; uo = u2; F3(τ4) = max{R(3) − Z(3) + F4(τ5); 70} = max{60 − 35 + 20; 70} = 70; uo = u2. Tabula 16- 3. Iekārtas vecums τ4 (gadi) Vērtība funkcijai F(τ4) (tūkst. Ls) NOL uo 1 85 u1

2 70 u2 3 70 u2 Nosaka lēmumus NOL, kas jāpieņem par sistēmu trešā gada sākumā. Acīmredzot, pieļaujamie stāvokļi sistēmai ir τ3 = {1; 2}. F1(τ3) = max{R(1) − Z(1) + F2(τ4); R(0) − Z(0) − C + F1(τ4)} = max{75 − 25 + 70; 80 − 20 − 40 + 85} = 120; uo = u1; F2(τ3) = max{R(2) − Z(2) + F3(τ4); 105} = max{65 − 30 + 70; 105} = 105; uo = u2. No pēdējās izteiksmes redzams, ka trešā gada sākumā, kad tehnikas vecums ir divi gadi, neatkarīgi no lēmuma (vadības) u1 vai u2 rezultāts ir viens un tas pats. Par NOL var izvēlēties jebkuru, piemēram, u2. Ieraksta iegūtos rezultātus tabulā 16-4.

84

Page 85: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Tabula 16- 4. Iekārtas vecums τ3 (gadi) Vērtība funkcijai F(τ3) (tūkst. Ls) NOL uo 1 120 u1

2 105 u2 Apskata pieļaujamos iekārtas stāvokļus otrā gada sākumā, kad iekārtas vecums ir tikai viens gads. Jāsalīdzina divus iespējamos lēmumus: saglabāt iekārtu vai to nomainīt. F1(τ2) = max{R(1) − Z(1) + F2(τ3); R(0) − Z(0) − C + F1(τ3)} = max{75 − 25 + 105; 80 − 20 − 40 + 120} = max{155; 140} = 155; uo = u1. Rezultātu atspoguļo tabula 16-5. Tabula 16- 5. Iekārtas vecums τ2 (gadi) Vērtība funkcijai F(τ2) (tūkst. Ls) NOL uo 1 155 u1 Piecu gadu termiņa sākumā uzņēmumā uzstādīta jauna iekārta. Tāpēc šeit nav izvēles starp u1 un u2, bet F1(τ1) = R(0) − Z(0) + F1(τ2) = 80 − 20 + 155 = 215. Tādējādi uzņēmuma maksimālā peļņa var būt vienāda ar 215 000 Ls. Tā atbilst tabulās 16-5, 16-4, 16-3 un 16-2 apkopotajam optimālajam plānam par iekārtas izmantošanu. Pirmajam gadam lēmums viennozīmīgs: iekārta jāsaglabā. Otrā gada sākumā iekārtas vecums ir viens gads, un saskaņā ar tabulu 16-5 optimāls risinājums šim gadam ir iekārtas saglabāšana. Trešā gada sākumā iekārtas vecums divi gadi, un saskaņā ar tabulu 16-4 (otro tās rindu) iekārta jānomaina. Ceturtā gada sākumā iekārtas vecums ir viens gads. Kā redzams tabulas 16-3 pirmajā rindā, iekārta jāsaglabā. Piektā gada sākumā iekārtas vecums divi gadi, un atbilstoši tabulas 16-2 otrajai rindai iekārtas nomaiņa nav racionāla. Iegūts optimāls iekārtas nomaiņas plāns, kas atspoguļots tabulā 16-6. Tabula 16-6. Piecu gadu termiņš (gadi) 1 2 3 4 5

Optimālais Saglabāt Saglabāt Nomainīt Saglabāt Saglabāt lēmums iekārtu iekārtu iekārtu iekārtu iekārtu Uzdevums par resursu sadali Piemērs 17-3: Atrast (1) − (3) risinājumu, ja S = 700 000 Ls, n = 3, bet xi un fi(Xi) doti tabulā 16- 7. Lai risinātu šo dinamiskās programmēšanas uzdevumu, jāsastāda Bellmana rekurentās atbilstības (nosacījumus). Dotajā gadījumā šīs atbilstības noved pie sekojošām funkcionālajām izteiksmēm:

85

Page 86: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

Φ1(X) = max {f1(X1)}; ( 6 ) 0≤X

1≤X

Φ2(X) = max {f2(X2) + Φ1(X – X2)}; ( 7) 0≤X

2≤X

… Φn-1(X) = max {fn-1(Xn-1) + Φn-2(X – Xn-1)}; ( 8 ) 0≤X

n-1≤X

Φn(X) = max {fn(Xn) + Φn-1(X – Xn)}. ( 9 ) 0≤X

n≤X

Tabula 16-7. Kapitālieguldījumu Xi apjoms (tūkst. Ls) 0 100 200 300 400 500 600 700 Produkcijas izlaides pirmajā 0 30 50 90 110 170 180 210 pieaugums fi(Xi) uzņēmumā (i = 1, 2, 3) atkarībā no kapitāl− otrajā 0 50 80 90 150 190 210 220 ieguldījumu apjoma uzņēmumā (tūkst. Ls) trešajā 0 40 50 110 120 180 220 240 uzņēmumā Šeit funkcijas Φi(X) (i =1, 2, …, n) nosaka maksimālo pieaugumu produkcijas ražošanā pie dotās X (tūkst. Ls) kapitālieguldījumu sadales starp i uzņēmumiem. Kad nonāks līdz funkcijas Φn(X) vērtības aprēķinam, to veiks tikai vienai vērtībai X = S, jo kapitālieguldījumu apjoms, ko izdala visiem n uzņēmumiem, ir S tūkst. Ls. Izmantojot izteiksmi (6), vispirms aprēķina nosacīti optimālos kapitālieguldījumus pirmajam uzņēmumam. Atrod vērtību Φ1(X) katram X = {0; 100; 200; 300; 400; 500; 600; 700}. Ja X = 0, tad Φ1(0) = 0. Tālāk iegūst: Φ1(100) = max{0; 30} = 30. Analoģiski atrod nosacīti optimālos risinājumus arī citām X vērtībām: Φ1(200) = max{0; 30; 50} = 50; Φ1(300) = max{0; 30; 50; 90} = 90, u.t.t. Beidzot Φ1(700) = max{0; 30; 50; 90; 110; 170; 180; 210} = 210. Skaitļi Φ1(Xi) sakrīt ar tabulas 16-7 pirmo rindu, kas atbilst pirmā uzņēmuma produkcijas pieaugumiem f1(Xi). To noteikšana triviāla. Tabulā 16-8 ieraksta rindu, atbilstošu pirmajam uzņēmumam, kas rāda nosacīti optimālos kapitālieguldījumu apjomus. Tālāk aprēķina nosacīti optimālos kapitālieguldījumu apjomus, kurus izdala pirmiem diviem uzņēmumiem. Izmanto izteiksmi (7) katrai no astoņām Xi vērtībām: Φ2(X) = max {f2(X2) + Φ1(X –X2)}. 0≤X

2≤X

Skaitļi f2(X2) atrodas tabulas 16-7 rindā, kas atbilst otrajam uzņēmumam. Ja X = 0, tad Φ2(0) = 0, bet nosacītā optimālā vērtība X2

0(0) = 0. Tālāk aprēķina Φ2(100) = max{0 + 30; 50 + 0} = 50; X2

0(100) = 100; Φ2(200) = max{0 + 50; 50 + 30; 80 + 0} = 80; X2

0(200) = 100. Ievērosim, ka otrajam uzņēmumam kapitālieguldījumi (pirmais skaitlis summā) pieaug, argumentam pieaugot, bet pirmā uzņēmuma kapitālieguldījumi (otrais

86

Page 87: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

skaitlis summā) dilst, argumentam pieaugot. Veidojot summu, darbojas it kā “šķēres”. Kas notiek tālāk? Saskaņā ar mehānismu, kā tiek atrasti nosacīti optimālie kapitālieguldījumu apjomi, pirmajam un otrajam uzņēmumam izpildās sakarības: Φ2(300) = max{0 + 90; 50 + 50; 80 + 30; 90 + 0} = 110; X2

0(300) = 200; Φ2(400) = max{0 + 110; 50 + 90; 80 + 50; 90 + 30; 150 + 0} = 150; X2

0(400) = 400; Φ2(500) = max{0 + 170; 50 + 110; 80 + 90; 90 + 50; 150 + 30; 190 + 0} = 190; X2

0(500)=500; Φ2(600) = max{0 + 180; 50 + 170; 80 + 110; 90 + 90; 150 + 50; 190 + 30; 210 + 0} = 220; X2

0(600) = 100; Φ2(700) = max{0 + 210; 50 + 180; 80 + 170; 90 + 110; 150 + 90; 190 + 50; 210 + 30; 220 + 0} = 250; X2

0(700) = 200. Tabulā 16-8 ieraksta rindu, atbilstošu pirmajiem diviem uzņēmumiem, kura rāda nosacīti optimālos kapitālieguldījumu apjomus. Tabula 16-8. Kapitālieguldījumu Xi apjoms (tūkst. Ls) 0 100 200 300 400 500 600 700 Nosacīti optimālo kapitāl- ieguldījumu apjoms (tūkst. Ls), ko pieškir pirmajam uzņēmumam 0 100 200 300 400 500 600 700 Nosacīti optimālo kapitāl- ieguldījumu apjoms (tūkst. Ls), ko pieškir otrajam uzņēmumam 0 100 100 200 400 500 100 200 Pāriet pie situācijas izpētes, kad kapitālo ieguldījumu sadale attiecas uz visiem trijiem uzņēmumiem. Atrod Φ3(X) = max {f3(X3) + Φ2 (X – X3)}. 0≤X

3≤X

Izdara aprēķinu tikai vienai vērtībai X=700: Φ3(700) = max{0 + 250; 40 + 220; 50 + 190; 110 + 150; 120 + 110; 180 + 80; 220 + 50; 240 + 0} = 270; X3

0(700) = 600. Tātad maksimālais pieaugums produkcijas ražošanā sastāda 270 000 Ls. Tas notiek tad, kad trešajam uzņēmumam izdala 600 000 Ls, bet 100 000 Ls − pirmajiem diviem uzņēmumiem kopā. Šajā gadījumā, kā tas redzams no pēdējās tabulas, šie 100 000 Ls jāiedala otrajam uzņēmumam. Iegūts optimāls kapitālieguldījumu sadales plāns starp uzņēmumiem, kas nodrošina maksimālu produkcijas ražošanas pieaugumu. Uzdevums 16-1: Atrisināt iepriekš apskatīto uzdevumu (piemērs 16-2), ja skaitļi tabulas 17-1 pirmajā rindā ir sekojoši: 90; 85; 75; 65; 60; 55. Uzdevums 16-2: Atrisināt iepriekš apskatīto uzdevumu (piemērs 16-3), ja trešais un pirmais uzņēmums samainījušies vietām un S = 800 000 Ls, pie tam skaitļi uzņēmumiem pēdējā ailē pieaug par 50, t.i., vienādi ar 290, 270 un 260. Apskatītajā materiālā gūts ieskats svarīgu nelineārās programmēšanas uzdevumu risināšanā. Skaidroti jautājumi, kas saistīti ar lēmumu

87

Page 88: Nelineārā programmēšana un lēmumu pieņemšanafizmati.lv › faili › macibu_materiali › nelin.programmesana.pdf · LU FIZIKAS UN MATEMĀTIKAS FAKULTĀTE DATORIKAS NODAĻA

pieņemšanu, risinātas nelineārās programmēšanas problēmas. Aplūkoti daži blakus disciplīnu jautājumi.

88