Линеарно програмирање
Линеарно програмирање (ЛП, или линеарна оптимизација) је математичка методологија за моделирање и решавање проблема налажења максимума или минимума линеарне функције, под условима исказаним као линеране једначине или неједначине. Термин „програмирање“ је овде синоним за планирање, односно одређивање оптималног (најбољег) плана. То значи одређивање вредности променљивих таквих да дају оптималну вредност функције циља, при том задовољавајући услове (ограничења).
Линеарно програмирање је специјалан случај математичког програмирања (оптимизације), где су функција циља и ограничења линеарни.
Пример проблема линеарног програмирања са четири променљиве (скраћеница п.о. значи - при ограничењима):
Оваквим математичким моделима се могу представити проблеми алокације ресурса, планирања кретања возила, разни проблеми производње у индустрији, проблеми у економији итд. Применом линераног програмирања се могу решавати сви практични проблеми који могу да се искажу математичким моделом линеарног програмирања.
Историја
[уреди | уреди извор]Проблем линеарног програмирања је формулисао совјетски математичар Леонид Канторович 1939. године.[1] Први модели су коришћени у дрвној производњи, a током Другог светског рата Канторович је радио за војску на оптимизацији војних операција. Метод решавања проблема није био јавно познат, све до 1947. када је Џорџ Б. Данциг објавио симплекс алгоритам.[2]
Решења проблема
[уреди | уреди извор]Скуп свих тачака у n-димензионалном простору које задовољавају ограничења проблема се назива допустивим скупом, или скупом допустивих решења. Тачка из овог скупа за коју је вредност функције циља оптимална (најбоља), односно максимална или минимална, се назива оптимално решење. Све тачке изван допустивог скупа су недопустива решења. Постоји више могућих случајева постојања решења у односу на то каква су ограничења:
- Проблем има јединствено оптимално решење
- Проблем има вишеструко оптимално решење (бесконачно много оптмалних решења)
- Проблем нема оптимално решење (отворен је, раст функције циља није ограничен)
- Проблем уоште нема решење (ограничења су неконзистентна)
Облици проблема линеарног програмирања
[уреди | уреди извор]У општем случају проблем линеарног програмирања може бити исказан у облику чија су ограничења једначине или неједначине, са задатком максимизације или минимизације функције циља. Алгоритми који решавају ове проблеме (пре свега Симплекс) захтевају да проблем има одређен, специјалан облик, да би могао бити решаван. Постоје следећа четири облика проблема линеарног програмирања:
- општи
- симетрични
- стандардни
- канонски (условно, јер је ово у суштини интерни облик Симплекс алгоритма)
Општи облик
[уреди | уреди извор]Општи облик проблема линеарног програмирања подразумева задатак максимизације или минимизације функције циља при ограничењима исказаним као линеарне једначине или неједначине и додатним скупом природних ограничења да вредности променљивих не могу бити негативне.
Или исказан у сажетијем облику:
Симетрични облик
[уреди | уреди извор]Проблем исказан у симетричном облику има сва ограничења као неједнакости истог типа (сва имају знак или ). Такође, ако је задатак максимизација функције циља, ограничења морају да буду типа , а ако је задатак минимизација, ограничења морају да буду типа .
Овде је дат симетрични облик у матричној форми, где су коефицијенти функције циља, скуп променљивих и слободни чланови ограничења дати као вектори, а коефицијенти неједначина ограничења су дати као матрица.
Варјанта максимизације | Варјанта минимизације | Значење ознака |
Стандардни облик
[уреди | уреди извор]Проблем усказан у стандардном облику може да буде проблем максимизације или минимизације, а сва ограничења морају да буду једнакости. Осим овог услова скуп ограничења мора да задовољи још неке услове:
- Једначине ограничења треба да буду линеарно независне
- Ако нису, то значи да две или више једначина из скупа исказују исто ограничење, и дупликати се могу елиминисати из проблема.
- Број ограничења треба да буде мањи од броја променљивих
- Ако је испуњен први услов, а број променљивих и једначина је исти, тада проблем има само једно допустиво решење, односно допустива област ће се састојати од само једне тачке. А ако је, уз испуњење првог услова, број једначина већи од броја променљивих, онда проблем неће имати решења, односно биће преограничен.
- Сви слободни чланови једначина ограничења треба да буду ненегативни
Ови додатни услови се могу сажети у следећем (n - број променљивих, m - број ограничења):
Стандардни облик у матричној форми
Превођење из општег у симетрични и стандардни облик
[уреди | уреди извор]Модели практичних проблема су изворно најчешће у симетричном облику или у општем, али са само једним типом неједнакости (и са једнакостима, наравно). Практични проблеми скоро никад нису изворно у стандардном облику. Модели у једном облику се могу преводити у еквивалентне моделе у неком другом облику. За превођење се могу користити више различитих техника, чијим коришћењем се било који модел у општем, симетричном или стандардном облику, може превести у неки од друга два.
Промена задатка проблема (макс. или мин.)
У случају да нам више одговара супротан проблем од датог (макс. у односу на мин. и обратно), све што треба да се уради је да се функција циља помножи са -1, односно да се вектор коефицијената помножи са -1.
Промена типа неједнакости
Модел у општем облику чија су сва ограничења неједнакости, се може превести у симетрични облик тако што се сва ограничења која не одговарају задатку (макс. или мин.) множе са -1, чиме се обрће знак неједнакости.
Превођење неједначина у једначине
Ако је потребано да проблем буде у стандардном облику, све неједначине из скупа ограничења морају се превести у еквивалентне једначине. Ово се постиже тако што се у проблем убацују нове променљиве, које се зову изравњавајуће, и то по једна у сваку неједначину.
- У неједначине типа „мање-једнако“ додаје се изравњавајућа променљива са коефицијентом 1.
- У неједначине типа „веће-једнако“ додаје се изравњавајућа променљива са коефицијентом -1.
Изравњавајуће променљиве се не додају у функцију циља, односно може се сматрати да у функцији циља имају коефицијенте 0. После превођења проблем ће имати онолико додатних променљивих колико је било неједначина у скупу ограничења. Резултујући проблем у стандардном облику је еквивалентан почетном проблему у смислу да ће се његовим решавањем добити оптимално решење почетног проблема, при том се у решењу вредности додатних изравњавајућих променљивих могу игнорисати.
Превођење једначина у неједначине
Једначине се могу превести у неједначине на више начина:
- Операција обрнута додавању изравњавајуће променљиве
Из једначине се може елиминисати променљива које нема у функцији циља, а ни у осталим ограничењима, чији коефицијент у једначини је позитиван и која је огранчена да буде ненегативна. Тада једначина прелази у неједначину типа ”мање-једнако”. Ако је променљива има негативан коефицијент, онда се добија једначина ”веће-једнако”. У случају да је променљива ограничена да буде непозитивна, онда се правила за знак коефицијента окрећу.
- Замена једне једначине са две неједначине
Ове две нејадначине ће имати исте коефицијенте и слободне чланове као почетна једначина, али са обрнутим знаковима неједнакости. Пошто знакови неједнакости укључују и могућност једнакости (”мање-једнако” и ”веће-једнако”), а супротни су, то значи да се те две неједначине могу свести на једну једначину.
Елиминисање променљивих неограничених по знаку
Проблем може да буде формулисан тако да неке променљиве нису ограничене по знаку (могу бити и позитивне и негативне). У овом случају може се направити смена. Неку променљиву можемо заменити разликом две променљиве на свим местима у проблему где се појављује. Сада ове две нове променљиве могу да буду ограничене да буду ненегативне, јер њихова разлика може да буде и позитивна и негативна, као оригинална променљива.
Канонски облик
[уреди | уреди извор]Каноски облик проблема линеарног програмирања је скоро специјалан случај стандардног облика (скоро, јер има једно проширење у односу на општи облик проблема ЛП). Овај облик је заправо интерни облик проблема Симплекс алгоритма. Проблем у канонском облику осим што задовољава услове стандардног облика, такође има и следеће додатне услове. Ако проблем има променљивих и ограничења, он је у канонском ако задовољава следеће услове:
- Задатак проблема је максимизација функције циља.
- У скупу променљивих постоји подскуп од m променљивих, таквих да се у сваком ограничењу налази по једна променљива из тог подскупа (и ни у једном другом ограничењу), и то са коефицијеном 1.
- Тих m променљивих из подскупа у функцији циља имају коефицијент 0.
- Сви слободни чланови ограничења су ненегативни.
Такође има и једно проширење у односу на општи облик, а то је да функција циља може да садржи слободан члан.
Развијено | Матрично |
Базне променљиве и базна допустива решења
[уреди | уреди извор]Ако имамо проблем у стандардном облику, са матрицом ограничења , од свих променљивих можемо да изаберемо неких m променљивих, таквих да, ако остале променљиве изједначимо са нулом систем једначина ограничења може да се једниствено реши по изабраних m променљивих. Познато је да, да би систем једначина био решив, матрица коефицијената променљивих мора да буде инвертибилна, односно да има детерминанту различиту од 0. Ових m променљивих које задовољавају услов се називају базне променљиве, скуп базних променљивих се назива база, а квадратна матрица коефицијената базних променљивих се назива матрица базе.
Решавањем система једначина добијеног на овај начин добијају се вредности базних променљивих. Тако добијене вредности базних променљивих са додатим нулама као вредностима осталих (небазних) променљивих чине једно допустиво решење проблема, јер оно сигурно задовољава ограничења. Овако добијено допустиво решење се назива базно допустиво решење. Проблем има онолико базних допустивих решења, колико матрица коефицијената ограничења има квадратних инвертибилних подматрица величине m.
Ако вектоr коефицијената базних променљивих у функцији циља означимо са , тада ће вредност функције циља за дато базно допустиво решење бити једнака , односно .
Ако проблем има јединствено оптимално решење, тада ће једно од базних допустивих решења бити то оптимално решење, а ако систем има бесконачно много оптималних решења, тада ће више од једног базног допустивог решења имати оптималну вредност функције циља. Ако се открију све инвертибилне подматрице величине m, и преко њих генеришу сва базна допустива решења, она решења која дају најбољу вредност функције циља јесу оптимална решења проблема. Наравно, овај начин решавања проблема линеарног програмирања је јако неефкасан, јер подразумева пробање свих могућности.
Базна допустива решења у канонскм облику
Ако имамо проблем у канонском облику можемо директно прочитати једно базно допустиво решење, без решавања систем једначина. Матрица коефицијената већ има јасно видљиву инвертибилну подматрицу (јединичну матрицу за m променљивих) и ако небазним променљивама доделимо вредност 0, одмах видимо да су решења система једначина заправо слободни чланови једначина.
Свођење стандардног облика на канонски
[уреди | уреди извор]Методе линеарне алгебре
[уреди | уреди извор]Ако имамо проблем у стандардном облику, и позната нам је једна база, тада можемо проблем да сведемо на канонски облик у односу на ту базу, али под условом да слободни чланови ограничења резултујућег канонског облика буду ненегативни.
Превођење ограничења
Ако променљиве у ограничењима групишемо у базне и небазне, можемо методама линеарне алгебре (инверзија матрице или Гаус-Жорданова редукција) да трансформишемо систем једначина тако да матрица базе постане јединична матрица (што захтева канонски облик). Матрица небазних променљивих тада постаје матрица , док вектор постаје .
Пошто канонски облик поставља услов да слободни чланови буду ненегативни, операција превођења у канонски облик у односну на дату базу ће успети ако је . Дакле ако је овај услов задовољен можемо наставити са превођењем.
Превођење функције циља
Да би цео проблем био у канонском облику, морамо да елиминишемо базне променљиве из функције циља. Функцији циља можемо да додамо слободни члан неког од ограничења, а одузмемо од ње линеарну функцију која чини то ограничење. Пошто између леве и десне стране ограничења стоји једнакост, ова операција не мења функцију циља и проблем претвара у еквивалентан проблем у другачијој форми. Да би елиминисали неку од базних променљивих из функције циља треба да помножимо ограничење у коме се она налази са њеним коефицијентом у функцији циља и онда са таквом једначином урадимо наведену операцију (при том не мењамо само ограничење). Ову операцију можемо да урадимо са сваким ограничењем које садржи базну променљиву која постоји у функцији циља, и тиме елиминишемо све базне променљиве из функције циља. Као последица функција циља ће сада садржати и слободан члан. Овај слободан члан је заправо вредност функције циља полазног проблема у односу на дату базу.
У следећој формулацији ове операције је вектор базних променљивих, a је вектор небазних променљивих. Коефицијенти небазних променљивих су дати матрицом , а слободни чланови вектором .
Резултат комплетне операције свођења у матричној форми
Ове две операције (трансформисање ограничења и функције циља) могу да се раде и унакрсно. Може се формирати проширена матрица целог проблема, која ће се сатојати од проширене матрице система ограничења, са додатним редом који представља функцију циља, с тим што ће последњи елемент тог реда бити негативни слободни члан функције циља, јер операција којом елиминишемо променљиве из функције циља није елементарна матрична трансформација редова. Али ако се придржавамо правила матричних трансформација, на месту слободног члана добићемо његову супротну вредност.
Ако обратимо пажњу на услов , онда је најефикасније прво израчунати слободне чланове, па ако задовољавају услов, израчунати остатак матрице.
Овај поступак добијања канонског облика подразумева налажење неке базе преко које се проблем може превести у канонски облик, што моеже бити прилично захтевно. Следећа метода то заобилази.
Метода вештачких променљивих
[уреди | уреди извор]Ова метода се још назива и методом великог M. Ако стандардним трансформацијама система једначина не можемо лако да добијемо канонски облик система ограничења онда ћемо у сваку једначину која одскаче од канонског облика додати по једну додатну променљиву. Ове нове променљиве зовемо вештачке (и обично означавамо са v) јер не постоје у оригиналном проблему. Зато ћемо у функцији циља вештачким променљивама доделити коефицијенте , где је M неки много велики позитиван број (већи од било ког броја при поређењу). Овим осигуравамо да ће, због задатка максимизације, алгоритам за решавање сигурно овим променљивама доделити вредност 0, чиме се ова измена оргигиналног проблема поништава.
Проблем проширен вештачким променљивама у случају да свака једначина има по једну (што не мора да буде), изгледа овако:
Да би проблем био у канонском облику, морамо да елимишемо вештачке променљиве из функције циља, што можемо да урадимо множењем сваке једначине која садржи вештачку променљиву са M и додавањем добијене једначине функцији циља (уз истовремено одузимање слободних чланова). Тада ће функција циља добити следећи облик. (множење матрице транспонованим вектором јединица слева даје врсту сума колона те матрице)
Ово јесте канонски облик функције циља и заједно са ограничењима, цео проблем је сада у канонском облику. Базно решење оваквог канонског облика представљају слободни чланови као вредности вештачких променљивих и нуле као вредности небазних, што су све променљиве из оригиналног проблема, а такво решење је за оригинални проблем недопустиво. Али Симплекс алгоритам може да пође од оваквог канонског облика, и успешно добије оптимално решење оригиналног проблема (иако овако модификовани проблем није еквивалентан оригиналном).
Дуалност
[уреди | уреди извор]Разним трансформацијама функције циља и ограничења проблеми линеарног програмирања се могу превести у еквивалентне проблеме, али у другачијој форми. Сваком проблему линеарног програмирања осим безброј еквивалентних проблема, може се на одређен начин придружити и, такозвани, дуални проблем. У терминилогији теорије дуалности почетни проблем се назива примал. Примал и дуал нису еквивалентни проблеми, али су сродни и везани.
Број променљивих дуала је једнак броју ограничења примала, док је број ограничења дуала једнак броју променљивих примала. Вектор коефицијената функције циља дуала је једнак вектору слободних чланова ограничења примала, док је вектор слободних чланова дуала једнак вектору коефицијената у функцији циља примала. Матрица коефицијената ограничења дуала је једнака транспонованој матрици примала. И на послетку задатак дуалног проблема је супротан задатку примала.
Такође постоји однос између између типова ограничења и ограничености променљивих у прималу и дуалу. Тај однос је најбоље описати у табели.
Примал | Дуал |
i - то ограничење | i - та променљива |
типа | |
типа | |
типа | неограничена по знаку |
j - та проманљива | j - то ограничење |
типа | |
типа | |
неограничена по знаку | типа |
Дуал проблема у симетричном облику
Практична вредност теорије дуалности је та да се може десити да дуални проблем буде такав да ће га алгортими за решавање решити брже, односно у мањем броју корака, него примал. При том се алгоритам креће кроз решења која су недопустива за примал, али завршава на решењу које је допустиво и за примал и за дуал, што је оптимално решење оба проблема.
Теорија дуалности
[уреди | уреди извор]Теорија дуалности изучава матемачка својства односа прималног и дуалног проблема.
Подразумевјући да примал представља проблем максимизације функције , а дуал проблем минимизације функције , они су повезани следећим својствима:
- Ако је x било које допустиво решење примала, а y било које допустиво решење дуала, тада је . Ово се назива својство слабе дуалности.
- Ако је x допустиво решење примала које није оптимално и , тада y није допустиво решење дуала.
- Ако су x и y допустива решења примала и дуала, и важи да је , тада су тачке x и y оптимална решења примала и дуала. Ово својство важи и у супротном смеру.
- Примал има оптимално решење, ако и само ако дуал има оптимално решење, при чему су њихове вредности једнаке.
- Ако је функција циља примала неограничена одозго (отворен проблем), тада је допустива област дуала празна (ограничења ће бити некозистентна). А ако је дуал неограничен одоздо, тада је допустива област примала празна.
Дакле, ако су допустиве области примала и дуала непразне, оба проблема имају оптимално решење.
Алгоритми за решавање проблема ЛП
[уреди | уреди извор]Алгортми промене базе
[уреди | уреди извор]Симплекс алгоритам
[уреди | уреди извор]Симплекс алгоритам, који је развио Џорџ Данциг 1947., решава проблеме линеарног програмирања тако што почиње од једног базног допустивог решења (темена допустиве области, која је облика вишедимензиналног полиедра), и генерише низ нових базних решења таквих да је свако следеће боље о претходног, док не стигне до оптималног решења.[3][4]
Иако у најгорем случају Симплекс алгоритам има експоненцијалну сложеност, у пракси је прилично ефикасан, а показало се да ”насумичне” проблеме решава подједнако ефикасо као и практичне.[5][6]
Criss-cross алгоритам
[уреди | уреди извор]Као и Симплекс, и овај алгоритам се креће између базних решења. Али criss-cross алгоритам не мора да задржи допустивост база, већ може да оде и на недопустиав базна решења. Оавј алгоритам је као и Симплекс, експоненцијане сложености у најгорем случају.[7][8]
Серангов алгоритам
[уреди | уреди извор]Као и други алгортими промене базе, Серангов алгоритам се креће преко темена, али док се симплекс креће само с једне на другу суседну базу, овај алгоритам може да промени више од једне променљиве у бази и оде на неко несуседно теме, и не креће се само дуж ивица.[9] Почев од тренутног темена, алгоритам узима насумичан вектор који побољшава функцију циља без кршења суседних ограничења, затим се креће дуж тог вектора док не наиђе на ограничење. Онда агоритам пројектује овај вектор на ограничење и креће се дуж проекције док се не наиђе на ноо ограничење. Поступак пројекције и кретања се понавља док се не стигне у теме. Тада се опет узима насумичан вектор, и тако до проналажења оптиманог темена. И овај алгортиам је експоненцијалан и најгорем сучају, али у пракси је бољи у односу на Симплекс.
Алгоритми који се крећу кроз унутрашњост
[уреди | уреди извор]Ови алгоритми остају у унутрашњости допустиве области, а током кретања се итеративно, асимптотски приближавају оптималном темену до задате удаљености. Онда се неком другом методом може прећи на најближе теме и доћи до тачног решења.
Хачијанов агортам је први алгоритам за решавање ЛП проблема који има полиномијалну сложеност у најгорем случају.[10] Али је Симплекс и даље био ефикаснији осим у специјално направљеним случајевима. Касније је Кармаркар развио алгоритам бољих полиномијалних перформанси.[11]
Тренутно је мишљење да је ефикасност добрих имплементација алгоритама базираних на Симплексу и алгоритама унитрашњости слична за рутинске приемене линеарног програмирања.[12] Али за одређене типове проблема једна врста алгоритма може бити боља од друге (некада много боља).
Види још
[уреди | уреди извор]- Симплекс алгоритам
- Динамичко програмирање
- Транспортни проблем
- Оптимизација (математика)
- Операциона истраживања
Референце
[уреди | уреди извор]- ^ Kantorovich, L. V. (јул 1960). „Mathematical Methods of Organizing and Planning Production”. Management Science. 6 (4): 366—422. doi:10.1287/mnsc.6.4.366.
- ^ Dantzig, G.B.: Maximization of a linear function of variables subject to linear inequalities, 1947. Објављен на pp. 339–347 у Koopmans T.C. (ed.):Activity Analysis of Production and Allocation, New York-London 1951 (Wiley & Chapman-Hall)
- ^ George B. Dantzig and Mukund N. Thapa. 1997. Linear programming 1: Introduction. Springer-Verlag.
- ^ George B. Dantzig and Mukund N. Thapa. 2003. Linear Programming 2: Theory and Extensions. Springer-Verlag.
- ^ Karl-Heinz Borgwardt, The Simplex Algorithm: A Probabilistic Analysis, Algorithms and Combinatorics, Volume 1, Springer-Verlag, 1987.
- ^ Michael J. Todd (February 2002). "The many facets of linear programming". Mathematical Programming 91 (3). (Invited survey, from the International Symposium on Mathematical Programming.)
- ^ Fukuda & Terlaky 1997: Fukuda, Komei; Terlaky, Tamás (1997). Thomas M. Liebling; Dominique de Werra, ур. „Criss-cross methods: A fresh view on pivot algorithms”. Mathematical Programming: Series B. 79 (1—3). Amsterdam: North-Holland Publishing Co. стр. 369—395. MR 1464775. doi:10.1007/BF02614325.
- ^ Roos 1990:. Roos, C. (1990). „An exponential example for Terlaky's pivoting rule for the criss-cross simplex method”. Mathematical Programming. Series A. 46 (1): 79—84. MR 1045573. doi:10.1007/BF01585729.
- ^ Serang 2012:. Serang, O. (2012). „Conic Sampling: An Efficient Method for Solving Linear and Quadratic Programming by Randomly Linking Constraints within the Interior”. PLOS ONE. 7 (8): e43706. doi:10.1371/journal.pone.0043706.
- ^ L.G. Khachiyan, “A polynomial algorithm for linear programming”, Доклады Академии наук СССР 244 (1979) 1093–1096.
- ^ Strang, Gilbert (1987). „Karmarkar's algorithm and its place in applied mathematics”. The Mathematical Intelligencer. New York: Springer. 9 (2): 4—10. ISSN 0343-6993. MR '''883185'''. doi:10.1007/BF03025891.
- ^ Gondzio & Terlaky 1996, стр. 103–144
Литература
[уреди | уреди извор]- Dantzig, G.B.: Maximization of a linear function of variables subject to linear inequalities, 1947. Објављен на pp. 339–347 у Koopmans T.C. (ed.):Activity Analysis of Production and Allocation, New York-London 1951 (Wiley & Chapman-Hall)
- С. Крчевинац, М. Чангаловић, В. Ковачевић-Вујчић, М. Мартић, М. Вујошевић: Операциона истраживања 1, 3. издање, Београд (Факултет организационих наука). 2009. ISBN 978-86-7680-200-5.
- Nash, S.G., Sofer A.: "Linear and Nonlinear Programming", McGraw Hill. 1996. ISBN 007046.0655. ISBN 978-0070460652.
- Gass, S.I.: "Linear Programming: Methods and Applications". . Courier Dover Publications. 1985. ISBN 9780486432847. Недостаје или је празан параметар
|title=
(помоћ) - Dantzig, G.B.: "Linear programming and extensions", . . Princeton University Press. 1998. ISBN 9780691059136. Недостаје или је празан параметар
|title=
(помоћ) - Frederick, S.,H.,Lieberman, G.J. "Introduction to Operations Research, 6th edition, McGraw Hill, 1995
- Gondzio, Jacek; Terlaky, Tamás (1996). „3 A computational view of interior point methods”. Ур.: J. E. Beasley. Advances in linear and integer programming. Oxford Lecture Series in Mathematics and its Applications. 4. New York: Oxford University Press. стр. 103—144. MR 1438311. Postscript file at website of Gondzio and at McMaster University website of Terlaky.