Инжњерски оптимизациони алгоритмиmtt.etf.rs/si/IOA/IOA01.pdf · Who...

Post on 25-Mar-2020

4 views 0 download

Transcript of Инжњерски оптимизациони алгоритмиmtt.etf.rs/si/IOA/IOA01.pdf · Who...

Инжњерски оптимизациони

алгоритми Драган Олћан (olcan@etf.rs)

Јована Петровић (jovanap@etf.rs)

Изборни предмет у 7. семестру

Школска 2019/20. година

http://mtt.etf.rs/si/ioa.htm

Електротехнички факултет

Универзитет у Београду

Инжењерски оптимизациони алгоритми 2/48

Шта је градиво курса?

• Увод. Преглед појмова и представљање основне теорије решавања система нелинеарних једначина на које се своде оптимизациони алгоритми у инжењерству

• Систематизација. Поделе оптимизационих алгоритама

• Оптимизациони алгоритми:

– случајно претраживање (енглески: random search)

– систематско претраживање (енглески: systematic search)

– градијентна метода (енглески: gradient method)

– симплекс алгоритам (енглески: Nelder-Mead simplex)

– Данцигов симплекс алгоритам (енглески: Dantzig simplex)

– генетички алгоритам (енглески: genetic algorithm)

– симулирано каљење (енглески: simulated annealing)

– кретање јата (енглески: particle swarm optimization)

– диференцијална еволуција (енглески: differential evolution)

• Оптимизација са више критеријума. Парето фронт и његово одређивање коришћењем оптимизационих алгоритама

• Рад на рачунару. Сагледавање особина и параметара оптимизационих алгоритама који су од значаја за практичну примену кроз програмирање и симулације на рачунару

Инжењерски оптимизациони алгоритми 3/48

Зашто само основни алгоритми

оптимизације?

• Литература из оптмизационих алгоритама је

изузетно обимна • Употреба оптимизационих алгоритама је

изузетно р а с п р о с т р а њ е н а

• Изабрани су они алгоритми (или класе алгоритама) који се данас најчешће употребљавају у инжењерској пракси

• Специјализовани алгоритми за уске класе проблема неће бити посебно обрађивани (нпр: quick-sort, Dijkstra's algorithm, Chess Master…)

Инжењерски оптимизациони алгоритми 4/48

Како је организован курс?

• Предавања: 30 часова предавања + 30 часова вежби +15 часова лабораторије

• Литература – Z. Michalewicz, D.B. Fogel, How to Solve It: Modern Heuristics, Springer, 2004

– Xin-SheYang, Engineering Optimization An Introduction with Metaheuristic Applications, University of Cambridge, Department of Engineering, Cambridge, United Kingdom, Wiley 2010

– D.E. Goldberg, Genetic Algorithms in Search, Optimization, and Machine Learning, Addison-Wesley Professional, 1989

• Оцењивање – Предиспитне обавезе (задаци на вежбама, носе до 5, колоквијуми 2 × 20) –

највише 100 поена, одсеца се на 70 поена

– Испит (задатак у првом року, усмени у осталим роковима) – у трајању до 180 минута, највише 40 поена, одсеца се на 30 поена

– Коначна оцена – укупан број поена се добија сабирањем поена добијених на основу предиспитних обавеза и испита. За полагање испита неопходно је освојити бар 51 поен. Оцене 6-10 су равномерно расподељене у опсегу од 51 до 100 поена

• Распоред (термини предавања и вежби): факултетски сервиси

Инжењерски оптимизациони алгоритми 5/48

Како се изводе

предавања и вежбе?

• Предавања:

– слајдови

– табла & креда

– рачунар за илустрације и показе

• Вежбе:

– Ви радите на рачунару

– програмирање: C/C++ и Python

или према Вашем избору (MATLAB, Java, C#...)

битно је да програм (про)ради!

– коришћење постојећег софтвера

Инжењерски оптимизациони алгоритми 6/48

Примери пројеката које су радили

студенти претходних година

• Оптимизација лог-периодичне антене

• Microwave imaging коришћењем оптимизационих алгоритама

• Оптимизација филтра

• Перформансе диференцијалне еволуције

• Провера оптимизационих алгоритама на скупу аналитичких (тест) функција

• Решавање нелинеарног електричног кола оптимизационим алгоритмима

• Вишекритеријмуска оптимизација ширине интерконекционих линија

• Оптимално рутирање у комуникационој мрежи

• Препознавање ручно написаних цифара коришћењем оптимизационих алгоритама

• Идентификација говорника коришћењем PSO алгоритма

• Управљање једноставном игром помоћу оптимизационог алгоритма

• Игра са логиком генетичког алгоритма

Инжењерски оптимизациони алгоритми 7/48

Одакле овај курс о оптимизацији?

Инжењерски оптимизациони алгоритми 8/48

Зашто курс о инжењерским

оптимизационим алгоритмима?

• Познавање модерних алгоритама за оптмизације је неопходно за све који се баве: инжењерством, науком и бизнисом

• Поред алгоритама, сагледаћемо могућности за решавање проблема данас

• Зашто једноставно не узмем рутину из неке од готових софтверских библиотека или комерциланог софтвера? – Познавање и разумевање алгоритама је од

изузетног значаја, чак и када се користе готова решења

– Често је случај да постојећи софтвер није оптимално решење за наш проблем

Инжењерски оптимизациони алгоритми 9/48

Шта је “проблем” или задатак?

• Проблем (задатак) постоји онда када желимо нешто да решимо (постоји неслагање између текућег и жељеног стања) – Задатак на испиту: имам поставку, а желим решење

– Проблем у пракси: имам ситуацију, а желим да је изменим

• Реални проблеми се увек решавају ван јасно дефинисане области (на факултету, по правилу се решавају у оквиру области) – Велики и први корак ка решавању је знати одакле почети

• Решење је алоцирање доступних ресурса за постизање жељеног циља

• У пракси, најчешће мора да се решава више проблема истовремено, а ти проблеми често могу имати опречне захтеве

Инжењерски оптимизациони алгоритми 10/48

Шта је оптимизација?

• Оптимизација је

проналажење најбољег (најбољих)

из дозвољеног скупа могућности,

за задате критеријуме

• Да ли знате неки пример оптимизације?

Инжењерски оптимизациони алгоритми 11/48

Примери оптимизације из

наше струке

• Пројектовати електрично коло са одговарајућим особинама (преносне функције филтра, појачање појачавача, израда елемената кола у различитим технологијама, Q-фактор калема, пробојни напон кондензатора, итд.)

• Пројектовање антене према за задати дијаграм зрачења

• Проналажење оптималног рутирања у мрежама

• Проналажење оптималних кодова за пренос и запис према различитим критеријумима (могућност реконструкције информације у случају грешке током преноса, заштита података, брзина преноса итд.)

• Оптимално покривање географског подручја радио сигналом

• Оптимално искоришћење фреквенцијског спектра

• Минимизација површине чипа и максимизације његових рачунарских перформанси

• Минимизација времена извршавања рачунарског програма

• Проналажење функције која оптимално фитује задати скуп података

• Минимизација потрошње електричне енергије уређаја

• Максимизација капацитета батерије преносивих (покретних) уређаја

• Минимизација цене уређаја

• …

Инжењерски оптимизациони алгоритми 12/48

Други примери оптимизације

• Оптималан избор изборног предмета на студијама

• Оптималан избор школе

• Оптималан избор (будућег) радног места

• Оптимално коришћење свог и туђег времена

• Оптимална расподела економских ресурса

• Најбржа путања за задату полазну и крајњу тачку

• Избор оптималног потеза у игри

• Максимизација учинка радника

• Минимизација цене производње

• Оптималан избор тима за пројекат

• Оптимална расподела информација за жељени циљ

• …

Инжењерски оптимизациони алгоритми 13/48

Како је оптимизација повезана са

другим научним дисциплинама?

• Инжењери користе знања математике, логике, економије, искуство и интуицију да пронађу решење проблема

• Математика: решавање система нелинеарних једначина на континуалном или дискретном домену

• Pattern recognition / machine learning / data mining / knowledge discovery су уско повезани са оптимизацијом

• Оптимизација се врши алгоритмима који се данас по правилу реализују програмирањем

• Дарвин: еволуција ствара и чува особине које су боље за опстанак у условима у којима се одиграва природна селекција

• Економија је наука која се бави проучавањем како друштво управља ограниченим ресурсима

Математика

Оптимизација

Инжењерство Програмирање

Економија

Психологија

и

СоциологијаБиологија

Хемија

Инжењерски оптимизациони алгоритми 14/48

Зашто је потребно познавати

оптимизационе алгоритме?

• Пројектовање се данас ради практично искључиво

коришћењем рачунара

• Практично решавање инжењерских проблема по

правилу захтева употребу оптимизације

• Познавање оптимизационих алгоритама је од

изузетне важности

[као и спознаја када и како их (не) користити]

• Потребно свима који се данас баве

инжењерством, науком, економијом...

Инжењерски оптимизациони алгоритми 15/48

Који су циљеви овог курса?

• Курс је фокусиран на практично решавање оптимизационих проблема код којих не постоји предзнање о проблему (енглески: black-box optimization)

• Уколико имамо неко предзнање, искористићемо га тако да оно што решавамо остане као black-box

• Упознавање са детаљима и особинама оптимизационих алгоритмима који се најчешће користе у инжењерству

• Оспособљавање за практичну примену оптимизационих алгоритама у инжењерским проблемима и научно-истраживачком раду

Инжењерски оптимизациони алгоритми 16/48

Black box

Модел црне кутије

• За задату побуду (x) познати одзиви (f)

• Одзиви нису познати унапред за све могуће побуде

(ако су сви одзиви познати, најбољи одзив је решење проблема)

• Унутрашња организација непозната

– због природе проблема

– сувише компликована за израчунавање (описивање)

– због наметнутих ограничења

Black box

x1

x2

xD

.

.

.

f1

fk

Dk

D

xxxf

xxxf

...,

...

...,

21

211

Инжењерски оптимизациони алгоритми 17/48

Резултати црне кутије:

“The Blind Men and the Elephant” - John Godfrey Saxe (1816-1887) -

It was six men of Indostan To learning much inclined, Who went to see the Elephant (Though all of them were blind), That each by observation Might satisfy his mind.

The First approached the Elephant, And happening to fall Against his broad and sturdy side, At once began to bawl: "God bless me! but the Elephant Is very like a WALL!"

The Second, feeling of the tusk, Cried, "Ho, what have we here, So very round and smooth and sharp? To me 'tis mighty clear This wonder of an Elephant Is very like a SPEAR!“

The Third approached the animal, And happening to take The squirming trunk within his hands, Thus boldly up and spake: "I see," quoth he, "the Elephant Is very like a SNAKE!“

The Fourth reached out an eager hand, And felt about the knee "What most this wondrous beast is like Is mighty plain," quoth he: "'Tis clear enough the Elephant Is very like a TREE!“

The Fifth, who chanced to touch the ear, Said: "E'en the blindest man Can tell what this resembles most; Deny the fact who can, This marvel of an Elephant Is very like a FAN!“

The Sixth no sooner had begun About the beast to grope, Than seizing on the swinging tail That fell within his scope, "I see," quoth he, "the Elephant Is very like a ROPE!“

And so these men of Indostan Disputed loud and long, Each in his own opinion Exceeding stiff and strong, Though each was partly in the right, And all were in the wrong!

Инжењерски оптимизациони алгоритми 18/48

Формализација

• Формално, сваки одзив је функција више променљивих (побуда)

• Одзив, или нека функција одзива, је мера колико је решење добро или лоше

• При оптимизацији (решавању проблема), за свако решење које желимо да разматрамо, потребно је израчунавати одзив(е)

• Подела модела (поставки) према броју одзива:

– са једним одзивом (један критеријум оптимизације)

– са више одзива (више критеријума оптимизације)

• Први део курса: посматрамо моделе са једним одзивом

Инжењерски оптимизациони алгоритми 19/48

Оптимизација и функције

више променљивих

• Побуде ↔ оптимизационе променљиве

• Одзив ↔ оптимизациона функција (нумеричка мера квалитета решења)

• Оптимизациона функција је функција са једном или више променљивих

• Променљиве и резултат оптимизационе функције могу бити из скупа дискретних или континуалних бројева

Dxxxf ..., 21

Инжењерски оптимизациони алгоритми 20/48

Основни типови оптимизационих

проблема (TSP, SAT, NLP)

• Проблем трговачког путника

(енглески: traveling salesman problem, TSP)

• Булова алгебра (дискретна стања)

(енглески: Boolean satisfiability, SAT)

• Нелинеарни проблеми

(енглески: Nonlinear programming, NLP)

• Домени основних типова проблема

(дискретан или континуалан)

Инжењерски оптимизациони алгоритми 21/48

TSP: поставка

• За задати скуп D градова и позната растојања између

сваког пара градова, пронаћи најкраћи пут који пролази

кроз сваки град и завршава се у полазном граду

• Број могућих путања D!

– D = 15, број путања ≈ 1,3‧1012

– D = 150, број путања ≈ 57,1‧10261

• Приказана путања

5-3-4-1-2(-5)

• Подела:

– Симетричан: dist(p,q) = dist(q,p)

– Асиметричан: dist (p,q) ≠ dist(q,p)

12

3

4 5

Инжењерски оптимизациони алгоритми 22/48

TSP: инжењерски проблеми

• Минимална путања

алата за бушење на

штампаним плочама

• Рутирање возила

• Путање у графовима

• Планирање и логистика

• Доношење одлука

Инжењерски оптимизациони алгоритми 23/48

TSP класа проблема и поделе

• Сваки проблем који може да се сведе на проверу свих пермутација називаћемо проблем TSP класе

• Поделе TSP:

– растојања дискретни / континуални бројеви

– метрички (dAB ≤ dAC + dCB) и они који то нису

– ...

• Посебне поткласе могу имати једноставнија решења

Инжењерски оптимизациони алгоритми 24/48

SAT: поставка

• За задати логички израз F(x1, x2,…xD) пронаћи комбинацију променљивих (x1, x2,…xD), xk∈{true (1), false (0)}, k=1,…D тако да је F(x1, x2,…xD) = TRUE

• Пример решење (x1, x2, x3, x4) = (1,0,1,0)

• Број могућих решења је 2D

– D = 15, број могућих решења 32768

– D = 150, број могућих решења ≈ 1,4‧1045

• Решење може да се запише као низ бита 100110...

))()(()( 432121 xxxxxxF x

Инжењерски оптимизациони алгоритми 25/48

SAT: приказ помоћу графова

))()(()( 432121 xxxxxxF x

(1,?,?,?)(0,?,?,?)

(0,0,?,?) (0,1,?,?) (1,0,?,?) (1,1,?,?)

(0,0,0,?) (0,0,1,?) (0,1,0,?) (0,1,1,?) (1,0,0,?) (1,0,1,?) (1,1,0,?) (1,1,1,?)

(0,0,0,0)

(0,0,0,1)

(0,0,1,0)

(0,0,1,1)

(0,1,0,0)

(0,1,0,1)

(0,1,1,0)

(0,1,1,1)

(1,0,0,0)

(1,0,0,1)

(1,0,1,0)

(1,0,1,1)

(1,1,0,0)

(1,1,0,1)

(1,1,1,0)

(1,1,1,1)

Скуп свих могућих решења

Инжењерски оптимизациони алгоритми 26/48

SAT класа проблема и поделе

• Сваки проблем који се своди на проверу свих комбинација са понављањем називаћемо проблем SAT класе

• Поделе (Karp's 21 NP-complete problems) – проблем ранца (knapsack)

– подела посла (job-sequencing)

– directed/undirected Hamiltonian cycle

– …

• Примери: свака манипулација битима може да претвори у проблем SAT класе – Откључавање ZIP архиве

– Пробијање RSA кодова

– ...

Инжењерски оптимизациони алгоритми 27/48

NLP проблеми

• Сваки оптимизациони проблем са континуалним променљивима спада у NLP класу проблема

• Број могућих решења је (теоријски) бесконачан!

• Посебни случајеви – диференцијабилне и недиференцијабилне f

– линеарно програмирање

– квадратно програмирање

– конвексни/конкавни проблеми

– са ограниченим или неограниченим доменом

– ...

Инжењерски оптимизациони алгоритми 28/48

NLP инжењерски примери

• Пројектовање ЕМ уређаја

• Решавање нелинеарних кола

• Фитовање резултата мерења

• Управљање нелинеарним

системима

• Максимизација профита

• ...

E

RE

RC

VCC

iC

iE

iB

E

RE

RB

VCC

iC2

iE2

iB2

iB1

iC1

Инжењерски оптимизациони алгоритми 29/48

Класификација оптимизационих

проблема по домену променљивих

• Подела није јединствена

• Пермутације су специјалан случај варијација са

понављањем: TSP ⊂ SAT ?

• Све што радимо на рачунару је

са коначном тачношћу (64-бита): NLP ⊂ SAT ?

Оптимизацини

проблеми

Континуални

домен

Дискретни

домен

НедиференцијабилнеДиференцијабилне

SAT TSP

Линеарно

програмирање

Квадратно

програмирање

... Karp’s 21

problem

Метрички

Неметрички... ...

Инжењерски оптимизациони алгоритми 30/48

Колико је брз мој рачунар?

• Колико времена могу да потрошим за решавање?

• Колико пута могу да проверим решења?

• Желим процену брзине: маскималан број позива (оптимизационе) функције

• Једноставан програм: прототип (пр)оцењивања решења проблема

Инжењерски оптимизациони алгоритми 31/48

Колико времена је потребно

рачунару да реши проблеме?

• Претпоставимо да је свака провера 1ns (ред величине времена потребног за позив функције на рачунару)

• TSP 20 градова: 109 s ≈ 77 година!

• SAT 100 прекидача: 1021 s ≈ 40‧106 милиона година!

• NLP: потребно је теоријски бесконачно много времена!

Инжењерски оптимизациони алгоритми 32/48

Реални проблеми су ТЕШКИ

• Број могућих решења је изузетно велики

• Описи проблема су сложени (или непознати), те

често морају да се користе упрошћени модели

• Процена квалитета решења може да

садржи шум, или да се мења током времена

• Постоји много ограничења тако да је тешко наћи

било какво решења (а не оптимално)

• Човек који решава проблем

није адекватно припремљен

Инжењерски оптимизациони алгоритми 33/48

Како решити проблем када су потребни

огромни рачунарски ресурси?

• У пракси је често довољно наћи решење које је задовољавајуће

• Трагање у недоглед за најбољим (оптималним) решењем је можда занимљиво, али по правилу захтева недопустиво много ресурса (и/или времена)

• Оптимизационе алгоритме треба посматрати као што добар кувар посматра рецепте: то је могући приступ, али ако је потребно може да се измени (само да крајњи резултат буде довољно добар)

Инжењерски оптимизациони алгоритми 34/48

Шта су хеуристике?

• ХЕУРИСТИКА:

грчки “Εὑρίσκω“ пронаћи или открити

• IEEE: All engineering is heuristic

• Технике решавања проблема засноване на искуству, учењу и откривању које доводе до решења (не мора нужно бити оптимално али је довољно добро у датим условима)

• Када год је немогуће или непрактично потпуно претраживање простора, користе се хеуристике (rule-of-thumb, educated guess, интуиција, стереотипи, здрав разум…)

• State-of-the-art проблеми се увек решавају хеуристички

Инжењерски оптимизациони алгоритми 35/48

Вежбе на рачунару: Мотивација

• Упознавање са окружењима која ће бити

коришћена на вежбама

• Python 3.7 (Spyder Anaconda 3): приказ и обрада

резултата

• C/C++ (Visual Studio 2017): рачунарски захтевни

делови програма

• Друга окружења? Да, али не решавамо

проблеме.

• Студенти се охрабрују да користе своје

рачунаре.

Инжењерски оптимизациони алгоритми 36/48

Python 3.7

(Spyder окружење са Anaconda 3)

Инжењерски оптимизациони алгоритми 37/48

Библиотеке

• plt: figure(), plot(), plot_surface(),

set_xlabel(), plt.legend()

• np: arange(), meshgrid()

• Користан сајт: https://matplotlib.org/

Инжењерски оптимизациони алгоритми 38/48

Дефинисање функција

Инжењерски оптимизациони алгоритми 39/48

1D функција: plot

Инжењерски оптимизациони алгоритми 40/48

Легенда

Инжењерски оптимизациони алгоритми 41/48

2D функција:

plot_surface и meshgrid

Инжењерски оптимизациони алгоритми 42/48

Означавање оса

Инжењерски оптимизациони алгоритми 43/48

Учитавање података из

датотеке

Инжењерски оптимизациони алгоритми 44/48

Пример минимизације

оптимизационе функције

минимум

Инжењерски оптимизациони алгоритми 45/48

Visual Studio 2017

Отварање пројекта

45/14

Инжењерски оптимизациони алгоритми 46/48

Рад са комплексним бројевима

Инжењерски оптимизациони алгоритми 47/48

Уписивање у датотеку

Инжењерски оптимизациони алгоритми 48/48

Задатак за вежбе

• Задата је функција дефинисана на

скупу комплексних бројева

(карактеристична функција зрачења)

где је

• Написати програм који,

за задато n, δ, β, d, θ рачуна Fs.

• Користећи написани програм,

израчунати и уписати у датотеку |Fs| ако је

задато n = 5, β = 20π m−1, θ = π/4 и d = 1/20 m за

вредности δ из опсега [0, 2π] у бар 100 тачака.

• Нацртати |Fs| у функцији од δ.

• Одредити вредност δ у којој |Fs| има максимум.

cosd

1

0

j

s en

k

kF