ИНТЕЛИГЕНТНИ СЕНЗОРСКИ НОДОВИ

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ИНТЕЛИГЕНТНИ СЕНЗОРСКИ НОДОВИ"

Transcript

1 УНИВЕРЗИТЕТ СВ. КЛИМЕНТ ОХРИДСКИ БИТОЛА ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ И КОМУНИКАЦИСКИ ТЕХНОЛОГИИ БИТОЛА студиска програма по ИНФОРМАТИКА И КОМПЈУТЕРСКА ТЕХНИКА Втор циклус ИНТЕЛИГЕНТНИ СЕНЗОРСКИ НОДОВИ -Магистески труд- Ментор: Кандидат: Проф. д-р Александар Маркоски Мартин Христоски 179/13 Битола, 2017

2 КОМИСИЈА 2

3 Абстракт: Целта на овој магистерски труд е да се креираат различни софтверски решенија, за различни хардверски платформи, за да се овозможи практична имлементација на интелигенти алгоритми кај сензорските мрежи. Како што е познато, со развојот на мрежните технологии, особено во поглед на безжичните комуникации, денес има масовна примена на безжичните сензорски мрежи, каде секој јазол во мрежата содржи повеќе различни сензори. Како резултат на овој развој, е појавата на мали хардверски платформи со повеќејадрени процесори, зголемена количина на RAM меморија, но и со зголемен капацитет на батериите и зголемена енергетска ефикасност. Благодарение на овој хардверски напредок, повеќе не е доволно сензорот во една мрежа само да служи за добивање и проследување на податоци, туку истиот треба да содржи и одредена пресметковна интелигенција. На тој начин со мерење на податоците ќе се добијат одредени информации, кои понатаму ќе се користат за стекнување на одредено знаење. За таа цел потребно е да се развијат интелигентни сензорски нодови, на кои ќе бидат имплементирани различни техники на класификација, еволутивно програмирање и машинско учење. Во овој магистерски труд ќе бидат анализирани техниките на машинско учење и компјутерска интелигенција, областа на нивната примена како и можноста за практична примена и имплементација на истите на сензорски нодови кои имаат ограничени хардверски можности во однос на класичните компјутерски системи. Клучни зборови машинско учење, компјутерска интелигенција, сензори, сензорски мрежи, fuzzy systems, artificial neural networks, support vector machines, genetic algorithms 3

4 Abstract: The objective of this thesis is to create different software solutions, for different hardware platforms, to enable practical implementation of intelligent algorithms in sensor networks. As is known, with the development of network technologies, especially in the area of wireless communication, today there is a widespread application of wireless sensor networks, where any node in the network contains many different sensors. As a result of this development is the emergence of small hardware platforms with multi-core processors, increased RAM memory capacity, as well as increased battery capacity and greater energy efficiency. Thanks to this development in hardware, it is not enough anymore for a sensor just to server as a means of acquiring and forwarding data, but it also needs to have some type of computational intelligence. This way, by measuring data certain information can be acquired, which later will be used to gain some type of knowledge. For this, development of intelligent sensor nodes is needed, on which different techniques of classification, evolutionary programming and machine learning will be implemented. In this thesis an analysis will be made of techniques of machine learning and computer intelligence, the sphere of their application, as well as the ability of practical application and implementation thereof on sensory nodes with limited hardware capabilities in relation to classical computer systems. Keywords machine learning, computer intelligence, sensors, sensory networks, fuzzy systems, artificial neural networks, support vector machines, genetic algorithms 4

5 СОДРЖИНА 1 Вовед Мотив Прашање на истражувањето Организација на магистерскиот труд Безжични Сензорски Мрежи и Сензорски Нодови Хардверски платформи Arduino UNO Texas Instruments Tiva C-Series Машинско учење k-најблиски Соседи Наивен Баесов класификатор Само-Организирачки Мапи Генетски Алгоритми Fuzzy системи Вештачки невронски мрежи Support Vector Machines Софтверска имплементација Генетски Алгоритми Софтверска имплементација Fuzzy Системи Софтверска имплементација Вештачки Невронски Мрежи Софтверска имплементација Support Vector Machines За имплементираните примери и можностите за практична примена Резултати од тестирања Заклучок Референци

6 ЛИСТА НА СЛИКИ Слика 2.1 Составни елементи на еден сензорски јазол Слика Texas Instruments TM4C Слика Доколку k=3 тогаш ѕвездата ќе припадне на класа1 (жолта) бидејќи има повеќе жолти соседи. Доколку k=7 тогаш ќе припадне на класа2 (виолетова) бидејќи има повеќе виолетови соседи Слика График на Гаусова распределба Слика Квадратна топологија (лево) и хексагонална топологија (десно) Слика Секој од невроните (црвени кругови - горе) има две тежини (испрекинати линии) по една за секој од влезните елементи (виолетови кругови - долу). Секој од невроните е конектиран со соседните неврони (полни линии) Слика Колку невроните се подалеку од победникот (црвениот круг), толку помал е степенот со кој треба да ги корегираат своите тежински вектори Слика Мапата го мапира 3D просторот во 2D. Содржи 40x60 неврони Слика 5.1 Често е невозможно да се пребаруваат сите решенија за даден проблем, за да се најде најдоброто решение (плавата точка) Слика 5.2 Со избирање на што е можно поразлични случајно генерирани решенија (црните точки) полесно ќе го најдеме најдоброто/најприфатливото решение Слика 5.3 најдобрите 2/3 решенија од генерација1 непроменети ќе се копираат во генерација2. Преостанатите решенија се добиваат со нивна комбинација Слика 5.4 Рулет-селекцијата може да се замисли како тркало за рулет кај кое секој од хромозомите има по едно поле со површина колку неговата селекциона вредност Слика 5.5 Комбинација со една позиција Слика 5.6 Комбинација со две позиции Слика 5.7 Униформна комбинација Слика 5.8 Подредена комбинација Прв чекор Слика 5.9 Подредена комбинација Втор чекор Слика 5.10 Комбинирање на три хромозоми Слика 5.11 Мутација на низа Слика 5.12 Случајно избраниот ген (розово квадратче горе) одлучуваме дали ќе мутира ( ) или не ( ) Слика 5.13 Секој од гените ќе биди замене со спротивна вредност Слика 5.14 Мутација со замена Слика 5.15 Мутација со вметнување Слика 5.16 Инверзна мутација Слика 5.17 Мутација со мешање Слика 6.1 Премин помеѓу годишните времиња според Буловата логика Слика 6.2 Реален премин помеѓу годишните времиња Слика 6.3 Трите вредности (ниско, средно, високо) кои можи да ги има променливата ниво_на_вода. Соседните вредности се преклопуваат, а премините помеѓу нив се постепени 47 Слика 6.4 Графички приказ на различни фунцкии на членство. Од горе кон долу и од лево кон десно: триаголник, трапез и ѕвоно (прв ред), сигмоид, Гаусова и z-крива (втор ред), синглтон и по_делови_линеарна крива (трет ред). Постојат и многу други функции на членство, но овие се едни од најкористените Слика 6.5 Логичките операции И (лево), ИЛИ (средина) и НЕГАЦИЈА (десно) во fuzzy логиката

7 Слика 6.6 За степен на поддршка на правилото од 0.67 (црвена испрекината линија), оригиналното множество (лево) добило различна форма кога е минимизирано (средина) или пресечено (десно) Слика 6.7 Извршување на IF-THEN правило во fuzzy логиката Слика 6.8 Извршување на 3 те правила со кои е опфатена излезната променлива ниво_на_дополнување Слика 6.9 Дискретна поделба (црните точки) на просторот кој го опфаќа множеството доделено на излезната променлива интензитет_на_довод Слика 7.1 График на логичките операции НЕ_И и И Слика 7.2 График на логичките операции ИЛИ и НИЛИ Слика 7.3 График на логичката операција ЕКСКЛУЗИВНО_ИЛИ (XOR) Слика 7.4 Графички приказ на невронската мрежа за логичко ЕКСКЛУЗИВНО_ИЛИ Слика 7.5 Степ-функција Слика 8.1 Двете класи (црвени и жолти точки) може да се одделат со повеќе хиперрамнини од кои 3 се прикажани на сликата ( 3 те црни линии) Слика 8.2 Хиперрамнина за двете класи (жолтите и виолетовите точки) Слика 8.3 Хиперрамнината (црна линија) ги одделува двете класи (розово и жолто обоените површини) Слика 8.4 Двете класи на кои припаѓаат објектите (црвените и жолтите точки) не се линеарно раздвоиви Слика 8.5 После додавање на нов објект (црвената точка А) мора да се користи нова хиперрамнина (полна црна линија) за да бидат класите правилно одделени Слика 8.6 Објектите од двете класи (сини квадрати и црвени ѕвезди) не може да бидат линеарно разделени Слика 8.7 Објектите од двете класи од слика 8.6 во 3D просторот можи линеарно да се одделат на пример со зелената рамнина Слика 8.8 На која од трите класи А, В или С ќе припадне зелената ѕвезда? Слика 8.9 За примерот од слика 8.8 се прават три комбинации од пар класи. За комбинација АВ (слика а) ѕвездата припаѓа на класа А, а за комбинација АС (слика б) и комбинација ВС (слика в) припаѓа на класа С Слика 13.1 Графички приказ на Arduino-то употребено во практичната имплементација на првиот пример за невронски мрежи. Употребени се 3 LED диоди (две жолти на кои се прикажува вредност од секој од влезните неврони и една црвена на која се прикажува вредноста на излезниот неврон), 3 отпорници од 330 Ω (по еден на секоја LED диода) и еден отпорник од 10 kω како и едно копче за поставување на влезните вредности Слика 13.2 Секој од седумте делови од кои е составен бројот може да има вредност 0 (исклучен) или 1 (уклучен). Со комбинација на различни делови се добиваат броевите од 0 до Слика 13.3 Цифрите за кои невронската мрежа треба да научи да ги препознава. Секоја од цифрите е составена од седум делови, кои доколку се обоени имаат вредност 1, а во спротивно вредност Слика 13.4 Рачно напишаниот карактер (а) се конвертира во црно-бела слика со димензии 10х10 пиксели што значи дека хромозомот би имал 100 гени(б). Во зависност од интензитетот на црната боја соодветниот ген ќе добија вредност помеѓу 0 (целосно бело) и 1 (целосно црно) (в) Слика 13.5 Графички приказ на Arduino-то употребено во практичната имплементација на вториот пример за невронски мрежи Слика 14.1 Класифицирање на податоците од табела 7 и

8 ЛИСТА НА ТАБЕЛИ Табела 1 Хеминговото растојание меѓу двете низи (низа1 и низа2) е 2, бидејќи иако двете низи се составени од истите карактери, редоследот на карактерите е различен т.е. на позиција 2 и 4 имаат различни карактери Табела 2 Нумерички вредности кои припаѓаат на универзумот на говор (x-оската) за излезната променлива интензитет_на_доток како и степените на членство (y-оската) за тие вредности Табела 3 Просечни резултати од тестирањата на првиот пример за генетски алгоритми. Секоја од комбинациите (1-6) беше тестирана по 50 пати Табела 4 Просечни резултати од тестирањата на вториот пример за генетски алгоритми. Секоја од комбинациите (1-4) беше тестирана 500 пати Табела 5 Резултати од тестирањето на проблемот на патувачкиот продавач за 50 групи со 7 градови Табела 6 Просечни резултати од тестирањата на првото софтверско решение за невронски мрежи. За секоја од Буловите операции кодот беше извршен по 50 пати Табела 7 Тренинг точки за тренирање на софтверското решение за машини со носечки вектори. Со плаво се означени точките кои и припаѓаат на класа -1, а со црвено точките кои и припаѓаат на класа Табела 8 Тест точки за проверка на точноста на алгоритмот за имплементираното софтверско решение за машините со носечки вектори, кој е трениран со податоците од табела 7. Сите тест точки се правилно класифицирани Табела 9 Резултати од тестирањето на модел креиран со користење на имплементираната библиотека за fuzzy логика

9 1 Вовед 1.1 Мотив Кога станува збор за компјутерската интелигенција и општо за интелигенцијата во контекст на компјутерите и компјутерските системи или било кои уреди кои во најмала рака содржат некакви електронски кола, најчесто првото нешто што си го претставуваат најголем дел од луѓето е она што ни е претставено во филмовите кои доаѓаат од Холивуд, како Терминатор, Воени Игри, 2001: Вселенска Одисеја и слични на нив, а во кои најчесто се претставени компјутери во различна форма, било да се тоа андроиди, глобална мрежа од компјутери па дури и вселенски бродови кои се самосвесни, со огромна интелигенција, знаење и пресметковна моќ и кои над се имаат за цел уништување на човештвото. Но дури и кога не се претставени како антагонисти, често машините, во најголем дел андроиди, кои поседуваат интелигенција, се гледани од страна на луѓето во филмовите со недоверба и страв. Најчесто ваквата слика, покрај лажната претстава за и често преголемиот страв од интелигентните компјутери, не успева да ни ја долови разликата помеѓу Вештачка Интелигенција и Пресметковна 1 Интелигенција. Често, иако е претсавена пресметковната интелигенција, можеби поради тоа што подобро звучи и полесно го привлекува вниманието, се нарекува вештачка интелигенција. Според [1] дефиницијата за Вештачка Интелигенција е следната: ВЕШТАЧКА ИНТЕЛИГЕНЦИЈА (AI) е дел од компјутерската наука која се занимава со дизајнирање на интелигентни компјутерски системи, т.е. системи кои манифестираат одредени карактеристики кои ги поврзуваме со интелигенцијата кај луѓето разбирање на јазик, учење, расудување, решавање на проблеми итн. Теоретската и практичната примена на вештачката интелигенција се разликуваат во тоа што, теоретски вештачката интелигенција била замислена да функционира како експерт со познавања од голем број на области, кој ќе помага во 1 (en) computational пресметковна, компјутерска 9

10 решавањето на различни проблеми, но реално успешни научни резултати и практична примена нашла само одкако полето на експертиза било ограничено на една област и биле дизајнирани механизми на расудување кои ги содржат знаењата на експертите од таа област. Поради начинот на кој се дизајнирани системите со вештачка интелигенција, истите се многу корисни при планирање, зголемување на продуктивноста како и намалување на ризикот при донесување на одлуки, затоа што го имаат заењето на најдобрите експерти од областа во која се применуваат. Но, од друга страна истите имаат и одредени недостатоци, меѓу кои најзначајна е неможноста за учење од околината, а токму тоа е една од карактеристиките заеднички за најголем дел од интелигентните системи кои се претсвени во филмовите, можноста на роботот или компјутерот да учи од постапките на протагонистот и да се прилагодува на динамичните промени во околината за да можи да ја постигни својата цел, често правејќи го тоа така што го имитира мисловниот процес на самите луѓе. Според [2]: ПРЕСМЕТКОВНА ИНТЕЛИГЕНЦИЈА е методологија која вклучува пресметки кои му даваат на некој систем можност да учи и/или да се справува со нови ситуации, така што системот изгледа дека има една или повеќе особини на разумот, како генерализирање, откривање, асоцијација и абстракција. Системите со пресметковна интелигенција често вклучуваат хибриди од парадигми како вештачки невронски мрежи, fuzzy системи и еволутивни системи, дополнети со елементи на знаење. Тие често се дизајнирани да имитираат еден или повеќе аспекти од биолошката интелигенција. Пресметковната интелигенција е многу блиска до адаптацијата. Всушност другата дефиниција на пресметковната интелигенција вели дека се состои од практични концепти, парадигми, алгоритми и импелентации на адаптацијата кои овозможуваат извршување на одредени акции (интелигентно однесување) од страна на системите во комплексни и променливи средини. Од самата дефиниција можи да се узнае една од главните карактеристики на системите со пресметковна интелигенција, можноста за учење од и адаптирање на промените во средината. Тоа е една од главните разлики помеѓу вештачката интелигенција и пресметковната интелигенција. 10

11 Една од главните причини кои придонесоа во развојот на пресметковната интелигенција е вртоглавиот развој во пресметковната моќ на хардверските компоненти на компјутерските системи. Благодарение на перформансите на хардверот постојат методи меѓу кои и оние кои се спомнати во претходната дефиниција (вештачки невронски мрежи, fuzzy системи и еволутивни системи) кои се користат за решавање на практични проблеми, често на нови и уникатни начини, произведувајќи различни решенија, некогаш дури и такви кои инаку би било многу тешко па дури и невозможно да бидат дизајнирани од страна на човек. Еден од лимитирачките фактори е потребата од добри хардверски перформанси со цел овие техники од областа на машинското учење да бидат корисни во решавањето на реални проблеми. Втората придобивка од брзиот хардверски развој, а која е тесно поврзана со тематиката на овој магистерски труд, е појавата на сензорски нодови со мали димензии, често неколку сантиметри во должина, но кои содржат повеќејадрени процесори, големо количество на меморија, како и батерија со голем капацитет која можи да овозможи работа на сензорскиот нод и до една година. Но дури и овој нов хардвер кај сензорските нодови често не е доволен за да се имплементираат техниките од машинското учење кои би имале практична примена во секојдневието. Во овај магистерски труд ќе бидат развиени алгоритми и истите ќе бидат имплементирани во софтверски решенија во форма на библиотеки за следните техники од областа на машинското учење: Нејасни Системи 2, Вештачки Невронски Мрежи 3, Машини со Носечки Вектори 4 и Генетски Алгоритми 5. Истите се најчесто применуваните техники во областа на пресметковната интелигенција и имаат покажано најголем број на резултати во решавање на реални проблеми од многу различни области, било тоа да е автомобилската индустрија, вселенската индустрија, па дури и домаќинството и забавата. Овие техники се разликуваат помеѓу себе во неколку клучни точки: 1). начинот на кој пристапуваат кон дефинирањето на проблемот, 2). начинот на кој доаѓаат до решението, 3). формата на решенијата кои ги добиваат и 4). областа на 2 (en) Fuzzy Systems во понатамошниот текст Fuzzy Системи 3 (en) Artificial Neural Networks 4 (en) Support Vector Machines во понатамошниот тест SVM 5 (en) Genetic Algorithms 11

12 примена. Токму поради тоа што се разликуваат помеѓу себе ќе бидат опфатени во овој магистерски труд со цел да биде разработен што е можно поголем дел од машинското учење како и можноста да бидат понудени решенија на повеќе реални проблеми од различни области од секојдневниот живот. Со цел да се тестира колкави се можностите за практична примена на овие техники од машинското учење и еволутивното програмирање, во безжичните сензорски мрежи, кои се составени од мноштво на сензорски нодови со драстично ограничени перформанси, ќе биде направен обид истите да се имплементираат во две хардверски платформи, Arduino UNO и Texas Instruments Tiva C-Series. Овие хардверски платформи се со ниска цена на чинење и ограничени хардверски перформанси кои се неспоредливо помали од оние во класичните компјутерски системи, правејќи ги идеални кандидати за потребите за развој на систем кој од обичните сензорски нодови, кои само ги проследуваат податоците кои ги добиваат од околината преку нивните сензори, ќе креира интелигентни нодови кои користејќи ги измерените податоци ќе бидат во можност да извлечат одредена корисна информација, со цел да се добие некое знаење. 1.2 Прашање на истражувањето За да се тестира дали сензорските нодови, со своите ограничени перформанси, можи да се користат за решавање на реален проблем со примена на некоја од техниките на машинското учење, најпрвин мора да се тестира дали е возможно поради ограничените хардверски перформанси на истите да биде имплементирано софтверско решение за разните техники на класификација, еволутивно програмирање и машинско учење. За да го дознаеме ова треба да се одговори на следното прашање: Дали одкако ќе се креираат софтверски решенија (библиотеки) за разни алгоритми од областа на Fuzzy Systems, Artificial Neural Networks, Support Vector Machines и Genetic Algortihms, истите ќе можи практично да се имплементираат на разни хардверски платформи кај сензорските мрежи? 12

13 1.3 Организација на магистерскиот труд 1. Сензорски нодови во Глава 2 накратко ќе биди опишан концептот на сензорските нодови и нивните компоненти, а во Глава 3 ќе биди даден краток опис на хардверските платформи кои ќе се користат како и развојните околини за истите. 2. Интелигентни алгоритми во Глава 4 ќе стани збор за машинското учење и интелигентните алгоритми како и за некои од областите на нивна примена, со тоа што во Глава 5 до 8 детално ќе бидат опишани Генетските Алгоритми, Fuzzy Системите, Вештачките Невронски Мрежи и Support Vector Machines, нивните предности, недостатоци, ограничувања како и областите на примена. 3. Софтверски решенија во Глава 9 до 12 ќе биди опишан процесот на развој на софтверските решенија и библиотеки за Генетските Алгоритми, Fuzzy Системите, Вештачките Невронски Мрежи и Support Vector Machines како и нивната имплементација на користените хардверски платформи. 4. Практична примена во Глава 13 ќе бидат опишани можностите за практична примена како и експериментите кои се направени со цел потврдување на практичната применливост на дизајнираните софтверски решенија за дадените хардверски платформи, а во Глава 14 ќе бидат изнесени резултатите од експериментите со користење на симулирани и мерени податоци. 5. Заклучок во Глава 15 ќе бидат утврдени придобивките од интелигентните сензорски нодови, ќе бидат сумирани истражувањата направени во овој магистерски труд, а ќе бидат наведени и можностите за понатамошен развој. 13

14 2 Безжични Сензорски Мрежи и Сензорски Нодови Животната средина во која живееме е еден од најнепредвидливите елементи во нашиот живот. И покрај прецизноста во предвидувањето на временските услови, мерките кои се преземаат поради можноста на одредени места да настанат поплави или пожари, заштитните мерки кои се воведуваат во индустриските комплекси со цел намалување на можноста да настани индустриска катастрофа, како и стандардите кои се применуваат врз најразлични производи од превозни средства па се до уреди во домаќинството се со цел да се намалат штетните емисии кои може да доведат до катастрофи од најразлични димензии сепак постои одреден простор на слобода кој ја дава непредвидливоста на настаните. Катастрофите предизвикани од човекот може во најголем дел да бидат спречени. Но, од друга страна тука се природните катастрофи. Бидејќи човекот сеуште не е во можност да ги контролира елементите на природата, не можи да спречи настанување на многу од природните непогоди и катастрофи. Поради тоа, наместо да се обидуваме да ги спречиме да настанат, се појавува потребата што е можно побрзо да бидеме информирани за настанатите катастрофи, во моментот на настанувањето или непосредно потоа, а некогаш дури и пред да настанат истите. Еден од начините за побрзо добивање на информации за настанатите промени во системот кој се следи е да се користи мрежа од сензори кои збираат податоци од својата околина и истите ги проследуваат до крајниот систем кој добива одредена информација од овие податоци. На овај начин многу побрзо ќе бидиме информирани за настанатата или предстојната катастрофа, со што ќе бидиме во можност што е можно побрзо да изготвиме план и мерки за справување или спречување на катастрофата. Денес, благодарение на напредокот во компјутерската индустрија (зголемување на перформансите, а истовремено намалување на димензијата и цената на хардверот) имаме мрежи кои се составени од мали евтини сензори кои користат безжична комуникација и мала речиси незабележлива енергетска потрошувачка, а кои имаат најразлична примена. 14

15 Безразлика на применетата технологија и софтверски решенија, како и областа на примена и обемот на мрежата, она што е заедничко за сите сензорски мрежи е тоа што како основен составен елемент кај сите се појавува сензорскиот нод. Од сликата 2.1 може да се види дека еден јазол се состои од батерија, меморија, микроконтролер, сензор и трансивер. Слика 2.1 Составни елементи на еден сензорски јазол Секој од овие елементи игра одредена улога во сензорот како целина. Притоа во зависност од фазата која се извршува, улогата на одреден елемент може да биде поголема или помала. Поради потребата сензорските мрежи во најголем дел да бидат составени од сензорски нодови кои ќе работат подолг временски период, некогаш една или повеќе години без промена на енергетскиот извор (батерија), а притоа да бидат доволно мали и ефтини, сензорските нодови кои ги задоволуваат овие побарувања користат процесори со многу мала пресметковна моќ, како и меморија со неверојатно мал капацитет. Токму поради овие ограничувања, ваквите сензори служат само за мерење и проследување на измерените податоци до крајниот корисник, затоа што истите немаат никаква пресметковна интелигенција која ќе им овозможи не само да мерат податоци туку од собраните податоци да извлечат некаква информација со цел стекнување на одредено знаење. Немањето на пресметковна интелигенција е поради тоа што сеуште нема голем интерес за развој и имплементирање на техниките од машинското учење во embedded системи со ниски перформанси. Во овај магистерски труд ќе биди демонстрирано како можи некои од техниките од машинското учење да се искористат кај ваквите low-end хардверски платформи со цел креирање на сензорски нодови со одредена пресметковна интелигенција. 15

16 3 Хардверски платформи Со цел тестирање и практична демонстрација на применливоста на софтверските решенија кои ќе бидат развиени во овој магистерски труд, како и симулирање на low-end платформите кои се користат најчесто во сензорските мрежи, ќе се употребуваат два уреди: Arduino UNO и Texas Instruments Tiva C-Series. Исто така ќе се користат развојните околини кои ги придружуваат двете платформи. 3.1 Arduino UNO Arduino UNO е слободен хардвер кој се базира на ATmega328 микроконтролер со брзина од 16 MHz. Има флеш меморија со капацитет од 32 KB од кои 0.5 KB се искористени од страна на бут-лоадерот, а исто така содржи 2 KB SRAM како и 1 KB EEPROM. Се напојува со 5 V, а истото можи да се прави преку USB кабел или со батерија. Меѓу другото содржи 6 аналогни и 14 дигитални пинови преку кои може да се поврзат најразлични периферни уреди. Од самите спецификации е доволно да се увиди дека овој микро-контролер е доста ограничен во поглед на ресурсите кои ги поседува, а со самото тоа и во однос на слободата која ја имаме кога станува збор за софтверските решенија кои можат да се имплементираат на истиот. Причините поради кои е погоден за употреба се следните: 1. Ниска цена хардверот е лесно достапен по цена од околу 25$ (јули 2017) 2. Мала енергетска потрошувачка во просек за време на извршување Arduino UNO користи електрична струја од околу 50 ma, што при напон од 5 V би значело дека има електрична моќност од 250 mw. 3. Отворена платформа шематскиот дизајн на хардверот е јавно достапен под GPL лиценца, со што е дозволено хардверот да се произведува од било кого, без плаќање на провизија, со што цената е доста мала (може да се најдат и по цена од 3$ за неофицијални верзии). Самата развојна околина, исто како и хардверот, е под GPL лиценца, а во истата се користи С јазик, кој има мали промени заради прилагодување на софтверските библиотеки кон хардверот. 16

17 4. Лесна употреба тоа што во развојната околина се користи С програмскиот јазик ја прави доста лесна за употреба Поради лесниот начин на употреба, отвореноста на платформата и малата цена, Ardiuno има голема база на корисници, што уште повеќе придонесе за да биди избрана заради потребите на овој магистерски труд. 3.2 Texas Instruments Tiva C-Series Texas Instruments Tiva C-Series EK-TM4C1294XL е хардверска платформа која содржи ARM Cortex M4F 32-битен микроконтролер со брзина од 120 MHz што го прави повеќе од 7 пати побрз од Arduino UNO. Истиот се одликува со флеш меморија со капацитет од 1 MB, 256 KB RAM меморија како и 6 KB EEPROM. Содржи мноштво I/O конектори со кои може да се конектира на надворешни електронски кола и модули. Причините поради кои е избрана оваа хардверска платформа се следните: 1. Ниска цена и покрај подобриот хардвер и оваа платформа има ниска цена која се движи околу 20$ 2. Добри перформанси неколку пати поголемите процесорски и мемориски можности во однос на оние од Arduino UNO, ќе ни овозможат истите софтверски решенија кои ќе бидат имплементирани на Arduino-то, овде да се искористат за решавање на посложени проблеми. 3. Лесна употреба развојната околина која ќе се користи (Energia) е многу слична на онаа кај Arduino. Базирана е на Wiring framework-от и се програмира во С програмсиот јазик. Слика Texas Instruments TM4C

18 4 Машинско учење Една од главните карактеристики на човековата интелигенција е можноста за учење. Уште на почетокот на академските истражувања од областа на вештачката интелигенција, во обидот да се направи компјутерски систем кој ќе ги има одликите на човекот, попрецизно човековата интелигенција, дел од истражувањето било насочено кон креирање на машини кои ќе можат да учат од податоците, со цел да се емулира оваа карактеристика на човекот. Почетоците на машинското учење можи да се лоцираат во 1959 година кога Артур Самуел, работејќи во IBM креирал програма која ја играла играта дама. Причината поради која решил да креира програма која ќе ја игра токму оваа игра, била тоа што сметал дека доколку компјутерите се научат да играат игри истите ќе се здобијат со знаење кое ќе им помогне да развиваат тактики за решавање на генерални проблеми, а оваа игра била погодна поради лесните правила но и потребата од стратегија. Поради тоа што на располагање имала ограничена компјутерска меморија, програмате не можела да ги пребарува сите можни патеки од моменталната состојба на таблата па се до завршувањето на играта, туку истата имала функција која ја пресметувала веројатноста за победа од моменталната позиција. Артур Самуел континуирано работел на оваа програма и дизајнирал различни начини на кои истата можела да се подобрува себеси. До средината на 70-тите програмата достигнала знаење во играта на ниво на аматерски играч. Вака дизајнираната компјутерска програма го подобрувала својот перформанс стекнувајќи искуство преку учење. Според самиот креатор на оваа програма, Артур Самуел, машинското учење е:... научно поле кои им дава на компјутерите можност да учат без да бидат експлицитно програмирани. Во овој период се појавуваат и првите модели кои тогаш биле наречени невронски мрежи, но кои во основа биле перцептрони. Првиот перцептрон бил развиен од страна на Френк Розенблат во неговиот научен труд од 1957 година [3]. Бил 18

19 замислен како систем кој ќе можи да распознава сложени патерни кои се слични меѓу себе т.е. да можи да ги распознава истите објекти но со различна големина, боја, ориентација, околина и слично, без притоа да има голема библиотека на слики кои би ги користел како референца за споредба со цел распознавање на објектот. Истиот бил првата вештачка невронска мрежа имплементирана во хардверска форма. Во 1960 со конектирање на 400 фотоќелии со невроните бил креиран Mark I перцептрон кој можел да распознава едноставни слики. Иако на почетокот делувал добро, сепак набргу било покажано дека перцептронот има големи ограничувања. Во 1969 година во [4] Марвин Мински и Симор Паперт кажуваат дека перцептронот можи да се користи само за класифицирања на објекти кои можи линеарно да се одделат. Во истата книга зборуваат дека перцептронот не можи да ја научи XOR функцијата. Во овој период почнува да стагнира интересот за машинското учење, а се повеќе внимание се става на пристапот базиран на знаење и на експертските системи. Се повеќе се инсистира на креирање на системи кои ќе решаваат голем број на проблеми од најразлични области, користејќи огромно количество на знаење и намески процедури со цел пристап до тоа знаење. Оваа промена во мислењата е една од главните причини поради кои разликите помеѓу машинското учење и вештачката интелигенција (во која ги гледаме зачетоците на машинското учење) стануваат се поголеми и поголеми, што на крај ќе резултира со одделување на машинското учење како засебна научна дисциплина. Машинското учење повторно добива подем дури во 80-тите години на минатиот век, кога повторно се засилува мислењето дека можеби не е доволно само да имаме големо количество на податоци. Една од главните причини поради кои е возобновен интересот за машинското учење и поради која и ден денес не само што има интерес туку се повеќе и повеќе е присутно во секојдневниот живот е токму идеата дека не се потребни само податоците туку исто така треба да се посвети внимание и на формирање на генерални принципи на учење и донесување на одлуки. Методите кои се базираат на овие принципи уште се нарекуваат слаби методи како контраст на силните методи базирани на големо количество на знаење. Според начинот на кој учат, во машинското учење постојат три видови на учење и тоа: учење со надгледување, учење без надгледување и учење со зајакнување. 19

20 1. Учење со надгледување (supervised learning) Кај овој тип на алгоритми, учењето се прави така што се користат влезни податоци за кои е позната излезната вредност. Алгоритмот учи така што за дадените влезни податоци го споредува излезот кој го генерирал (реалниот излез) со оној кој треба да се добие (очекуваниот излез), пресметувајќи ја грешката која ја направил. Врз база на грешката се прават соодветно корекции во функцијата за евалуација. Преку репетиција на процесот алгоритмот учи со цел кога ќе добие влезни податоци за кои не е познат резултатот (овие податоци кај ваквите алгоритми ќе се добиваат после завршувањето на процесот на тренирање), да може да даде што е можно попрецизен резултат до вистинскиот. Учењето кај овие алгоритми запира кога ќе биде достигнато прифатливо ниво на перформанси (алгоритмот за влезните податоци со доволен степен на прецизност ќе ја пресметува или предвидува соодветната излезна вредност). Во зависност од проблемот кој го решаваат, овие алгоритми можи да се поделат во две групи: a. Класификациски - за даден предмет (влезни податоци) одредуваат на која група (класа) и припаѓа. b. Регресиони - за разлика од класификационите алгоритми кои предвидуваат класа, регресионите алгоритми ќе предвидуваат вреднос за функции со континуирана вредност. Во некои случаи земајќи ги во предвид предвидените вредности можи да се извлечи линеарна зависност помеѓу одредени атрибути (влезни податоци). Алгоритмите како Линеарна Регресија, Логистичка Регресија, Дрва за Одлуки, Наивен Баезов Класификатор и Support Vector Machines спаѓаат во групата на алгоритми кои учат со надгледување. 2. Учење без надгледување (unsupervised learning) кај учењето без надгледување, за време на тренирање имаме само влезни податоци, без соодветната излезна вредност (правилен одговор) поради што ова учење се нарекува учење без надгледување. Целта е за дадени податоци да се моделира одредена структура или дистрибуција со цел да се научи нешто повеќе за податоците. 20

21 Проблемите кои се решаваат со учењето без надгледување може да се поделат во следните две групи: a. Групирање (clustering) групирањето е многу слично на класифицирањето кај алгоритмите кои учат со надгледување, со таа разлика што овде не се познати групите во кои треба да припаѓаат влезните објекти. Поради тоа што за време на тренирањето алгоритмот не го надгледуваме, самиот одлучува според кој критериум (која особина/влезен податок) ќе ги групира објектите. b. Асоцијација овдека целта е да откриеме одредени правила кои ќе важат за поголем дел од податоците и според кои правила ќе можиме да извлечиме одредени заклучоци. Некои од алгоритмите кои спаѓаат во групата на алгоритми кои учат без надгледување се: кластеризација со k-средни вредности, невронски мрежи и други. За разлика од надгледуваното, учењето без надгледување често знае да биди многу посложено. Една од причините за тоа е што може да биди тешко да се проценат резултатите кои се добиваат, бидејќи немаме со што да споредиме затоа што не го знаеме вистинскиот одговор. 3. Учење со зајакнување (reinforcement learning) алгоритмите кои учат со зајакнување имаат за цел да научат што треба да прават т.е. која акција да ја превземат со цел наградата која ја добиваат од средината да биди што е можно поголема. Наградата всушност ќе биди броен сигнал чија големина ќе зависи од акциите кои ги презема алгоритмот и ефектот кој истите ќе го имаат во системот како целина. Поради тоа што на алгоритмот не му кажуваме кои акции треба да ги превземе, истиот треба сам да открие кои се акциите кои доведуваат до најголема награда. Токму поради тоа што акциите кои ги презема алгоритмот можи да имаат ефект врз понатамошните награди, можи да се случи во одредена ситуација да треба да ја избери акцијата A која ќе има помала непосредна награда одколку акцијата B, но за сметка на тоа покасно да добие многу поголема награда од онаа која би ја добил доколку би ја избрал акцијата B. Ова е една од главните карактеристики кај овие алгоритми. Тие ја гледаат поголемата слика, односно го гледаат целиот проблем и постојано размислуваат што ќе се случи доколку направат одреден потег и како тоа ќе влијае врз крајната цел и кои се долгорочните импликации од превземениот 21

22 потег. Сите алгоритми кои учат со зајакнување имаат одредена јасна цел, добиваат повратна информација од околината и превземаат акции кои директно влијаат врз таа околина. 22 Безразлика на начинот на кој учат во зависност од алгоритмот кој се користи, крајната цел на машинското учење е креирањето на апликации кои ќе се подобруваат преку искуство. Неслучајно денес најчесто се користи следната дефиниција [5]: Компјутерската програма велиме дека учи од искуство E изразено преку класа на задачи T и мерка за перформанс P, доколку нејзиниот перформанс при извршувањето на одредени задачи од класата T, мерен со P, се подобруваат преку искуството E. После скромните почетоци, денес машинското учење е присутно се повеќе и повеќе и не само во експерименталните истражувања во научните установи туку во секојдневниот живот во најразлични форми и со практична намена. Некои од областите каде машинското учење нашло примена се: 1. Детекција на спам 2. Детекција на потенцијална измама при трансакција и перење на пари 3. Заштита од компјутерски вируси 4. Детекција на интрузија 5. Подобрување на безбедноста на луѓето 6. Детекција и распознавање на лица 7. Препознавање на говор 8. Препознавање на текст 9. Медицинска дијагноза 10. Тргување на берза 11. Интернет пребарувања, препораки и навики 12. Паметни автомобили Некои од техниките кои се користат во погоре наведените области, како и во многу други кои не беа спомнати, се поуспешни и пософистицирани од останатите, едни се користат за секојдневните потребите на човекот преку директна интеракција, други работат во позадина без да бидиме свесни за тоа со цел подобри и побезбедни услуги, а додека пак трети служат да ни помогнат во работата преку намалување на

23 ризикот и побрзо донесување на посигурни одлуки, но она што е заедничко за сите е дека користат алгоритми од машинското учење и сите се доволно добри за да бидат практично применливи со прифатлив степен на успех. Следно ќе бидат опишани неколку поедноставни методи од машинското учење, а потоа во засебни глави ќе стани збор за Генетските Алгоритми, Fuzzy Системите, Вештачките Невронски Мрежи и Support Vector Machines. 4.1 k-најблиски Соседи Еден од наједноставните методи (а можеби и наједноставен метод) на машинско учење е методот на k-најблиски Соседи. Методот самиот посебе е многу лесен како за опишување така и за имплементација, а може да се користи за класификација и за регресија. Доколку се користи за класификација, резултатот е класификација на објектот според резултатот од гласањето на неговите соседи, при што објектот се доделува на класата за која и припаѓаат мнозинство од гласовите. Од друга страна ако се користи за регресија, тогаш резултатот е вредност која му се доделува на објектот како просек од вредностите на неговите соседи. Иако спаѓа во алгоритмите од областа на машинското учење, сепак кај овој алгоритам процесот на учење не се извршува. Она што обично претставува фаза на тренирање кај паметните алгоритми, овдека опфаќа само зачувување на векторите со влезни вредности и соодветните ознаки за класата на која и припаѓа примерокот (доколку алгоритмот се користи за класификација) или соодветната повратна (излезна) вредност или резултат (доколку станува збор за регресија). Алгоритмот со k-најблиски Соседи, за разлика од останатите паметни алгоритми, не прави претпоставка за распределеноста на податоците ниту пак донесува генерални заклучоци. За сметка на тоа мора да ги чува сите податоци кои инаку би се користеле за тренирање и кои после тренирањето кај најголем дел од паметните алгоритми повеќе не се потребни и не мора да се чуваат во меморија. Но бидејќи кај овој метод нема фаза на тренирање, мора да ги има сите податоци, затоа што ќе му требаат за време на тестирањето (кога работи со реални податоци). 23

24 Методот со k-најблиски Соседи ќе ни помогни да одговориме на прашањето: Доколку имаме вектор со влезни вредности x која е ознаката y која соодвестува на тие влезни вредности? Тоа ќе го направи така што ќе ги најди најблиските k соседи на влезниот објект и преку пресметување на просечна ознака за истите, ќе го добија резултатот. прашања: За да можеме да го направиме ова најпрвин треба да одговориме на две 1. Што ќе претставува растојанието? Односно според кои критериуми ќе одредуваме кои се најблиските соседи? Кои вредности ќе ги кориситме за да го пресметаме растојанието со цел да ги одредиме најблиските соседи? 2. Што ќе претставува просечната вредност? Одкако ќе ги издвоиме најблиските соседи, која е вредноста за која ќе бараме просек и како ќе го пресметуваме просекот? За да го одговориме првото прашање, најпрвин треба да знаеме што претставуваат објектите кои ги добиваме на влез. Доколку станува збор за точки во картезијанов простор или други континуирани вредности можиме да користиме (и најчесто се користи) Евклидово растојание доколку влезните вредности се од сличен тип (пример должина и ширина) или Менхетн растојание или попознато како такси геометрија доколку влезните податоци не се од сличен тип (висина, тежина, возраст итн.) Ако имаме дискретни вредности, на пример текст, тогаш за да го пресметаме растојанието ќе треба да се користат други методи како Хеминговото растојание кое претставува број на позиции во кои две низи од карактери, кои имаат иста должина, се разликуваат. Табела 1 Хеминговото растојание меѓу двете низи (низа1 и низа2) е 2, бидејќи иако двете низи се составени од истите карактери, редоследот на карактерите е различен т.е. на позиција 2 и 4 имаат различни карактери. позиција низа1 А Н С А Х Н низа2 А А С С Х Н Избирањето на најдобриот метод за пресметување на растојание ќе влијае како врз брзината така и врз прецизноста на методот. Покрај што ќе влијае врз брзината и прецизноста, методот за пресметување на растојание е тој што ќе го одредува и значењето на зборот сосед. Така на пример ако 24

25 имаме 3 бинарни броеви: (15), (20) и (36) како и нов број (4) за кого бараме кои два броеви му се најблиски соседи (k = 2), доколку растојанието го пресметуваме според положбата кога броевите се подредени по растечки редослед тоа би биле бројот 15 и бројот 20, но доколку користиме Хемингово растојание најблиску ќе бидат бројот 20 и бројот 36, а бројот 15 нема да биди означен како сосед на бројот 4 (барем не кога k има вредност 2). Откако ќе го пресметаме растојанието до соседите и ќе утврдиме кои k соседи се најблиски, следно што треба да направиме е да пресметаме вредност за новиот објект. Доколку станува збор за регресија тогаш вредноста на новиот објект се пресметува како просек на вредностите на најблиските k соседи. Доколку треба да се направи класификација на објектот наместо да пресметуваме просечна вредност ќе им дозволиме на соседите да гласаат и на тој начин да одберат на која класа и припаѓа новиот објект. Гласањето се прави така што секој од соседите гласа за класата на која и припаѓа и класата со најмногу гласови е онаа на која и се доделува новиот објект т.е. класата на која и припаѓаат најголем број од соседите е класата на која ќе и припадне новиот објект. Слика Доколку k=3 тогаш ѕвездата ќе припадне на класа1 (жолта) бидејќи има повеќе жолти соседи. Доколку k=7 тогаш ќе припадне на класа2 (виолетова) бидејќи има повеќе виолетови соседи. Вредноста k која цело време се спомнува е всушност бројот на најблиски соседи кои ќе помогнат во пресметување на резултатот за новиот објект. Бројот k секогаш ќе биди цел број поголем од 0. Вредноста на k ќе биди од особена важност кога алгоритмот се користи за класифицирање. Доколку имаме две класи тогаш секогаш треба да користиме непарен број, бидејќи доколку бројот на соседи е непарен, тогаш една од класите секогаш ќе има барем еден објект повеќе од другата класа. Кога бројот на класи е поголем од 2, тогаш 25

26 е потешко да се избере вредноста на k. Во најмала рака, бројот k се препорачува да биди за 1 поголем од бројот на класи. Методот со k-најблиски Соседи има одредени слабости. Една од нив е што за да се одредат најблиските k соседи треба да се пребараат голем дел од податоците во базата, во најлош случај сите. Овој проблем можи да се адресира на неколку начини, најчесто преку соодветен избор на алгоритам за пребарување. Друг проблем, е проблемот со димензионалноста. Овој метод функционира многу добро, доколку бројот на влезните променливи со кои е опишан еден објект е мал, но има големи потешкотии кога имаме поголем број на влезни променливи (најчесто повеќе од 10). Методот иако има одредени слабости, сепак се користи во голем број на полиња, меѓу кои едни од попознатите се компјутерската визија, каде се користи не само за препознавање на текстови туку и во посложени апликации за препознавање на содржината на одредено видео со цел прикажување на слични видеа, а исто така и во компјутерската геометрија, биоинформатиката и други. 4.2 Наивен Баесов класификатор Наивниот Баесов класификатор се користи за класифицирање на објектите во класи според најголемата веројатност на припаѓање. Методот ја применува Баесовата теорема поради што и го носи името Баесов класификатор, а се нарекува наивен бидејќи претпоставува дека карактеристиките на објектот се независни една од друга. Иако оваа претпоставка за независноста на карактеристиките скоро секогаш е неточна, сепак методот се покажува како доста ефективен во голем број реални и комплексни проблеми. Друг бенефит од оваа претпоставка е што се поедноставуваат пресметките. Наивните Баесови класификатори спаѓаат во класата на алгоритми кои учат со надгледување, а се користат во проблеми за линеарна класификација, бидејќи доколку влезните објекти не се линеарно разделливи, овие класификатори ќе имаат проблем да се справат со податоците и нема да даваат задоволителни резултати. Прашањето на кое одговараат овие класификатори е следното: Која е веројатноста даден објект x со карактеристики x1, x2,, xn да припаѓа на класа c? 26

27 Поради тоа што класификаторот претпоставува дека карактеристиките се независни една од друга, пред да можи да се пресмета на која класа и припаѓа влезниот објект, мора да се пресмета веројатноста со која секоја од карактеристиките припаѓа на одредена класа. Откако ќе се пресметаат веројатностите, истите се множат и преку пресметување на производот се одредува веројатноста со која влезниот објект и припаѓа на таа класа. Процесот мора да се повтори за секоја од класите со цел да се најди класата на која најверојатно и припаѓа влезниот податок. Откако ќе бидат земени во предвид сите карактеристики и сите класи, онаа класа со најголема веројатност ќе биде одберена како класа на која ќе и биде доделен влезниот објект. Во зависност од проблемот кој го решаваме, како и од тоа што сметаме дека е најважно и од резултатите кои ги очекуваме можиме да избериме да користиме една од повеќето варијации на наивниот Баесов модел. Едни од попознатите варијации се Гаусовиот класификатор, Бернулиевиот класификатор и Мултиномиалниот класификатор. Најчесто кога ќе имаме податоци со континуирана вредност ќе го користиме Гаусовиот наивен Баесов класификатор, затоа што како што кажува името, Гаусов, претпоставуваме дека континуираните податоци за секоја од класите имаат нормална распределба (уште позната и како Гаусова распределба). Слика График на Гаусова распределба Од друга страна доколку работиме со дискретни податоци, на пример текст, тогаш се преферираат некои од другите модели. Така ако при класификација ни е важно колку пати се има појавено дадена карактеристика (на пример број на појавувања на даден збор во еден текст) тогаш Мултиномиалниот наивен Баесов класификатор е доста погоден за употреба. Доколку 27

28 бројот на појавувања на карактеристиката не ни е важен и ни е доволно да знаеме дека се појавила барем еднаш тогаш се користи варијација на Маултиномиалниот модел, наречена Бинарен Мултиномиален наивен Баесов класификатор. Од друга страна Бернулиевата варијација на наивниот Баесов класификатор, ќе се разликува од стандарниот Мултиномиален класификатор не само по тоа што нема да се интересира дали една карактеристика се појавила повеќе и колку пати, туку исто поради тоа што ќе се интересира дали карактеристиката не се појавила. Исто како и кај Бинарниот Мултиномиален наивен класификатор и кај Бернулиевиот наивен класификатор нема да се брои колку пати се појавила или не карактеристиката во некој класа, туку ќе има само две вредности, 1 доколку се појавила и 0 доколку не се појавила карактеристиката за дадена класа. Варијацијата која ќе се користи ќе зависи од проблемот кој сакаме да го решиме, првенствено од типот на податоците (континуирани наспроти дискретни) како и од очекуваните резултати, бидејќи дури и две варијации да работат со дискретни податоци, можат за истите вредности да дадат различни резултати. Наивниот Баесов класификатор спаѓа во групата на т.н. нестрпливи алторитми бидејќи учењето кај овие алгоритми (тренинг фазата) започнува одма откако ќе бидат достапни податоците. Предноста на овие алгоритми е тоа што после завршувањето на тренингот повеќе нема потреба од тренинг податоците со цел да се направат предвидувања за нови досега несретнати податоци. Кај овие алгоритми најдолго трае фазата на тренирање (фазата на градење на моделот), а додека фазата на извршување (кога имаме реални податоци откако тренингот завршил) ќе биди релативно брза. Иако е со послаби перформанси од некои од останатите методи како Random Forest, Support Vector Machines и други, сепак наивниот Баесов класификатор е многу ефикасен поради помалиот број на податоци кои се потребни за тренирање како и полесниот начин на пресметка со што нема потребата од голем мемориски простор и процесорска моќ. 4.3 Само-Организирачки Мапи 28 Само-Организирачките Мапи (уште познати и како Мапи на Кохонен, во чест на нивниот креатор, Финскиот професор Теуво Кохонен) се тип на Вештачки Невронски

29 Мрежи кои учат без надгледување, а кои имаат за цел креирање на т.н. мапа (најчесто во 2D) на која се визуелизира повеќедимензионалниот влезен простор на тренинг податоците. Бидејќи повеќедимензионалниот простор се претставува со помалку димензии, овој метод спаѓа во групата на методи за намалување на димензија. Иако се дел од нив, Само-Организирачките Мапи се разликуваат од најголем дел од Вештачките Невронски Мрежи на 3 начини: 1. Не се составени од меѓусебно поврзани слоеви од неврони, туку најчесно претставуваат 2D мрежа од неврони. 2. Не учат преку корекција на грешки, туку преку т.н. компетитивно учење. 3. Поради тоа што користат компетитивно учење, кое е учење без надгледување, и проблемите кои ќе ги решаваат ќе бидат проблеми од областа на учењето без надгледување. Секој од невроните во мрежата има вектор од тежини кој има онолку елементи колку што е димензијата на влезните податоци т.е. колку што има карактеристики со кои е опишан секој од влезните податоци. Покрај векторот со тежини, невроните исто така имаат и вредност со која се означува нивната позиција во мрежата. Невроните во мрежата најчесто се подредуваат во квадратна или хексагонална топологија (слика 4.3.1). Слика Квадратна топологија (лево) и хексагонална топологија (десно) Бројот на неврони во мрежата ќе игра голема улога во резултатите кои ќе ги добиваме од мапата. Покрај бројот на неврони, друга битна вредност е димензијата на мапата. Најчесто мапата ќе биди 2-димензионална, бидејќи на тој начин најлесно можеме да ги визуелизираме податоците. Ова е доста погодно кога сакаме да го визуелизираме 29

30 влезниот простор со повеќе од 3 димензии, бидејќи податоците кои се од 4, 5 или повеќе-димензионален простор не можиме да ги визуелизираме во оригиналната димензија, но доколку истите се мапираат на пример во 2D просторот тогаш е многу полесно за визуелизација, со што многу полесно ќе можиме да видиме како се поврзани помеѓу себе и како се групирани според сличностите. Но пред воопшто да можи да се направи мапирање, мора да се одреди кој од сите неврони ќе се активира за дадените влезни податоци. Начинот на кој се прави тоа е со компетитивно учење. Најпрвин секој од невроните во мрежата добива вектор со тежини кои најчесто имаат случајно избрана вредност. Секој од овие неврони е конектиран со сите влезни карактеристики со кои е опишан влезниот податок (карактеристиките се сместени во влезен вектор), па поради тоа мора да има онолку тежини колку што има елементи во влезниот вектор со карактеристики. Слика Секој од невроните (црвени кругови - горе) има две тежини (испрекинати линии) по една за секој од влезните елементи (виолетови кругови - долу). Секој од невроните е конектиран со соседните неврони (полни линии) Откако ќе се добија податок на влез, се бара невронот чиј вектор со тежини е најблиску до влезниот вектор. Притоа влезниот податок им се прикажува на сите вектори, со цел сите да имаат шанса во процесот на селекција на победник. Невронот кој го содржи тежинскиот вектор кој е најблиску до влезниот вектор се вели дека се активирал и се прогласува за победник. После наоѓањето на победникот, треба да се подесат тежините на истиот, со цел да биди поблиску до влезниот податок. Во стандардниот метод на компетитивно учење подесувањето се прави само кај невронот кој е прогласен за победник, додека сите 30

31 останати неврони остануваат непроменети. Поради ова, овој метод уште се нарекува и метод во кој победникот добива се. Но кај само-организирачките мапи, покрај што се подесуваат тежините на победникот, исто така се подесуваат тежините и на неговите соседи. Притоа најмногу ќе биди подесен невронот-победник, па невроните кои се најблиску до него и така се помалку и помалку како што се зголемува растојанието помеѓу невронот-победник и останатите неврони од мрежата. Вредноста со која ги променуваме тежинските вектори во даден временски момент во текот на тренингот се нарекува стапка на учење, и заедно со стапката на намалување на радиусот на соседството игра голема улога во работата на овој метод. Слика Колку невроните се подалеку од победникот (црвениот круг), толку помал е степенот со кој треба да ги корегираат своите тежински вектори. На (слика 4.3.4) е дадено мапирање на 3D влезен простор во 2D простор, со цел визуелизација на сличностите на влезните податоци. Влезните податоци ќе бидат RGB боите, а додека трите елементи со кои се опишани се процентуалниот интензитет на трите вредности (црвена, зелена и плава) со чие комбинирање се добиваат сите останати бои од RGB моделот на бои. На почеток секој од невроните во мапата добива вектор со случајно генерирани тежини, кој содржи три елементи w1, w2, w3, по една тежина за секој од трите елементи на влезниот вектор x1, x2, x3, каде со x1 е даден интензитетот на црвената, со x2 на зелената и со x3 на плавата боја. Една од најголемите предности на само-организирачките мапи е тоа што се едни од полесно разбирливите методи на машинско учење. 31

32 Друга предност е тоа што овозможуваат повеќе-димензионален простор (4D, 5D итн), кој инаку е невозможно визуелно да го претставиме, да можиме да го визуелизираме најчесто во 2D, со цел полесно да ги разбериме врските помеѓу мултидимензионалните влезни податоци. Слика Мапата го мапира 3D просторот во 2D. Содржи 40x60 неврони. Иако денес поретко се користат, сепак само-организирачките мапи сеуште наоѓаат примена во одредени ситуации и области. Една од првите примени на самоорганизирачките мапи е од областа на препознавање на говор, со цел класифицирање на фонеми во реално време. Друг начин на употреба, кој денес почесто се користи, е во комбинација со други методи на машинското учење, со цел постигнување на подобри резултати. Така само-организирачките мапи се користат за добивање на оптимално распоредени неврони за соодветниот проблем, а потоа вака распределените неврони можат да се користат во другите методи со цел побрз и полесен процес на учење без потреба од голем број на податоци. Исто така се користат и за обработка и калсификација на слики и сателитски податоци, во економијата, социјалните науки, дијагноза на системи итн. 32

33 5 Генетски Алгоритми Како што во природата постојат најразлични интелигентни системи и процеси, како и методи преку кои истите се изразуваат, така и во компјутерската наука се појавиле најразлични класи на интелигентни алгоритми инспирирани од природата. Еден од моделите на кои се базирани едни од поуспешните алгоритми во областа на интелигентни алгоритми инспирирани од природата се генетските алгоритми. Истите се дел од поголема класа на т.н. еволутивни алгоритми, а се базираат на биолошките процеси како мутација, вкрстување и селекција. Првите идеи за користење на еволуцијата или некои од нејзините принципи, со цел дизајнирање на интелигентни системи, се појавуваат уште во 50-тите години на минатиот век. Во [9] Алан Туринг зборува за машини кои ќе учат и кои ќе функционираат на принципи слични на оние на еволуцијата. Некои од позначајните резултати во почетокот на еволутивното програмирање се забележуваат почнувајќи во 1957-та година кога се направени повеќе симулации на вештачка селекција на организми преку контролирање на посакуваните карактеристики на тие организми [10]. Во овај период почнуваат да се појавуваат првите примери на практична примена на принципите на еволуцијата со цел добивање на нови и избирање на најдобри решенија од група на постоечки кандидат решенија за даден проблем. За најдобро да можеме да ги разбериме генетските алгоритми мора најпрвин да ги разбериме еволутивните и биолошките процеси на кои се базирани. Сите биолошки врсти кои постоеле, постојат и допрва треба да се појават, имаат заеднички морфолошки и биохемиски карактеристики, меѓу кои се разбира една од најзначајните е имањето на ДНК (Дезоксирибонуклеинска киселина). ДНК-та е одговорна за нашите особини, но и за тоа што го наследуваме од нашите родители. Ова наследување на карактеристики всушност е наследување на гени од родителите. Доколку навлеземе подлабоко во ДНК, ќе видиме дека не е ДНК-та таа која е одговорна за особините, туку тоа се гените во нејзиниот состав. Преку промена на овие гени, ќе се менуваат карактеристиките на организмите. Гените се групирани во групи наречени хромозоми. Кај организмите кои се размножуваат полово, половина од хромозомите ќе бидат наследени од едниот, а другата половина од другиот родител. На тој начин новиот организам (детето) ќе ги има генетските особини на двата родители, а 33

34 во исто време ќе биди уникатен. Одвреме навреме некој од гените ќе мутира, што ќе резултира со целосно нови карактеристики кои ги нема ниту еден од двата родители. Најчесто единките со најдобри генетски карактеристики се оние кои профитираат преку процесот на природна селекција, оставајќи најголем број на потомци со пожелни генетски карактеристики. Генетските алгоритми се аналогни на овие биолошки процеси, па така како што имаме гени, хромозоми, мутација, вкрстување и селекција во биологијата, истото ќе го има и кај генетските алгоритми. Гените се основните елементи од кои се градат решенијата кај генетскиот алгоритам. Најчесто во генетските алгоритми, гените ќе бидат битови (0 или 1), но во зависност од проблемот можи да се случи да има гени и од друг тип. Како и во биологијата и овде гените се групирани во хромозоми. Хромозомите се низи од гени и во основа хромозомите ќе претставуваат кандидат решение добиено од генетскиот алгоритам за даден проблем. Сите хромозоми (уште наречени и индивидуи) ја сочинуваат популацијата односно сите кандидат-решенија за даден проблем. Преку еволуција на решенијата од популација, ќе се движиме кон се подобри и подобри решенија за дадениот проблем. Но пред воопшто да започни процесот на еволуција кај генетските алгоритми, најпрвин ќе треба да се креира популација од решенија. Ова најчесто се прави така што се генерираат решенија кај кои хромозомите ќе бидат составени од гени со случајно избрана вредност. Повремено и за одредени проблеми може наместо случајно генерирани решенија, да имаме решенија со вредности за кои мислиме дека се слични на очекуваното најдобро решение за проблемот кој го решаваме. Просторот на пребарување се сите можни решенија кои ги има за еден проблем. Во зависност од проблемот кој се решава, најчесто просторот на пребарување ќе биде огромен, а со самото тоа ќе биди реално неизводливо да се проверат сите решенија со цел да се најди најдброто решение (слика 5.1). Затоа генетските алгоритми е препорачливо да се користат за решавање на проблеми кај кои е доволно да се најди 34

35 најприфатливото решение кое можи да се добија во даден временски период, иако не мора истото да биди најдоброто решение кое постои. Бидејќи често не ќе можиме да го знаеме, а ниту пак да го пресметаме квалитетот на секое решение во просторот на пребарување со цел да го најдеме Слика 5.1 Често е невозможно да се пребаруваат сите решенија за даден проблем, за да се најде најдоброто решение (плавата точка) најдоброто, а поради тоа што соседни решенија ќе имаат сличен квалитет, ќе биди многу полесно да имаме решенија од повеќе делови од просторот на пребарување, со цел да знаеме отприлика каде можи да се наоѓа најдоброто решение или некое кое е доволно прифатливо за потребите на проблемот (слика 5.2). Ова е уште една од Слика 5.2 Со избирање на што е можно поразлични случајно генерирани решенија (црните точки) полесно ќе го најдеме најдоброто/најприфатливото решение предностите доколку на почеток имаме популација со случајно генерирани решенија. Со цел да се најди најдоброто решение, а во зависност од проблемот кој се решава, ќе треба да избериме соодветен број на единки од кои ќе биди создадена популацијата. Овој број ќе има голема улога во брзината на извршување на алгоритмот. Најголем дел од проблемите кои се решаваат со генетските алгоритми, ќе имаат потреба од популација со неколку стотини до неколку илјади единки. 35

36 Добриот избор на решенија во почетната популација ќе ни помогни да избегнеме одредени проблеми со кои може да се соочиме кај алгоритмите за пребарување, како што е проблемот на локални оптимуми. После генерирањето на популацијата, можи да се започни со процесот на еволуција. Првиот чекор е пресметувањето на квалитетот на секое од решенијата во популацијата т.е. колку е истото блиску до остварување на дадените очекувања. Ова се прави со т.н. фитнес функција. Самата фитнес функција ќе зависи од проблемот кој се решава. Идеата позади користењето на фитнес вредности е да се има мерна вредност која ќе ни овозможи на полесен начин да ги избериме најдобрите решенија во популацијата, кои ќе се користат во понатамошните процеси со цел добивање на нови единки и креирање на нова генерација. После пресметувањето на фитнес вредностите се прави вкрстување на решенија со цел да се добија ново решение. Притоа избирањето на родителите може да се направи на различни начини. Еден од наједноставните начини е според фитнес вредностите да се изберат најдобрите 2/3 од решенија и непроменети да се пресликаат во новата генерација на решенија. Овие најдобри 2/3 потоа се групираат во парови (првото со второто, третото со четвртото, петтото со шестото итн...) и со комбинација на овие решенија се добива последната третина од решенијата на новата генерација. Слика 5.3 најдобрите 2/3 решенија од генерација1 непроменети ќе се копираат во генерација2. Преостанатите решенија се добиваат со нивна комбинација 36

37 Еден од попознатите начини на избирање на решенија за комбинација е со т.н. фитнес-пропорционална селекција или уште позната како селекција со рулет-тркало. Кај овој тип на селекција веројатноста еден хромозом да биди селектиран го претставува односот помеѓу неговата фитнес вредност и збирот на фитнес вредностите на сите хромозоми во популацијата. Една од најупотребуваните селекции е турнир селекцијата. Турнирот се прави така што по случаен избор се избираат претходно дефиниран број на индивидуи кои се натпреваруваат помеѓу себе (најчесто натпреварувањето се состои во споредување на фитнес вредностите) и се избира победникот (индивидуата со најдобра фитнес вредност), кој потоа учествува во процесот на комбинација. После изборот на двата родители (двата хромозоми кои ќе се комбинираат), следува процесот на комбинација. Во зависност од тоа како е имплементиран процесот на комбинација можи да се добиваат едно или две нови решениа. Комбинирањето исто како и селекцијата можи да се прави на различни начини. Доколку комбинирањето се прави на ниво на хромозом и не ни е битен редоследот на гените ниту пак тоа дали се повторуваат или не можи да се прави комбинација со користење на една позиција. Се бира една поцизија во хромозомот и сите гени кои се лево од таа позиција се земаат од првиот родител, а сите гени кои се десно од таа позиција се земаат од вториот родител, за да се добија нов дете-хромозом т.е. ново решение. Со обратна комбинација на гените се добива второто дете-хромозом (слика 5.5). Слика 5.4 Рулет-селекцијата може да се замисли како тркало за рулет кај кое секој од хромозомите има по едно поле со површина колку неговата селекциона вредност 37

38 Слика 5.6 Комбинација со една позиција Доколку наместо една се избрани две позиции, тогаш комбинирањето ќе се прави така што гените кои се помеѓу двете позиции ќе бидат од едниот, а гените кои се од надворешните страни на двете позиции ќе бидат од другиот родител (слика 5.6). Слика 5.5 Комбинација со две позиции Ако пак комбинирањето се прави на ниво на гени, тогаш ќе одиме ген по ген во хромозомите, притоа одлучувајќи по случаен избор од кој родител да се наследи генот на моменталната позиција (слика 5.7). Доколку се добиваат две деца тогаш кај второто дете ќе се земи генот од родителот кој не бил избран на таа позиција. Слика 5.7 Униформна комбинација Од друга страна пак, доколку уникатноста на битовите е важна тогаш постојат други начини на комбинација, меѓу кои и т.н. подредена комбинација. Се избираат две позиции во хромозомот и сите гени помеѓу овие позиции се поставуваат на истите позиции во детето-хромозом (слика 5.8). Откако ќе се направи ова, се додаваат гените и од другиот родител, така што се земаат сите гени почнувајќи од првиот ген после десната позиција и се додаваат од почетокот на детето хромозом, се разбира само доколку истите ги нема т.е. не се веќе копирани од првиот родител (слика 5.9). 38

39 Слика 5.10 Подредена комбинација Прв чекор Слика 5.9 Подредена комбинација Втор чекор Покрај што во процесот на комбинација може да се добиваат повеќе од едно дете, исто така може да учествуваат и повеќе од два родители. На пример комбинацијата на три хромозоми можи да се применува кога хромозомите се составени од битови, а функционира така што се споредува дали на дадена позиција првиот и вториот хромозом имаат гени со иста вредност и доколку ова е точно детето ќе го наследи тој бит, а доколку не е точно (родителите имаат различен ген на таа позиција) тогаш детето го наследува битот од третиот родител (слика 5.10). Слика 5.8 Комбинирање на три хромозоми. После комбинацијата следува процесот на мутација. Еден од основните е методот на мутирање на бит-низата, кој е најпогоден доколку гените се битови. Се зема секој од гените во хромозомот редоследно и по случаен избор се одлучува дали генот ќе мутира или не. Доколку е одлучено да мутира се заменува со спротивната вредност (слика 5.11). 39

40 Слика 5.11 Мутација на низа. Варијација на овој метод е замената само на еден ген, каде по случаен избор се одредува кој од сите гени во хромозомот ќе мутира или додатно можи да се прошири методот со воведување на дополнителна одлука дали избраниот ген ќе мутира или не, повторно по случаен избор (слика 5.12). Слика 5.12 Случајно избраниот ген (розово квадратче горе) одлучуваме дали ќе мутира ( ) или не ( ). Од друга страна можиме да имаме и мутација каде секој ген мора да мутира, па ова ќе претставува превртување на битови на ниво на хромозом (слика 5.13). Слика 5.13 Секој од гените ќе биди замене со спротивна вредност. Мутацијата можи да се прави и со замена на вредностите на два гени по случаен избор, а се применува почесто бидејќи не мора гените да бидат битови, туку можи да бидат од друг тип. Се прави така што случајно се одбираат две позиции во хромозомот и гените на тие позиции си ги заменуваат местата (слика 5.14). Слика 5.14 Мутација со замена 40

41 Кај мутацијата со вметнување се избираат два гени по случаен избор после што вториот ген се поставува после првиот на тој начин преместувајќи ги сите гени после првиот ген за едно место надесно (слика 5.15). Слика 5.15 Мутација со вметнување Кај мутацијата со инверзија се избираат две позиции во хромозомот и сите гени помеѓу тие позиции си го сменуваат редоследот (слика 5.16). Слика 5.16 Инверзна мутација. Варијација на оваа мутација е наместо да се постават гените по обратен редослед, истиот целосно да се измеша и гените помеѓу двете позиции да бидат случајно подредени (слика 5.17). Слика 5.17 Мутација со мешање Мутацијата, безразлика на начинот на кој се прави, ќе игра голема улога особено во избегнувањето на проблемот со локалните оптимуми и локалните минимуми. Најмногу ќе зависи од т.н. степен на мутација, кој претставува вредност со која се одредува веројатноста еден ген да мутира откако ќе биди избран, а често ќе влијае и врз веројатноста генот воопшто да биди избран за мутација. Колку што оваа вредност ќе биди поголема, толку поголема ќе биди шансата гените да мутираат, а со тоа и поголема разновидноста на единките во генерацијата. Но доколку оваа вредност е 41

42 преголема тоа ќе има негативно влијание, бидејќи преголемата разновидност често ќе предизвикува губење на добрите решенија од претходната генерација. Еден од начините на справување со проблемите кои можи да настанат доколку се користи преголем степен на мутацијае со воведување на елитизам. Елитизмот е вредност која одредува колку од најдобрите решенија од моменталната генерација ќе се задржат во наредната генерација, непроменети. Елитизмот ни овозможува дури и со голем степен на мутација, кој инаку можи да предизвика мутирање на најдобрите решенија, често во полошо решение, забавувајќи го процесот на наоѓање на најприфатливо решение, да ги задржиме најдобрите решенија непроменети. После мутацијата завршува еволутивниот процес на моменталната генерација и истиот се повторува за новодобиената генерација. Овај итеративен процес ќе трае се додека не се достигни одредена состојба на завршување. Некои од најчестите завршни состојби се: 1. Завршување после наоѓање на решение кое ги задоволува минималните критериуми кои се поставени пред почетокот на алгоритмот. Истото не мора да биди најдоброто решение, но е доволно добро за да биди прифатливо и да нема потреба да ги пребаруваме останатите решенија. 2. Завршување после одреден број на итерации. Оваа завршна состојба најчесто ќе се имплементира со цел доколку не биде најдено задоволително решение во даден број на генерации, да не продолжиме со итерирање. Најчесто, доколку се изврши оваа завршна состојба, најдоброто решение од последната генерација нема да ги исполнува минималните критериуми за да биди прифатливо. 3. Доколку последователните генерации после неколку итерации се премногу блиски, најверојатно е достигнат одреден максимум од кој не се очекува дека ќе излези алгоритмот или доколку излези ќе треба многу време, па е подобро да се прекини со цел непотребно губење на време. Како и сите алгоритми така и генетските алгоритми имаат свои слаби и јаки страни. Една од предностите на генетските алгоритми е поврзана со решенијата кои ги генерираат. Во зависност од проблемот кој го решаваат, се случува решенијата да бидат такви што е многу тешко, па дури и невозможно да бидат дизајнирани од страна на човекот или такви кои ќе даваат многу подобри резултати од било кое човечки креирано решение, бидејќи често ќе доаѓаат до решение на начин кој инаку не би го 42

43 зеле во предвид, а ќе предвидуваат користење на системот на начин кој е поразличен од стандардниот. Ова е особено забележливо кај областите на примена кои бараат решенија во форма на дизајн, било тоа да е уметност, мода, архитектура, електроника и слично. Безразлика на областа на примена, кај генетските алгоритми секогаш постои потенцијалот за новитет во решенијата, често дури и за иновации кои некогаш не ни знаеме дека се возможни. Од друга страна, токму поради тоа што можат да решаваат најразлични проблеми, често ќе има потреба од голема пресметковна сила. Најголема тешкотија ќе претставува токму фитнес функцијата, која најчесто ќе одзема најголем дел од времето на извршување, особено за проблеми кај кои не е едноставно да се одреди квалитетот на кандидат-решението. Често извршувањето на фитнес функцијата ќе биди многу скапо, а за некои реални проблеми ќе треба и неколку дена за да се пресмета фитнес вредноста на понуденото решение. Голем дел од проблемите кои ги решаваат и каде се најчесто применливи генетските алгоритми се оптимизациски проблеми. Така се користат при оптимизирање на 3D дизајнот на различни механички компоненти, како на пример гасни турбини, авионските крила со цел поголема аеродинамичност, како и креирање на еволуирани антени. Исто така се применуваат и во најразлични финансиски активности, во системите за дизајнирање на распореди, особено на распореди за производствените системи, каде добриот распоред на активностите може да заштедни огромни суми на пари. Се применуваат во биоинформатиката, во климатологијата за моделирање на глобалните климатски промени, во медицината, во роботиката и во многу други области со практична примена. 43

44 6 Fuzzy системи Fuzzy системите се системи кои се базираат на fuzzy логика. За потребите на овој магистерски труд под fuzzy логика ќе подразбираме множество од класи во кои членството ќе биди процентуално и кај кои класи границите нема да бидат јасно дефинирани. Истата ќе се користи кога не ни е пресудно да бидиме целосно точни и прецизни во одлуките и решенијата кои ги донесуваме, туку и помала прецизност ќе биди задоволителна доколку крајната цел е постигната. Поради тоа што ќе го имитира човековото расудување и изразување, наместо со броеви, променливите ќе бидат изразени со користење на зборови. Иако зборовите се многу понепрецизни од броевите, истите нудат поголема толеранција, а со самото тоа операциите кои ќе се извршуваат во системот ќе бидат пресметковно поевтини, а исто така резултатите кои се добиваат и/или одлуките кои се донесуваат ќе бидат поинтуитивни и полесно разбирливи за човекот. Fuzzy логиката спаѓа во групата на повеќе-вредностни логики, кај кои вистинитоста на една променлива ќе биди реален број помеѓу 0 и 1. На овој начин, една променлива или израз можи да има вредност на вистинитост која ќе биди некаде помеѓу целосно точно и целосно неточно т.е. можи да биди делумно точно. За најлесно да разбериме што ни нуди и како функционира fuzzy логиката, најпрвин ќе позборуваме за дво-вредносната Булова логика. Кај Буловата логика, секоја променлива можи да има вистинитост со една од двете вредности: неточно или точно (најчесто се означува со 0 или 1 соодветно). Оваа дво-вредносна Булова логика се користи во компјутерите за претставување на податоците и за извршување на најразлични функции. Предноста на користењето на Буловата логика е што е многу едноставно да се претсават Буловите вредности со користење на струја. Но за сметка на ова, кај компјутерите ќе биди невозможно да се претстават концепти како концептот на делумна точност. 44

45 Пример за Буловата логика од секојдневниот живот се календарските годишни времиња. Така во календарската година прецизно се одредени датумите на кои завршува едно, а почнува друго годишно време. Реално преминот од едно во друго годишно време е постепен. Слика 6.1 Премин помеѓу годишните времиња според Буловата логика Овие постепени премини од едно во друго годишно време т.е. генерално гледано од една во друга класа, односно можноста за делумна припадност на повеќе од една класа, е карактеристична за fuzzy логиката. Слика 6.2 Реален премин помеѓу годишните времиња Тоа што Буловата логика и fuzzy логиката се разликуваат не значи дека не можат да се искористат за решавање на исти проблеми. Напротив проблемите кои можат да ги решат можат да бидат исти, но начинот на кој ќе дојдат до решението ќе биди сосема различен. За поедноставни системи, самата имплементација со користење на Буловата логика нема да биди тешка и сложена, но често за посложени системи ќе мораме да бараме алтернатива на стандардната логика. Доколку истиот проблем сакаме да го решиме со користење на fuzzy логиката првото нешто што ќе треба да го направиме е 45

46 да креираме листа на правила кои се битни за овој проблем и според кои ќе дојдеме до решението. Да земиме еден реален пример, каде е пожелно да се употребува fuzzy логика. Имаме еден базент со вода, кој се надополнува од една цевка за која можиме да го контролираме количеството на проток, и од кого водата истекува од друга цевка врз која немаме контрола. Притоа важно е нивото на водата во базентот да се одржува во одредени граници. Тоа ќе се прави така што ќе одлучуваме со колкав интензитет да го дополнуваме базентот. Така за примерот можеме да ги имаме следните 3 правила 1. Ако нивото на вода е ниско или интензитетот на празнење е голем тогаш интензитетот на дополнување ќе биди голем. 2. Ако нивото на вода е средно тогаш интензитетот на дополнување ќе биди среден. 3. Ако нивото на вода е високо или интензитетот на празнење е мал тогаш интензитетот на дополнување ќе биди мал. Овие три правила всушност се правилата во fuzzy системот. Од нив може да се види дека системот е многу едноставен, интуитивен и лесно разбирлив за човекот. Следно што ќе треба да се направи е да се одреди математичкото значење на зборовите мал, голем, високо итн. За да го одредиме нивното математичко значење најпрвин ќе треба да го одредиме влезниот простор на секоја од влезните променливи. Поради тоа што зборовите како ниско, високо итн. можат да имаат најразлична вредност во зависност од променливата која ја опишуваат, мора најпрвин да ги одредиме минималната и максималната вредност која можи да ја има променливата во нејасниот систем. Откако ги имаме горната и долната граница на можните вредности на влезната променлива ниво_на_вода, можиме рангот да го поделиме на три делови во кои ќе бидат опфатени сите вредности кои може да бидат наречени ниско, средно и високо ниво_на_вода соодветно. 46

47 Бидејќи работиме со fuzzy логика, преминот помеѓу подмножествата нема да биди нагли премин, туку ќе се прави постепено, па еден од можните поделби е како на слика 6.3. Слика 6.3 Трите вредности (ниско, средно, високо) кои можи да ги има променливата ниво_на_вода. Соседните вредности се преклопуваат, а премините помеѓу нив се постепени. Се разбира можи и во fuzzy логиката да имаме премини кои се нагли како кај Буловата логика, но ова ќе се применува исклучиво ретко и во специфични ситуации и најчесто само на дел од рангот во одредени променливи. Сите вредности кои можи да ги има една променлива (безразлика дали е влезна или излезна) се нарекуваат универзум на говор бидејќи влезните и излезните променливи, како и правилата во кои истите се употребени користат зборови од секојдневниот говор, наместо нумерички вредности. Откако ќе го определиме универзумот на говор за секоја од влезните променливи и ќе одредиме кој и колкав дел од истиот ќе и припаѓа на секоја од влезните вредности за тие променливи, следно што треба да направиме е за дадена нумеричка вредност на влезната променлива, да ја добиеме соодветната лингвистичка вредност. Овој процес се вика процес на фазификација (fuzzification). Бидејќи рековме дека во fuzzy логиката ќе имаме точност која ќе се движи помеѓу 0 (100% неточно) и 1 (100% точно), односно припадност на класа или на лингвистичка вредност помеѓу 0 (целосно не припаѓа) и 1 (целосно припаѓа), можи да се случи дадена нумеричка вредност да има степен на припадност во одредена класа од 0.33 или 0.5 или 0.98 итн. За да го одредиме овој степен на припадност на одредена нумеричка вредност во некоја од лингвисичките вредности ќе користиме функција на членство. 47

48 Функциите на членство се користат за мапирање на нумерички во лингвистички вредности и обратно. Во зависност од типот кој се користи, функцијата на членство можи да има различни форми. Слика 6.4 Графички приказ на различни фунцкии на членство. Од горе кон долу и од лево кон десно: триаголник, трапез и ѕвоно (прв ред), сигмоид, Гаусова и z-крива (втор ред), синглтон и по_делови_линеарна крива (трет ред). Постојат и многу други функции на членство, но овие се едни од најкористените. Откако ќе ја земиме влезната нумеричка вредност на променливата и за истата ќе го пресметаме степенот на членство во секоја од класите (лингвистичките вредности), следно што ќе треба да направиме е да преминиме на извршување на правилата. Правилата во fuzzy логиката како и кај Буловата логика, претставуваат IF-THEN правила кои се составени од два дела од кои првиот дел (IF делот) се нарекува претходник или причина, а вториот дел (THEN делот) се нарекува следбеник или последица. Бидејќи вредностите кои ги добиваме од функциите на членство ќе бидат помеѓу 0 и 1, и IF-делот во правилото ќе биди број со вредност помеѓу 0 и 1. Кога IF-делот од правилото е составен од повеќе делови, секој од деловите се пресметува истовремено користејќи ја соодветната функција на членство и откако 48

49 секој од деловите ќе биди заменет со соодветна бројка (степенот на членство), со користење на соодветните логички оператори со кои се поврзани деловите (И, ИЛИ...) се пресметува еден број кој ќе го претставува IF-делот во правилото. Овој број со кој ќе се замени IF-делот од правилото и кој има вредност помеѓу 0 и 1 се нарекува степен на поддршка за правилото. После пресметувањето на степенот на поддршка, треба да се изврши вториот дел од правилото т.е. THEN-делот односно последицата. Но пред да го направиме тоа, најпрвин треба да кажиме нешто повеќе за логичките оператори со кои се сврзуваат деловите во првиот дел од правилото. Како и кај Буловата логика, така и кај fuzzy логиката најчесто ќе се користат логичките оператори И, ИЛИ и НЕГАЦИЈА, но истите ќе имаат сосема друго значење. Кај Буловата логика употребата на логичките оператори е многу едноставна бидејќи работиме со целобројни вредности за точност односно со 0 и 1 (неточно и точно соодветно). Но бидејќи кај fuzzy логиката можиме да имаме и вредности помеѓу 0 и 1, што би се добило за (0.29 И 0.9) или за (0.5 ИЛИ 0.3) или за (НЕ 0.74)? Бидејќи логичките операции во fuzzy логиката не можи да се применат на ист начин како и во Буловата логика мора да се користи алтернатива. Притоа имаме поголем избор на операции со кои ќе ги замениме Буловите логички операции. Најчесто користените операции во fuzzy логиката се операциите: 1. МИНИМУМ(x, y) како замена за Буловата логичка операција И 2. МАКСИМУМ(x, y) како замена за Буловата логичка операција ИЛИ 3. 1 x како замена за Буловата логичка операција НЕГАЦИЈА Друга алтернатива е со користење на следните операции: 1. x y како замена за Буловата логичка операција И 2. x + y (x y) како замена за Буловата логичка операција ИЛИ Логичката операција ИЛИ во обликот x + y (x y) е добиена со замена на вредности во условот НЕ( НЕ(x) И НЕ(y) ) каде доколку замениме со соодветните операции ќе добиеме: 1 ((1 x) (1 y)) од што понатаму се добива 1 (1 y x + x y) за на крај да добиеме x + y (x y) 49

50 На слика 6.5 се дадени операциите И, ИЛИ и НЕГАЦИЈА за фунцкии на членство за лингвистички вредности во fuzzy логиката. Слика 6.5 Логичките операции И (лево), ИЛИ (средина) и НЕГАЦИЈА (десно) во fuzzy логиката Покрај овие операции, во fuzzy логиката се користат и други оператори кои се поблиски до разговорниот јазик како многу, делумно, донекаде итн. и кои ќе го менуваат степенот на членство со користење на разни математички операции како на пример степенување. Следниот чекор е извршувањето на вториот дел од правилото т.е. делот со последицата. Бидејќи во нејасните системи се користат лингвистички вредности во правилата, не можи само да се додели лингвистичката вредност на излезната променлива. Излезните вредности исто како и влезните треба да бидат нумерички. За ова ќе треба да направиме процес на дефазификација. За излезните променливи има универзум на говор, поделен помеѓу повеќе лингвистички променливи, секоја со соодветна функција на членство, кај која влезната нумеричка вредност е степенот на поддршка на правилото и истата ќе служи или да го минимизира или да го пресечи нејасното множество кое и е доделено на излезната променлива во правилото. Слика 6.6 За степен на поддршка на правилото од 0.67 (црвена испрекината линија), оригиналното множество (лево) добило различна форма кога е минимизирано (средина) или пресечено (десно) 50

51 Бидејќи може да имаме повеќе правила кои се однесуваат на истата излезна променлива, мора да ги извршиме сите, за да можиме да пресметаме нумеричка вредност која ќе ја доделиме на таа променлива. Откако ќе ги извршиме IF-деловите од сите правила кои се однесуваат на иста променлива, ќе добијаме степен на поддршка за секое од тие правила. Користејќи го степенот на поддршка во секое од правилата, ќе преминиме на минимизирање или пресекување на множеството кое се доделува на таа излезна променлива во THENделот од правилото. Слика 6.7 Извршување на IF-THEN правило во fuzzy логиката На сликата 6.7 графички е претсавено извршување на правилото: 1. АКО нивото_на_вода е ниско ИЛИ интензитетот_на_празнење е голем ТОГАШ интензитетот_на_дополнување е голем. Правилото има 2 влезни (ниво_на_вода и интензитет_на_празнење) и 1 излезна променлива (интензитет_на_дополнување). На горната половина е претставен графички просторот на говор (x-оската на графиците) на секоја од променливите, како и функциите на членство (триаголниците и трапезите на графиците) за секоја од вредностите со кои е опфатен просторот на говор за секоја од 3те променливи. 51

52 Влезната променлива ниво_на_вода (горе-лево) има три вредности (ниско, средно и високо), влезната променлива интензитет_на_празнење (горе-средина) има две вредности (мал и голем), а излезната променлива интензитет_на_дополнување (горе-десно) има три вредности (мал, среден и голем). Самото извршување на правилото графички е претставено во долната половина на сликата 6.7. За влезните вредности 7 за променливата ниво_на_вода и 5.7 за променливата интензитет_на_празнење (означени со виолетови точки на x-оската на графиците долу), се добиваат степени на членство 0 за вредноста ниско за променливата ниво_на_вода, односно 0.67 за вредноста голем за променливата интензитет_на_празнење. Бидејќи логичката операција која ги спојува двата изрази во IF-делот е ИЛИ, ќе ја извршиме операцијата МАКСИМУМ(0, 0.67) што ќе даде 0.67 како степен на поддршка на правилото. За оваа вредност во THEN-делот ќе биди пресечен графичкиот приказ на множеството (функцијата на членство) за вредност голем за излезната променлива интензитет_на_дополнување. Со цел да дознаеме која е нумеричката вредност која треба да и се додели на излезната променлива интензитет_на_дополнување треба овој процес на извршување да се направи и за сите останати правила во кои е опфатена излезната променлива интензитет_на_дополнување. Вака модифицираните множества на вредностите од променливата се спојуваат помеѓу себе во едно множество кое потоа ќе послужи за пресметување на нумеричката вредност која треба да се додели на излезната променлива. Ова извршување на сите правила со кои е опфатена иста променлива, како и спојувањето на модифицираните множества е дадено на слика 6.8. Исто како и во IF-делот така и во THEN-делот може да има повеќе делови поврзани помеѓу себе со И. Но во овај случај нема да се извршува логичката операција И, туку секоја од излезните променливи ќе се разгледува одделно (иако се заедно во правилото) и одделно ќе им се пресметува нумеричката вредност според претходно опишаниот принцип. Овдека И служи само за да кажи дека според ова правило треба сите наведени излезни променливи да добијаат одредена нумеричка вредност за дадениот степен на поддршка на правилото. 52

53 Слика 6.8 Извршување на 3 те правила со кои е опфатена излезната променлива ниво_на_дополнување Откако множествата на вредностите за излезната променлива се споени, постојат повеќе начини на кои може да се пресмета излезната вредност. Меѓу најкористените се методот на центар на гравитација, како и методите со бисектриса на површина, најлев максимум, најдесен максимум, средна вредност на максимуми итн. Доколку се користи центарот на гравитација за да ја добиеме вредноста на излезната променлива се применува следната формула: u = i μ(x i) x i i μ(x i ) ( 1 ) 53

54 Во формулата со μ(x i ) се означува степенот на членство за вредноста x i со која се означуваат сите нумерички вредности од универзумот на говор кои се опфатени со споеното множество од вредностите за излезната променлива. Овие вредности се наоѓаат на x-оската на графикот на слика 6.9. Во оваа формула нумеричките вредности за x i се дискретни и се наоѓаат на фиксно растојание една од друга. Доколку сакаме да го пресметаме центарот на гравитација за континуирани вредности, тогаш наместо сума треба да се користат интеграли. Со u е означена излезната променлива т.е. нумеричката вредност која треба да и се додели. Слика 6.1 Дискретна поделба (црните точки) на просторот кој го опфаќа множеството доделено на излезната променлива интензитет_на_довод Доколку се користат синглтони како функции за членство, формулата за центар на гравитација ќе го има обликот: u = i μ(s i) s i i μ(s i ) каде со s i ќе се означува нумеричката вредност од универзумот на говор (број на x- оската) каде е поставен синглтонот, а додека со μ(s i ) ќе се означува степенот на поддршка на правилото во чиј THEN-дел е употребен синглтонот. Во табела 2 се дадени вредностите од x-оската (црните точки) и соодветните степени на членство (y-оска) од функцијата на членство за множеството на слика 6.9. Табела 2 Нумерички вредности кои припаѓаат на универзумот на говор (x-оската) за излезната променлива интензитет_на_доток како и степените на членство (y-оската) за тие вредности. ( 2 ) x i μ(x i )

55 Доколку за вредностите од табела 2 се пресмета методот на центар на гравитација (центроид), ќе се добија вредноста од приближно , која ќе се додели на излезната променлива интензитет_на_довод = Колку што поделбата на множеството е со помал чекор т.е. колку што има повеќе точки, толку вредноста која се пресметува со дискретниот метод на центроид ќе биди поблиска до вистинскиот центар на гравитација кој може да се пресмета доколку се користат интеграли. Претходно опишаниот метод во fuzzy логиката се нарекува метод на Мамдани. Покрај овој метод постојат и други методи од кои еден од најпознатите и најупотребувани е методот на Сугено. И двата методи се многу слични помеѓу себе. Главната разлика е во THEN-делот и во тоа што најчесто кај овој метод функциите на членство се или линеарни или константи. Така кај Сугено методот нема да се извршува спојување на множествата со цел добивање на нова форма за која ќе се користи некој од методите како методот на центрои или на бисектриса, туку ќе се користат функции за да се добија нумеричка вредност со користење на влезните вредности. На пример ако се користи линеарна фунцкија истата можи да го има обликот: f(x 1, x 2 ) = a x 1 + b x 2 + c каде a, b и c се претходно дефинирани вредности, а додека x 1 и x 2 се нумеричките вредности на влезните променливи (доколку има помалку влезни променливи отколку што се потребни во правилото, тогаш оние кои фалат ќе имаат вредност 0). После извршување на функциите се користи следната формула за да се добија нумеричка вредност за излезната променлива: u = i α i x i ( 3 ) i x i Во формулата со α i е претставен степенот на поддршка на правилото, а со x i е претставена нумеричката вредност добиена со функцијата во THEN-делот од правилото. 55

56 Трет метод кој може да се користи наместо претходните два е методот на Цукамото. Овој метод можи да се речи дека прави комбинација на методот на Мамдани и методот на Сугено, со таа разлика што нема да правиме спојување на модифицираните множества како кај Мамдани туку ќе правиме процес на обратна фазификација т.е. за даден степен на членство (степенот на поддршка на правилото) ќе пресметуваме која е нумеричката вредност од универзумот на говор која одговара на степенот и која ќе ја пресметаме со функцијата на членство за вредноста која се доделува на излезната променлива во THEN-делот од правилото. Откако ќе ги пресметаме сите вакви вредности за секое од правилата кои се однесуваат на одредена променлива, ќе треба да ја употребиме истата формула како и кај методот на Сугено, за да ја пресметаме нумеричката вредност за излезната променлива. Системите базирани на fuzzy логиката наоѓаат голема примена како во индустријата така и во секојдневниот живот. Еден од првите успешни комерцијални продукти кои користат fuzzy логика е креиран уште 90-тите години во Јапонија, кога била произведена машина за перење на алишта која го проценувала материјалот, волуменот и нечистотијата на алиштата и одлучувала која е најпогодната програма за перење. Се користи и во некои правосмукалки, каде преку детектирање на површината како и степенот на валканост го избира најдоброто ниво на вкуум за најдобар ефект при чистењето. Исто така fuzzy логиката нашла примена и во брзите возови во Јапонија. Други транспортни средства каде се применуваат fuzzy системита се автомобилите, каде вклучува подобра потрошувачка на гориво како и адаптивна круз-контрола, АБС, системи кои спречуваат несакано да излезиме од нашата коловозна лента, автоматски пренос итн. Во дигиталната обработка на слика како и во системите за распознавање на дигитален текст. Во системите за проценка на рудски наоѓалишта и за рана детекција на земјотреси. За воени цели, особено како поддршка за пилотите на авиони и хеликоптери. А една од попознатите и широко употребувани примени е во камерите и апаратите во системот за ауто-фокус. 56

57 7 Вештачки невронски мрежи Кога зборувавме за генетските алгоритми кажавме дека природата била голема инспирација за дизајнирање и креирање на интелигентни системи. Но не се само еволуцијата и генетиката тие кои што биле инспирација за дизајнирање и на чии принципи се базираат едни од најчесто користените интелигентни алгоритми. Друг биолошки модел кој е доста интересен од аспект на процесирање на информации и податоци, како и пресметување и донесување на одлуки и заклучоци е човечкиот мозок. Една од причините поради кои човекот е многу добар во извршување на процеси како распознавање на предмети и ликови, околината во која се наоѓаат, ситуациите кои ни ги презентираат како и соодветните акции кои треба да ги превземиме за интеракција е тоа што уште од раѓање мозокот има особина да создава свои правила врз база на искуството, кои ги прави преку зајакнување на постоечките и креирање на нови врски помеѓу невроните. Покрај што може да се зајакнуваат и креираат, исто така може да се ослабуваат и бришат постоечките врски помеѓу невроните. Тоа ќе зависи од ефектот кој го има врската во правилото т.е. доколку е позитивна тогаш можеби е подобро да се зајакни, а ако е негативна тогаш да се ослаби. Едни од најпознатите интелигентни системи кои се базирани на начинот на кој функционира мозокот се Вештачките Невронски Мрежи (ВНМ). Човечкиот мозок содржи билиони клетки наречени неврони кои се поврзани помеѓу себе и комуницираат преку електрохемиски сигнали. Наједноставно објаснато невроните функционираат така што преку влезните конекции (дендрити) примаат електрични сигнали кои се сумираат и доколку јачината на сигналот е доволно голема за да ја надмини одредена вредност која се нарекува вредност на прагот, невронот ќе испрати сигнал до невроните со кои е поврзан преку излезните конекции (аксони). Како што мозокот содржи голем број на неврони, така и вештачките невронски мрежи содржат повеќе од еден неврон. Иако се базирани на мозокот, сепак главната причина за постоењето на вештачките невронски мрежи не е за да служат како копија на мозокот со цел да разбериме како функционира истиот, туку за да помогнат во решавање на проблеми од областа на машинското учење. 57

58 Една од првите успешни имплементации на едноставна невронска мрежа е токму Перцептронот за кого стана збор во Глава 4. Слабостите кои се појавиле кај Перцептронот можат да се решат со едноставна комбинација на неврони. Најчесто невроните во вештачките невронски мрежи ќе преставуваат функции од следниот облик: Z: = 0. 6 X X 2 1 ( 4 ) Претходната функција всушност можи да се користи како функција за пресметка на Буловата логичка операција И. Константните вредности 0.6 и 0.6 со кои се помножени X 1 и X 2 соодветно, се нарекуваат тежини бидејќи ќе му даваат тежина на влезните вредности. Безразлика дали влезните вредности X 1 и X 2 се цели или децимални броеви, функцијата секогаш ќе враќа вредност 0 или 1. Оваа функција се вика трансфер функција затоа што прави трансфер на влезните вредности во излезна вредност. Доколку во претходната функција константите ги помножиме со 2, ќе ја добијаме следната функција: Z: = 1. 2 X X 2 1 ( 5 ) Всушност оваа функција ќе ја претставува операцијата логичко ИЛИ. Со замена на знакот за споредба од во, ќе ја добиеме функцијата за Буловата операција НЕ_ИЛИ или НИЛИ (NOr): Z: = 1.2 X X 2 1 ( 6 ) Но бидејќи за да речиме дека функцијата се извршила ќе сакаме на левата страна од неравенството да имаме поголема вредност отколку на десната страна, ќе треба да го смениме знакот за споредба со знакот. Со цел функција да ја добие формата која ја сакаме, а сепак да остани непроменета треба да се помножат двете страни со -1: Z: = 1.2 X X 2 1 ( 7 ) Но покрај тоа што ќе мора да се користи знакот како знак за споредба во неравенството, исто така ќе воведиме уште еден услов, кој ќе вели дека вредноста на 58

59 прагот мора да биди позитивна. За да го исполниме вториов услов, ќе треба на двете страни да го додадеме бројот 2, за да ја добиеме следната формула: Z: = X X 2 1 ( 8 ) Бројот 2 кој го додадовме во функцијата за НИЛИ е тежина со која е помножен константен влез со вредност 1. Доколку константниот влез го замениме со буквата С, а тежините со буквата W формулата ќе изгледа вака: Z: = W 0 C + W 1 X 1 + W 2 X 2 1 ( 9 ) Функцијата за НЕГАТИВНО_И (уште и НЕ_И или НИ) ја има следната форма: Z: = X X 2 1 ( 10 ) Може да се види дека формулите за четирите логички операции (И, НЕ_И, ИЛИ и НИЛИ) го имаат овој облик со тоа што имаат различни вредности за тежините и константата. Доколку вредоста на прагот ја замениме со буквата T, а X 1 и X 2 ги замениме со X и Y соодветно формулата ќе го добија обликот: Z: = W 0 C + W 1 X + W 2 Y T ( 11 ) Оваа формула всушност ќе опишува линија: Y a X + b ( 12 ) во која: a = W 1 W 2 b = W 0 W 2 C + T W 2 Доколку во претходната формула ги замениме тежините и прагот со соодветните вредности од функциите за логичките операции ќе можиме да ги нацртаме графиците на логичките операции И, НЕ_И, ИЛИ и НИЛИ. Но доколку пробаме да нацртаме график со една линија за логичката операција ЕКСКЛУЗИВНО_ИЛИ (XOR) ќе видиме дека тоа е невозможно. Ова е така затоа што логичката операција ЕКСКЛУЗИВНО_ИЛИ не можи да се опиши со следниот облик: Z: = W 0 C + W 1 X + W 2 Y T ( 13 ) 59

60 Слика 7.1 График на логичките операции НЕ_И и И Слика 7.2 График на логичките операции ИЛИ и НИЛИ Ова се вика проблем на линеарна нераздвоивост кој може да се реши ако ги поврзиме логичките операции ИЛИ и НЕ_И, со што ќе го добиеме пресекот на двете операции (графички прикажан на слика 7.3). Слика 7.3 График на логичката операција ЕКСКЛУЗИВНО_ИЛИ (XOR) 60

61 Преку поврзување на логичките операции всушност креиравме едноставна невронска мрежа составена од три неврони, првиот за логичката операција ИЛИ, вториот за логичката операција НЕ_И и третиот за логичката операција И кој на влез ќе ги добија резултатите од претходните два. Едноставната невронска мрежа за логичката операција ЕКСКЛУЗИВНО_ИЛИ се состои од 3 неврони, од кои 2 неврони (ИЛИ и НЕ_И) се во влезниот и еден (И) во излезниот слој. Секоја невронска мрежа, во најмала рака ги има барем овие два слоеви (влезниот и излезниот). Покрај овие два кај најголем дел од невронските мрежи има и трет слој т.н. скриен слој сместен помеѓу влезниот и излезниот слој. Притоа може да има повеќе (некогаш илјадници) скриени слоеви. Невронската мрежа за логичката операција ЕКСЛКУЗИВНО_ИЛИ е прикажана на слика слика 7.4. На сликата со W (жолтите кругови) се означени тежините за секоја од влезните конекции на невроните. Слика 7.4 Графички приказ на невронската мрежа за логичко ЕКСКЛУЗИВНО_ИЛИ. Податоците кои се примаат преку овие конекции всушност во претходните формули се променливите X1, X2, а додека податоците кои се испраќаат преку конекцијата е резултатот од функцијата. Тежините кои се употребуваа во функциите се однесуваат на самите конекции кај невронот. Овие вредности кои се користат како тежини во функциите на логичките оператори не секогаш ќе можиме да ги одбериме правилно првиот пат. Всушност не значи дека може да се користат само едни вредности. Може да се користат повеќе различни комбинации на вредности. На пример за логичката операција И покрај формулата (4) може да се искористи и следната формула: Z: = X X 2 1 ( 14 ) 61

62 Иако вредностите за тежините се различни, функцијата ќе го дава истиот резултат за комбинациите (0,0), (0,1), (1,0) и (1,1) т.е. невронот ќе биди неврон за Буловата операција И. Бидејќи постојат различни комбинации на тежини кои го даваат истиот резултат, најчесто ќе оставаме невронот самиот да одлучи кои вредности да ги користи. На пример тоа можиме да го направиме со следните 4 чекори: 1. Иницијализирање на почетните вредности на тежините со произволни вредности помеѓу 0 и 1 2. Тестирање на сите комбинации на вредностите на влезните променливи X1 и X2 и споредување на резултатот кој го добиваме со тој што го очекуваме. 3. Доколку точноста на неравенството не е таа што ја очекуваме, секоја од тежините за која влезната променлива има вредност 1 ќе биди корегирана. 4. Повторувај ги чекорите 2 и 3 се додека не добиеме тежини за кои резултатите кои се добиваат се исти со тие кои се очекуваат. Функцијата која ја користевме претходно за да ја пресметаме точноста на неравенството во невроните за логичките операции, се нарекува степ-функција за која излезот од невронот секогаш ќе биди една од две вредности (0 или 1). Слика 7.5 Степ-функција Но најчесто ќе сакаме невроните да примаат и испраќаат вредности помеѓу 0 и 1, за што ќе треба да не користиме неравенство, туку сумата која ја пресметуваме да биди влез во друга функција која ќе ни дава резултати помеѓу 0 и 1 и кои всушност ќе бидат излезната вредност од невронот. Една од најчесто користените вакви функции е логистичката функција: σ(а) = 1 1+e А ( 15 ) 62

63 Во равенката (15) со e се означува Ојлеровиот број (со вредност од приближно ), а додека со А е претставена тежинската сума на влезови. За многу големи вредности на А ќе имаме вредности блиски до 1, а за многу мали вредности, вредностите ќе бидат блиску до 0. Покрај функцијата на сигмоида исто така можи да се користат и други функции од кои ќе зависат излезните вредности на невронот. Сепак најчесто користена од сите функции е логистичката функција на сигмоида бидејќи е континуирано диференцијабилна, и има многу едноставен изводот, кој е потребен кај голем дел од алгоритмите кај вештачките невронски мрежи. Изводот на функцијата на сигмоида е следниот: d σ(а) = 1 da 1+e 1 А (1 1+e А) ( 16 ) Ова ќе ни треба да го знаеме во понатамошните чекори во процесот на учење кај невронската мрежа. Учењето кај невронските мрежи нема да се извршува на ниво на неврон туку ќе биди глобално и сите неврони заедно ќе учат со цел да се добија мрежа која со голем степен на сигурост ќе ги извршува посакуваните задачи и ќе враќа точни резултати. Безразлика на видот на учење кој ќе се применува кај невронската мрежа (било да е со надгледување или некое од другите), бидејќи меморијата на мрежата се сите тежини на конекциите помеѓу невроните, целта на учењето ќе биди да се добија комбинација од тежини со која невронската мрежа ќе можи да се речи дека произведува точни резултати. За да може да се добие добра комбинација на тежини мора да имаме начин на кој истите ќе ги подесуваме за време на процесот на учење. Кога зборувавме за функциите на логичките операции и за тоа дека тежините можиме да ги добиеме со следење на 4 едноставни чекори (попрецизно 3) всушност претставивме едноставен процес на учење во случајов кај еден неврон. Но бидејќи учењето ќе треба да биди во мрежата како целина истиов процес треба да се прави на глобално ниво. Бидејќи невроните се конектирани помеѓу себе, промените од еден неврон ќе имаат последица во останатите неврони, а со тоа и во крајниот резултат, ќе 63

64 мора внимателно да се прават корекциите и истите ќе зависат од типот на мрежата и функцијата за активација која се користи во невроните. Кај најголем дел од невронските мрежи се употребува т.н. пропагирање наназад или распространување на грешката наназад. Пропагирањето наназад започнува веднаш после завршувањето на пресметката за влезните податоци, односно откако мрежата за дадени влезни податоци ќе произведе излез. Пропагирањето наназад, го носи ова име затоа што започнува од излезните неврони и течи кон влезните неврони, односно се враќа наназад кон почетокот на невронската мрежа. Првото нешто што се прави е да се пресмета колкаво е отстапувањето (грешката) во излезниот резултат. Бидејќи најчесто се користи кај невронските мрежи кои учат со надгледување ова ќе биди релативно лесно да се одреди поради тоа што за соодветните влезни податоци го добиваме резултатот кој очекуваме да го добиеме од невронската мрежа доколку истата е правилно истренирана. Грешката или отстапувањето кај излезните неврони ќе го пресметаме со следната равенка: e i = t i o i ( 17 ) Во равенката (17) со e i е означена грешката за i-от излезен неврон, со t i е очекуваниот резултат, а додека со o i е добиениот резултат во моменталната итерација за тековните влезни податоци. Ако за секој од излезните неврони го пресметаме отстапувањето и овие вредности ги собериме, сумата што ќе се добие е вкупната грешка на мрежата. Доколку овој процес на пропагирање наназад го гледаме како извршување на невронска мрежа, тогаш разликата помеѓу очекуваниот и добиениот резултат всушност ќе ни послужи за да му дадеме тежина на резултатот од активациската функција за моменталниот неврон. Доколку продолжиме со аналогијата, следниот чекор е да ја пресметаме активацијата на функцијата кај излезните неврони. Но бидејќи се враќаме наназад, наместо да ја користиме логистичката функција (или некоја друга), ќе го користиме 64

65 изводот на истата. Бидејќи изводот на логистичката функција е едноставен за пресметување овој процес нема да биде тежок. Вкупната грешка на i-от излезен неврон ќе се пресмета како: E i = e i (o i (1 o i )) ( 18 ) каде со (o i (1 o i )) е претставен изводот на логистичката функција за i-от излезен неврон. Откако сме ги пресметале вкупните грешки за секој од невроните во излезниот слој, треба да ги пресметаме вкупните грешки за сите неврони во претходниот слој. Најпрвин ја земаме грешката од првиот неврон од наредниот слој со кој е конектиран невронот од овој слој за кого ќе ја пресметуваме вкупната грешка. Вкупната грешка од првиот конектиран неврон од наредниот слој ја помножуваме со тежината на конекцијата (вредноста на тежината се наоѓа во невронот од наредниот слој). Ова може да го изразиме математички на следниот начин: e ij = (w j R j ) ( 19 ) каде со e ij се означува грешката за моменталниот неврон во однос на j-тата конекција (во однос на j-от неврон со кој е конектиран на излез), со w j се означува тежината на конекција со j-от неврон на излез, а со R j се означува вкупната грешка на j-от неврон со кој моменталниот неврон е конектиран на излез. Истиов процес за моменталниот неврон ќе го повториме за сите останати неврони со кои е конектиран преку излезната конекција. Откако ќе ги пресметаме грешките на конекциите истите ќе ги собериме за да добиеме сума на сите грешки помеѓу моменталниот неврон и сите неврони со кои е поврзан преку излезната конекција. n s i = e ij j=1 ( 20 ) Оваа сума на грешки ќе ни треба за да ја пресметаме вкупната грешка на невронот. Истата се пресметува како производ на сумата на грешки и изводот на активациската функција за невронот: 65

66 E i = s i (o i (1 o i )) ( 21 ) каде со E i се означува вкупната грешка на i-от неврон, со s i сумата на грешките на излезните конекции на i-от неврон, а со o i се означува излезната вредност од моменталниот (i-от) неврон. Иако велиме дека моменталниот неврон е конектиран со j неврони преку излезната конекција, всушност секој од невроните па така и овој, има само една излезна вредност која се проследува до сите неврони од наредниот слој, па затоа велиме дека имаме излезни конекции со j неврони. После тоа истиот процес го повторуваме и за сите останати неврони од моменталниот слој. Откако ќе завршиме со овој слој, се враќаме на претходниот и ја повторуваме истата постапка и се така слој-по-слој се додека не дојдеме до крајот т.е. почетокот на невронската мрежа односно влезниот слој. Откако секој од невроните во сите слоеви (влезниот, скриените и излезниот) ќе добие соодветна вредност за грешка, следува процесот на корекција на тежините. Во корекцијата на тежините голема улога ќе игра стапката на корекција. Корекцијата се прави така што на моменталната вредност за тежината и се додава производот од три вредности: измерената грешка за невронот, влезната вредност во невронот (која доаѓа преку влезната конекција за која се прави корекцијата на тежината) и стапката на корекција. w j = w j + l E i i j ( 22 ) Ова се прави за секоја од тежините во невронот, за секој неврон во мрежата. Со тоа завршува корекцијата на тежините, а со тоа и процесот на пропагација наназад. После ова невронската мрежа добива нови влезни податоци и повторно започнува процесто најпрвин на пресметувањето нанапред, а потоа и пресметувањето наназад. Овој процес ќе се повторува се додека не се постигне барем еден услов за завршување. После тоа велиме дека мрежата е тренирана и може да почни реално да се употребува. Безразлика на типот на неврони кои се користат, топологијата на невронската мрежа, активациската функција во невроните како и начинот на учење, она што е заедничко за многуте различни видови на невронски мрежи (а ги има повеќе) е тоа дека кај сите голема улога при тренирањето на мрежата (безразлика дали е со надгледување 66

67 или не) ќе имаат самите влезни податоци кои ќе се користат за тренирање. Притоа во зависност од бројот на тренинг податоците како и во зависност од разновидноста на истите ќе зависи крајниот резултат на тренинг процесот. Во зависност од намената, достапноста на податоците како и времето кое го имаме на располагање и брзината која ја очекуваме ќе зависи моделот на невронски мрежи кој ќе го одбериме како и типот на невроните и методот на учење кој ќе се користат во мрежите. Безразлика на изборот кој ќе го направиме, невронските мрежи се релативно лесни за употреба што е нивна јака страна и поради која се се почесто употребувани. Бидејќи се доста добри апроксиматори, многу се погодни за примена во области каде имаме поголема толеранција на грешки, како на пример за распознавање на слики, говор, текст, при најразлични класификации и слично. Невронските мрежи имаат најразлична примена и денес се едни од најшироко употребуваните, а можеби и најупотребувани методи на машинско учење. Се употребуваат за препознавање на текст, особено за ракописен текст, како и за препознавање на слики, било да е препознавање на ликови или објекти, а исто така и за опишување на тоа што го гледаат на сликата. Исто така се употребуваат и во економијата за предвидување на берзата, за детекција на економски измами, предвидување на цените, во медицината за воспоставување на дијагноза, предвидување на цената на лекување на пациент, контрола на квалитет, контрола на индустриски процеси, препознавањето на говор, моделирање на физички системи, процесирање на сигнали, препознавање на патерни, детекција на хемиски состав, анализа на мириси, препознавање на гени, податочно рударење, маркетинг и предвидување на продажба, оптимизација на распоред, донесување или помагање при донесување на одлуки, преведување на текст од еден во друг јазик, во самоуправувачките автомобили како и во многу други области. 67

68 8 Support Vector Machines Кога зборувавме за вештачките невронски мрежи рековме дека се составени од многу неврони кои иако може да имаат, и најчесто имаат, едноставна структура кога се поврзани помеѓу себе можат да решат многу сложени проблеми кои инаку не би било возможно да се претстават со една функција. Првите неврони за кои стана збор можеа самостојно да се искористат за извршување на некоја од Буловите логички операции И, НЕ_И, ИЛИ или НИЛИ. Но иако секој од невроните можеше да се користи самостојно за некоја од претходно наведените Булови логички операции, сепак видовме дека има и такви операции како што е ЕКСКЛУЗИВНО_ИЛИ кои не можеа да се претстават со еден неврон. Причината за тоа беше што просторот во кој се наоѓаат вредностите за кои неравенството е точно не е линеарно разделлив од просторот во кој се вредностите за кои неравенството е неточно (доколку би го претставиле графички). Овој проблем се реши така што невроните за логичките операции ИЛИ и НЕ_И беа комбинирани со невронот за логичката операција И. Ваквите проблеми на линеарна нераздвоивост често се среќаваат кога имаме потреба од класификација. Една од техниките на машинското учење и интелигентните алгоритми кои наоѓаат примена кога имаме потреба од класификатори се SVM 6. Кога стана збор за вештачките невронски мрежи, видовме дека во формулите од невроните за основните Булови операции има две влезни променливи, со кои всушност е опишан влезниот простор на податоците. Бидејќи стануваше збор за неравенство, влезниот простор и сите податоци во него (сите точки во 2D просторот) беше поделен на два дела, еден во кој се сите точки за кои неравенството е точно и друг во кој се наоѓаат сите точки за кои неравенството е неточно. На овај начин влезните податоци се класифицираа во една од две класи. Истото може да се направи и овде. Секоја линија со која можеме да го поделиме просторот се вика хиперрамнина. Или доколку бидиме попрецизни, хиперрамнината е подпростор со димензија n-1 кој го дели просторот со димензија n. Овој објект (хиперрамнината) безразлика која и е 6 SVM Support Vector Machines (Машини со Носечки Вектори) 68

69 димензијата, секогаш ќе биди хиперрамнина само во простор со една димензија повеќе од димензијата на хиперрамнината. Равенката за хиперрамнина за дводимензионален простор е следната: W 0 + W 1 X 1 + W 2 X 2 = 0 ( 23 ) додека за n-димензионален простор ќе го има следниот облик: W 0 + W 1 X 1 + W 2 X W n X n = 0 ( 24 ) На сликата 8.1 можи да се видат две групи од точки одделени една од друга со користење на повеќе линии (хиперрамнини за 2D просторот). Вакви линии со кои ќе ги одделиме двете множества може да има бесконечно многу. Притоа секој влезен податок за кој левата страна на равенката ќе биди позитивен број поголем од 0 ќе припаѓа на класа 1, а секој влезен податок за кој левата страна ќе биди негативен број помал од 0, ќе припаѓа на класа -1. За сите точно класифицирани податоци ќе важи следното: Слика 8.1 Двете класи (црвени и жолти точки) може да се одделат со повеќе хиперрамнини од кои 3 се прикажани на сликата ( 3 те црни линии). y i (W 0 + W 1 X i1 + W 2 X i2 ) > 0 ( 25 ) Единствен случај кога можи да се случи неравенството (25) да биди помало од 0 е во случај на погрешна класификација. 69

70 Бидејќи има бесконечно многу хиперрамнини од сите кои можеме да ги избериме, ќе се стремиме да ја одбериме онаа која најдобро го дели просторот, односно таа за која е најтешко да направиме погрешна класификација. Оваа хиперрамнина е таа која се наоѓа на средината помеѓу двете класи т.е. е на најголемо еднакво растојание од двете класи. Така доколку од секоја од точките во просторот го измериме нормалното растојание до хиперрамнината, најмалото од нив ќе биди маргината. Колку што маргината е поголема толку хиперрамнината е подобра. Притоа маргината од левата и од десната страна на линијата (ако имаме 2D простор) треба да биди еднаква. маргина. Слика 8.2 Хиперрамнина за двете класи (жолтите и виолетовите точки) Вака добиениот класификатор се нарекува класификатор со максимална Слика 8.3 Хиперрамнината (црна линија) ги одделува двете класи (розово и жолто обоените површини) 70

71 Точките кои се наоѓаат оддалечени од хиперрамнината на растојание еднакво на максималната маргина претставуваат n-димензионални вектори кои ја носат хиперрамнината и затоа се нарекуваат носечки вектори (support vectors). Од нив и само од нив ќе зависи хиперрамнината. Всушност сите објекти кои ги набљудуваме се вектори, но само тие кои лежат на маргината се носечки вектори и само од нив ќе зависи хиперрамнината. Целта ќе ни биде да се максимизира маргината M така што за секој влезен податок кој е точно класифициран ќе важи: y i (W 0 + W 1 X i1 + W 2 X i2 + + W n X in ) M ( 26 ) Класификаторот со максимална маргина е применлив кога двете класи се линеарно раздвоиви. Но реално ќе се среќаваме со проблем на непостоење на хиперрамнина која целосно ќе ги разделува класите, поради што нема да можи да се користи класификатор со максимална маргина. Слика 8.4 Двете класи на кои припаѓаат објектите (црвените и жолтите точки) не се линеарно раздвоиви. Дури и да постои хиперрамнина со која можи да се одделат две класи, најчесто нема да сакаме да го користиме класификаторот со максимална маргина затоа што често можи да се случи со додавање на само еден нов елемент да настанат драматични промени во хиперрамнината кои ќе доведат до неповолни резултати (големи промени 71

72 во положбата и ротацијата на хиперрамнината и често големо намалување на маргината) што можи да се види на сликата 8.5. Слика 8.5 После додавање на нов објект (црвената точка А) мора да се користи нова хиперрамнина (полна црна линија) за да бидат класите правилно одделени. Алтернатива на класификаторот со максимална маргина е да користиме класификатор таков што ќе дозволува одредени објекти да бидат погрешно класифицирани со цел најголем дел од останатите да бидат класифицирани точно. Овие класификатори се нарекуваат класификатори со мека маргина (en. soft margin classifiers) или уште и класификатори со носечки вектори. Исто како и кај класификаторот со максимална маргина, така и овде објектите кои се наоѓаат на маргините се нарекуваат носечки вектори, но поради тоа што имаме толеранција и е дозволено одредено нарушување на маргините, истите ќе зависат и од објектите кои ги нарушуваат нив, па и овие објекти (погрешно класифицираните) исто така ќе претставуваат носечки вектори. Но дури и со воведувањето на толеранција за одредени грешки при класифицирање, сепак често ќе се среќаваме со класи кои нема да може да бидат одделени ниту со користење на класификатор со носечки вектори. Причината за ова ќе биди тоа што исто како и класификаторот со максимална маргина, така и класификаторот со носечки вектори е линеарен класификатор. Во случај на линеарно нераздвоиви класи, овие класификатори се бескорисни. Поради ова 72

73 ќе треба да се користат класификатори кои не се линеарни барем во влезниот простор на податоците. За да го постигниме ова постојат повеќе начини од кои еден е со проширување на векторите со влезни карактеристики со кои е опишан еден објект. На овај начин всушност ја зголемуваме димензијата на влезните податоци, а со тоа и димензијата на просторот во кој тие се наоѓаат, директно влиаејќи врз димензијата на хиперрамнината која треба да ја најдиме и со која треба да ги одделиме класите на кои им припаѓаат влезните податоци. Слика 8.6 Објектите од двете класи (сини квадрати и црвени ѕвезди) не може да бидат линеарно разделени. На овој начин само со проширување на димензијата можиме класи кои не се линеарно раздвоиви да ги одделиме со хиперрамнина. Ова проширување на димензијата можи да го направиме на повеќе начини, од кои еден е со користење на кернели. Слика 8.7 Објектите од двете класи од слика 8.6 во 3D просторот можи линеарно да се одделат на пример со зелената рамнина. 73

74 Проширувањето на класификаторот со носечки вектори всушност се SVM. Често покрај што ќе имаме класи на податоци кои не се линеарно раздвоиви, исто така ќе имаме потреба да ги класифицираме влезните податоци во една од повеќе од две класи. Класификацијата во повеќе класи со користење на SVM можи да се направи на повеќе начини. Слика 8.8 На која од трите класи А, В или С ќе припадне зелената ѕвезда? Најчесто се прави класификација така што најпрвин за секој пар од класите ќе се најди хиперрамнина со која двете се разделени и потоа ќе се пресмета на која од класите и припаѓа влезниот објект. Ова се повторува за секој пар класи и онаа класа на која влезниот објект и припаднал најмногу пати е класата на која истиот ќе биди доделен. Слика 8.9 За примерот од слика 8.8 се прават три комбинации од пар класи. За комбинација АВ (слика а) ѕвездата припаѓа на класа А, а за комбинација АС (слика б) и комбинација ВС (слика в) припаѓа на класа С Доколку имаме 4 класи тогаш ќе има 6 SVM, за 5 класи има 10 SVM или општо доколку има К класи тогаш бројот на SVM ќе биде: K (K 1) 2 ( 27 ) 74

75 Друг начин на класификација кога има повеќе од 2 класи е преку правење на споредба на една класа со сите останати. Вака ќе се прави споредба за секоја од класите со сите останати К-1 класи. Класата за која со најголема сигурност можеме да речиме дека влезниот објект и припаѓа ќе биди класата на која истиот ќе го доделиме. Покрај што наоѓаат примена кога има потреба од класификација, SVM исто така се користат и за регресија. Но за разлика од класификациските модели, кога ги употребуваме во регресионите модели целта нема да ни биди оптимизацијата на маргините со цел наоѓање на најдобрата хиперрамнина со која ќе се поделат класите на објекти, туку ќе имаме за цел да се оптимизира функцијата на губиток или функција на загуба (en. loss function или cost function) која ќе има несензитивна зона (en. insensitive zone). SVM кои се користат во регресионите модели ги имаат истите карактеристики како и оние кои се користат за класификација. И тие имаат хиперрамнина со најголема маргина, и тие користат кернел функции но тоа што ги прави различни е што не се користат за да одредат во која класа ќе припадни влезниот објект туку да ја предпостават вредноста на некоја негова карактеристика. Но поради тоа што кај регресијата нема одделување на класи, хиперрамнината всушност ќе ја претставува вистинитата вредност околку која ќе бидат позиционирани влезните објекти. Колку што објектот е подалеку од хиперрамнината толку грешката во предвидената вредност е поголема. Хиперрамнината се добива така што се оптимизира функцијата со која најдобро ќе бидат претставени влезните податоци т.е. фунцкија со која за влезните тренинг податоци ќе се добиваат резултати кои се разликуваат од очекуваните резултати за не повеќе од ε и која во исто време е што е можно помазна. Сите податоци за кои резултатот е оддалечен не повеќе од вредноста ε, ќе велиме дека имаат грешка нула. Просторот околу хиперрамнината кој е на растојание епсилон (ε) ја има улогата на маргините во машините со носечки вектори кои служеа за класификација. Поради оваа вредност функцијата која се оптимизира уште се нарекува и ε-несензитивна функција на загуба, затоа што зоната околу функцијата на растојание ε е несензитивна на грешки т.е. грешката ќе велиме дека е нула дури и ако резултатот не лежи на хиперрамнината. Притоа не секогаш ќе биди возможно да се најди функција за која сите добиени резултати ќе отстапуваат од очекуваните резултати не повеќе од ε. Поради ова исто како што кај моделите за класификација беше дозволено одреден број на податоци да бидат погрешно класифицирани, така и овде ќе има можност за постоење на грешки поголеми од ε во вредностите на резултатите за одредени 75

76 податоци, а сепак функцијата да сметаме дека ги задоволува условите. Бидејќи регресионите модели исто како и класификациските често ќе има потреба да бидат нелинеарни ќе користиме и тука кернел функции. Иако може да се користат и во регресиони модели, сепак SVM имаат најголема примена во класификацијата. Притоа се користат за класификација на текстови, пораки, слики, препознавање на карактери вклучително и ракописен текст и во повеќе други области од кои една од најзначајните области во кои SVM наоѓаат примена како класификатори е медицината. SVM исто како и останатите модели од областа на машинското учење имаат свои предности и недостатоци кои ги прават погодни за употреба во одредени ситуации, а бескорисни во други. Бидејќи секој од методите има свои карактеристики кои ги прават различни од оснатаните како во имплементацијата така и во областа на примена, за различни потреби најчесто ќе се користат различни методи од областа на машинското учење. Но често дури и ако различни модели можат да се користат за исти потреби, поради можностите кои ги имаме како и ограничувањата кои постојат ќе треба да направиме избор помеѓу овие модели со цел најдобар компромис помеѓу можностите кои ни ги нуди моделот, а со тоа и решението кое ќе го добиеме, како и ограничувањата кои постојат. Во наредните четири глави ќе биди објаснат процесот на имплементација на софтверски решенија од областа на генетските алгоритми, fuzzy системите, вештачките невронски мрежи како и SVM со цел решавање на неколку различни проблеми притоа искористувајќи ги можностите кои ги нудат овие методи и почитувајќи ги ограничувањата наметнати од хардверските платформи кои ќе бидат употребени, а за кои стана збор во глава 3. Целта во користењето на различните методи од областа на машинското учење е да се види дека различните методи се користат за решавање на проблеми од различни области и тоа го прават на различни начини, а користењето на хардверските платформи со драстично ограничени ресурси е да се покажи дека дури и со ваквите ограничувања може да има практична применливост на софтверски решенија базирани на машинското учење. 76

77 9 Софтверска имплементација Генетски Алгоритми Со цел да се покажи дека генетските алгоритми можи да се користат за решавање на различни проблеми дури и со ограничени хардверски можности, беа решени два различни проблеми. Поточно првиот пример кој беше имплементиран служеше како доказ дека навистина можи да се користат Arduino UNO и Texas Instruments Tiva C-Series EK- TM4C1294XL за извршување на генетски алгоритми. Целта е преку процесите на генетските алгоритми да се еволуира единка чиј хромозом ќе има што е можно поголем број на гени со вредност 1. Согласно потребите на генетските алгоритми беа дефинирани бројот на единки во една генерација, должината на хромозомот во единката, стапката на вкрстување и мутација како и максималниот број на генерации кој доколку биди достигнат и сеуште немаме решение кое го задоволува критериумот, програмата да прекини со извршување со цел да не се губи повеќе време. #define MAX_GENERACII 1500 #define BR_EDINKI 8 #define HROMOZOM_LEN 85 #define CROSS_RATE 0.75 #define MUTATION_RATE 0.01 Секоја од единките во популацијата е структура која содржи хромозом (низа од битови) и фитнес вредност која покасно се користи при одредување на најдобрите единки во генерацијата. typedef struct StructEdinka byte hromozom[hromozom_len]; double fitnes; Edinka; Фитнес вредноста се движи помеѓу 0 и 1 во зависност од тоа колку од гените во хромозомот имаат вредност 1. Поради тоа што целта е да се креира единка во која сите гени од хромозомот имаат вредност 1, колку што бројот на гените со вредност 1 е поголем толку фитнес вредноста ќе биди поблиску до вредностa 1. Кога зборувавме за генетските алгоритми рековме дека функцијата за пресметување на фитнес е една од најзначајните составни елементи на истите. 77

78 double FitnesHromozom(byte *hromozom) double fitnes; byte tochnigeni = 0; 78 for (byte i = 0; i < HROMOZOM_LEN; i++) if (hromozom[i] == 1) tochnigeni++; fitnes = (double)tochnigeni / HROMOZOM_LEN; return fitnes; Првиот чекор кој што се прави е иницијализацијата на единките во генерацијата, поточно на гените од хромозомите. Тоа се прави така што за секој од гените се генерира случајна вредност помеѓу 1 и 100 и доколку истата е поголема од 50 вредноста на генот се поставува на 1, а во спротивно на 0. double SluchaenBr() return ((double)random(rand_max) / RAND_MAX);... if ((SluchaenBr() * 100) > 50) (populacija + i)->hromozom[j] = 1; else (populacija + i)->hromozom[j] = 0; После иницијализацијата се избираат едники за процесот на вкрстување. Кога зборувавме за генетските алгоритми рековме дека постојат повеќе начини на кои може да се прави изборот на родители. Во првото софтверско решение се користи рулетселекција. После изборот на родители се прави вкрстување или обид за истото. Се поминува низ целата должина на хромозомот при што за секој ген се генерира случаен број. Првиот ген за кој случајниот број е поголем од стапката на вкрстување се избира како генот на чија позиција ќе настани вкрстувањето на родителите, при што гените од едниот родител кои се десно од овој ген ќе се заменат со гените од другиот родител исто така десно од генот на оваа позиција. void VkrstiEdinki(Edinka &detea, Edinka &deteb)

79 for (byte i = 0; i < HROMOZOM_LEN; i++) if (SluchaenBr() < CROSS_RATE) byte tmp; i++; while (i < 10) tmp = detea.hromozom[i]; detea.hromozom[i] = deteb.hromozom[i]; deteb.hromozom[i] = tmp; i++; После генерирањето на нови единки на секој од гените во хромозомот од новите единки им се дава шанса да мутираат. Бидејќи гените можат да имаат вредност 0 или 1, мутацијата е замена на моменталната вредност на генот со спротивната. if (SluchaenBr() < MUTATION_RATE) if (edinka.hromozom[i] == 0) edinka.hromozom[i] = 1; else edinka.hromozom[i] = 0; Вториот пример кој беше имплементиран е за решавање на проблемот на патувачкиот продавач. Истиот има практична имплементација и беше решен на два различни начини со користење на генетски алгоритми. Самиот хромозом има различен состав од оној во претходниот пример. Претходно секој од гените во хромозомот можеше да има вредност 0 или 1, а овдека вредноста на генот е позитивен цел број поголем или еднаков на 0 и кој всушност е индексот на градот кој треба да го посети патникот. Поради тоа што проблемот вели дека секој од градовите можи да биди посетен само еднаш битно е во хромозомот сите гени да имаат различна вредност. Поради ова ограничување не само што ќе се разликува составот на хромозомите помеѓу овај и претходниот пример, исто така ќе се 79

80 разликуваат и функциите за вкрстување и мутација, како и функцијата за пресметка на фитнес. Градовите кои треба да ги посети патникот од проблемот се 2D точки за кои треба да се најди најкраткиот пат, а кои се претставени преку своите X и Y координатие. Овие точки се случајно избрани преку генерирање на нивните координати на почетокот на извршувањето на апликацијата. void InicijalizirajTochki(Point(*tochki)[BR_TOCHKI]) for (int i = 0; i < BR_TOCHKI; i++) (*tochki)[i].x = random(rand_max) % 100; (*tochki)[i].y = random(rand_max) % 100; Иницијализацијата на хромозомите се прави така што на почеток секој од гените има вредност еднаква на својата позиција во хромозомот (пр. ген на позиција 0 има вредност 0, ген на позиција 1 има вредност 1 итн.) После ова гените се мешаат со цел да им се промени редоследот. void InicijalizirajPrvaGeneracija(Drajver(*populacija)[BR_PATNICI]) for (int i = 0; i < BR_PATNICI; i++) (*populacija)[i].fitnes = 0; for (int j = 0; j < BR_TOCHKI; j++) (*populacija)[i].hromozom[j] = j; for (int r = 0; r < BR_TOCHKI; r++) int t = random(0, BR_TOCHKI - 1); int tmp = (*populacija)[i].hromozom[r]; (*populacija)[i].hromozom[r] = (*populacija)[i].hromozom[t]; (*populacija)[i].hromozom[t] = tmp; Изборот на родителите се прави со турнир-селекција за разлика од претходниот пример каде се користеше рулет-селекција. Во турнир-селекцијата се избираат случајно претходно одреден број на единки и онаа со најголем фитнес е победникот и истата се избира за понатаму да се користи во процесот на вкрстување. #define BR_PATNICI 30 #define TURNIR_SIZE 5 80

81 ... Drajver OdberiEdinka(Drajver(*populacija)[BR_PATNICI]) Drajver tmpturnir[turnir_size]; for (int i = 0; i < TURNIR_SIZE; i++) int j = random(br_patnici) % BR_PATNICI; tmpturnir[i] = (*populacija)[j]; qsort(tmpturnir, TURNIR_SIZE, sizeof(drajver), SporediFitnes); return tmpturnir[0]; Фитнесот е вкупната должина на патот кој треба да го помини патникот за да ги посети сите градови само по еднаш. Растојанието е Евклидовото растојание помеѓу точките (градовите) во 2D просторот. Вкрстувањето, поради тоа што составот на хромозомите е различен во однос на претходниот пример и исто така секој од гените мора да има уникатна вредност, ќе се прави со подредено вкрстување. Најпрвин се одбираат два индекси по случаен избор. Сите гени кои се наоѓаат во вториот хромозом, на позиција после вториот индекс (кој секогаш е еднаков или поголем на првиот) ќе се запишат во привремен хромозом, а после нив се запишуваат и сите гени пред вториот индекс во вториот хромозом. На овај начин делот од вториот хромозом кој е после вториот индекс се позиционира пред делот од хромозомот кој е пред вториот индекс. int oda = random(rand_max) % BR_TOCHKI; int dob = random(rand_max) % (BR_TOCHKI - oda) + oda; int tmpb[br_tochki]; for (int i = 0; i < (BR_TOCHKI - dob); i++) tmpb[i] = deteb.hromozom[dob + i]; for (int i = (BR_TOCHKI - dob); i < BR_TOCHKI; i++) tmpb[i] = deteb.hromozom[i - (BR_TOCHKI - dob)]; После ова се креира хромозом-дете во кој се поставуваат гените од првиот хромозом кои се помеѓу двата случајно избрани индекси. Во исто време гените во привремениот хромозом кои имаат иста вредност со гените помеѓу индексите од првиот хромозом-родител добиваат вредност

82 int hromozom[br_tochki]; for (int i = 0; i < BR_TOCHKI; i++) hromozom[i] = -1; for (int i = oda; i < dob; i++) int j = 0; hromozom[i] = detea.hromozom[i]; while (tmpb[j]!= hromozom[i]) j++; tmpb[j] = -1; После ова сите вредности од привремениот хромозом кои имаат вредност различна од -1 се допишуваат во хромозом-детето. int hb = 0; for (int i = 0; i < BR_TOCHKI; i++) if (hromozom[i] < 0) while (tmpb[hb] == -1) hb++; hromozom[i] = tmpb[hb]; hb++; for (int i = 0; i < BR_TOCHKI; i++) detea.hromozom[i] = hromozom[i]; Целосниот код од функцијата за вкрстување е следниот: // Podreden krosover void VkrstiEdinki(Drajver &detea, Drajver &deteb) if (SluchaenBr() < CROSS_RATE) int oda = random(rand_max) % BR_TOCHKI; int dob = random(rand_max) % (BR_TOCHKI - oda) + oda; 82 int tmpb[br_tochki]; for (int i = 0; i < (BR_TOCHKI - dob); i++) tmpb[i] = deteb.hromozom[dob + i]; for (int i = (BR_TOCHKI - dob); i < BR_TOCHKI; i++)

83 tmpb[i] = deteb.hromozom[i - (BR_TOCHKI - dob)]; else int hromozom[br_tochki]; for (int i = 0; i < BR_TOCHKI; i++) hromozom[i] = -1; for (int i = oda; i < dob; i++) int j = 0; hromozom[i] = detea.hromozom[i]; while (tmpb[j]!= hromozom[i]) j++; tmpb[j] = -1; int hb = 0; for (int i = 0; i < BR_TOCHKI; i++) if (hromozom[i] < 0) while (tmpb[hb] == -1) hb++; hromozom[i] = tmpb[hb]; hb++; for (int i = 0; i < BR_TOCHKI; i++) detea.hromozom[i] = hromozom[i]; //nishto //detea che si ostani nepromeneto Повторно поради форматот на хромозомите и функцијата за мутација ќе биди поразлична од онаа во претходниот пример. Мутацијата овдека се прави така што се избираат два случајни индекси во хромозомот и гените на овие позиции си ги сменуваат местата. И овдека секој од гените добива шанса да мутира. void Mutiraj(Drajver &edinka) for (int i = 0; i < BR_TOCHKI; i++) 83

84 if (SluchaenBr() < MUTATION_RATE) int zameniso = random(br_tochki) % BR_TOCHKI; int tmp = edinka.hromozom[i]; edinka.hromozom[i] = edinka.hromozom[zameniso]; edinka.hromozom[zameniso] = tmp; Вториот пример (за решавање на проблемот на патувачкиот продавач) беше имплементиран и втор пат со таа разлика што наместо при секое ново извршување на програмата да се генерираат точки со нови координати за X и Y, истите се запишани во табела во која се дадени растојанијата помеѓу било кои два градови. int rastojania[4][4] = // PP Bg Bs By /*pp*/ 0, 528, 872, 730, /*bg*/ 528, 0, 564, 593, /*bs*/ 872, 564, 0, 170, /*by*/ 730, 593, 170, 0 ; 84

85 10 Софтверска имплементација Fuzzy Системи За имплементацијата на програми за fuzzy системите беше превземен поразличен пристап од оној кај генетските алгоритми. Овдека не само што беше решен конкретен проблем, туку беше направена библиотека со која може да се имплементира целосен fuzzy систем преку креирање на fuzzy правила и кој можи да се користи за решавање на различни проблеми. Поради тоа што станува збор за колекција од повеќе фајлови со декларации и дефиниции на функции за различните составни елементи од fuzzy логиката, во тековната глава нема да бидат изнесени целосните кодови туку само делови од нив со цел да се види подобро што се случува од софтверска гледна точка во текот на процесот на креирање и понатамошно извршување на еден fuzzy систем. Во спротивно би опфатило премногу страници. класи. Се креираат влезните и излезните променливи како објекти од соодветните FuzzyIN* service = new FuzzyIN(1); FuzzyIN* food = new FuzzyIN(2); FuzzyOUT* tip = new FuzzyOUT(1); Секоја од променливите можи да има една или повеќе лингвистички вредности со кои е опфатен влезниот простор на променливата. FuzzyMF* poor = new FuzzyMF(0, 0, 0, 3); FuzzyMF* good = new FuzzyMF(2, 5, 5, 8); FuzzyMF* excellent = new FuzzyMF(7, 10, 10, 10); Секоја лингвистичка вредност всушност е функција на членство која можи да биди триаголник или трапезоид. При декларација на функцијата на членство се поставуваат вредностите на четирите темиња на трапезот, со таа разлика што доколку сакаме да користиме триаголник наместо трепез, бидејќи триаголникот има три темиња второто и третото теме на трапезот треба да добијат иста вредност со цел трапезот да се конвертира во триаголник. FuzzyMF* trapez = new FuzzyMF(1, 3, 8, 9); FuzzyMF* triagolnik = new FuzzyMF(2, 5, 5, 8);... FuzzyMF::FuzzyMF(float a, float b, float c, float d) this->m_pointa = a; 85

86 this->m_pointb = b; this->m_pointc = c; this->m_pointd = d; this->m_membershipvalue = 0.0; од правилото. Правилата се креираат така што најпрвин се креира IF-делот (причинскиот дел) FuzzyRuleAntecedent* if_poor_or_rancid = new FuzzyRuleAntecedent(); Притоа во причинскиот дел можи да има една лингвистичка вредност или повеќе вредности споени со логичката операција И или ИЛИ. Притоа доколку имаме вредности кои се споени со логичка операција, истите можи да бидат функции на членство или и самите да претставуваат IF-делови. if_good->joinsingle(good); if_poor_or_rancid->joinor(poor, rancid); if_poor_and_rancid->joinor(poor, rancid); За сите типови на конекции има соодветна функција. void JoinSingle(FuzzyMF* mf); void JoinAND(FuzzyMF* mfa, FuzzyMF* mfb); void JoinAND(FuzzyMF* mf, FuzzyRuleAntecedent* ra); void JoinAND(FuzzyRuleAntecedent* ra, FuzzyMF* mf); void JoinAND(FuzzyRuleAntecedent* raa, FuzzyRuleAntecedent* rab); void JoinOR(FuzzyMF* mfa, FuzzyMF* mfb); void JoinOR(FuzzyMF* mf, FuzzyRuleAntecedent* ra); void JoinOR(FuzzyRuleAntecedent* ra, FuzzyMF* mf); void JoinOR(FuzzyRuleAntecedent* raa, FuzzyRuleAntecedent* rab);... void FuzzyRuleAntecedent::JoinSingle(FuzzyMF* mf) this->m_connectedelements = EL_MF; if (NULL!= mf) this->m_mfa = mf; void FuzzyRuleAntecedent::JoinAND(FuzzyMF* mfa, FuzzyMF* mfb) this->m_connectedelements = EL_MF_MF; this->m_connectedwith = OP_AND; if (NULL!= mfa && NULL!= mfb) this->m_mfa = mfa; this->m_mfb = mfb; 86

87 void FuzzyRuleAntecedent::JoinAND(FuzzyMF* mf, FuzzyRuleAntecedent* ra) this->m_connectedelements = EL_MF_RA; this->m_connectedwith = OP_AND; if (NULL!= mf && NULL!= ra) this->m_mfa = mf; this->m_raa = ra; void FuzzyRuleAntecedent::JoinAND(FuzzyRuleAntecedent* ra, FuzzyMF* mf) this->m_connectedelements = EL_MF_RA; this->m_connectedwith = OP_AND; if (NULL!= mf && NULL!= ra) this->m_mfa = mf; this->m_raa = ra; void FuzzyRuleAntecedent::JoinAND(FuzzyRuleAntecedent* raa, FuzzyRuleAntecedent* rab) this->m_connectedelements = EL_RA_RA; this->m_connectedwith = OP_AND; if (NULL!= raa && NULL!= rab) this->m_raa = raa; this->m_rab = rab; void FuzzyRuleAntecedent::JoinOR(FuzzyMF* mfa, FuzzyMF* mfb) this->m_connectedelements = EL_MF_MF; this->m_connectedwith = OP_OR; if (NULL!= mfa && NULL!= mfb) this->m_mfa = mfa; this->m_mfb = mfb; void FuzzyRuleAntecedent::JoinOR(FuzzyMF* mf, FuzzyRuleAntecedent* ra) this->m_connectedelements = EL_MF_RA; this->m_connectedwith = OP_OR; 87

88 if (NULL!= mf && NULL!= ra) this->m_mfa = mf; this->m_raa = ra; void FuzzyRuleAntecedent::JoinOR(FuzzyRuleAntecedent* ra, FuzzyMF* mf) this->m_connectedelements = EL_MF_RA; this->m_connectedwith = OP_OR; if (NULL!= mf && NULL!= ra) this->m_mfa = mf; this->m_raa = ra; void FuzzyRuleAntecedent::JoinOR(FuzzyRuleAntecedent* raa, FuzzyRuleAntecedent* rab) this->m_connectedelements = EL_RA_RA; this->m_connectedwith = OP_OR; if (NULL!= raa && NULL!= rab) this->m_raa = raa; this->m_rab = rab; И последичниот дел (THEN-делот) од правилото се креира на сличен начин како причинскиот дел. FuzzyRuleConsequent* then_average = new FuzzyRuleConsequent(); И двата се спојуваат во објектот за fuzzy правилото. FuzzyRule* r1; r1 = new FuzzyRule(if_poor_or_rancid, then_cheap, 1);... FuzzyRule::FuzzyRule(FuzzyRuleAntecedent* if_antecedent, FuzzyRuleConsequent* then_consequent, int id) this->m_ifantecedent = if_antecedent; this->m_thenconsequent = then_consequent; Со поставувањето на вредностите на влезните променливи всушност започнува процесот на фазификација. service->setinputvalue(3);... 88

89 void FuzzyIN::setInputValue(float crispinputvalue) this->m_crispinputvalue = crispinputvalue; MFArray* tmpmf; tmpmf = this->m_mfarray; while (NULL!= tmpmf) if (NULL!= tmpmf->fuzzymf) tmpmf->fuzzymf->calculatemembershipvalue(this->m_crispinputvalue); tmpmf = tmpmf->next; После поставувањето на влезните вредности се евалуира правилото. Најпрвин се пресметува причинскиот дел од правилото така што се одредува неговата вредност во зависност од тоа дали има една или повеќе променливи. Доколку во причинскиот дел се поврзани повеќе од една променлива со логичката операција И или ИЛИ ќе се изврши соодветно функцијата за пресметување на минимум односно максимум. После евалуирањето на сите правила треба да се пресмета излезната вредност на fuzzy системот. Ова се прави со методот на центроид. void FuzzyOUT::CalculateOutputValue() float sumofareas = 0.0; float sumofproducts = 0.0; if (NULL!= this->m_mfarray) MFArray* tmp = this->m_mfarray; float tmpb, tmpc, tmph, tmparea; while (NULL!= tmp) if (tmp->fuzzymf->getmembershipvalue() > 0) tmph = tmp->fuzzymf->getmembershipvalue(); if (tmp->fuzzymf->getpointa() == tmp->fuzzymf->getpointb()) tmpb = tmp->fuzzymf->getpointb(); else tmpb = tmph * (tmp->fuzzymf->getpointb() - tmp->fuzzymf->getpointa()) + tmp->fuzzymf->getpointa(); if (tmp->fuzzymf->getpointc() 89

90 else == tmp->fuzzymf->getpointd()) tmpc = tmp->fuzzymf->getpointc(); tmpc = tmp->fuzzymf->getpointd() - tmph * (tmp->fuzzymf->getpointd() - tmp->fuzzymf->getpointc()); tmparea = ((tmpc - tmpb) + (tmp->fuzzymf->getpointd() - tmp->fuzzymf->getpointa()))*0.5*tmph; sumofareas += tmparea; tmparea *= (tmp->fuzzymf->getpointd() + tmp->fuzzymf->getpointa())*0.5; sumofproducts += tmparea; tmp = tmp->next; if (sumofareas!= 0) this->m_crispoutputvalue = sumofproducts / sumofareas; else this->m_crispoutputvalue = 0.0; 90

91 11 Софтверска имплементација Вештачки Невронски Мрежи Како и кај fuzzy системите, така и овде беше креирана библиотека со која можат да се решаваат повеќе проблеми за кои е погодна употребата на невронските мрежи. Со цел тестирање на библиотеката и доказ дека истата можи да се користи реално кај хардверските платформи со ограничени ресурси беа имплементирани два примери. Првиот пример служи за да ја тестира исправноста на имплементацијата на невроните преку креирање на невронски мрежи за неколку Булови логички операции. Бидејќи основниот тест е невронската мрежа да можи да наоѓа точни решенија за Буловата логичка операција ЕКСЛУЗИВНО_ИЛИ, токму тоа и е направено во првата имплементација. Невронската мрежа е креирана од три слоеви (влезен, скријан и излезен слој) и за секој од нив претходно е одреден бројот на неврони. Бидејќи станува збор за учење со надгледување потребно е да се дефинираат парови од влезни вредности и очекувани резултати. #define INPUT_NEURONS 2... #define TRAINING_SETS 4 #define ACCEPTABLE_ERROR 4... int traininginputs[training_sets][input_neurons] = 0, 0, //0 0, 1, //1 1, 0, //2 1, 1 //3 ;... int trainingtargets[training_sets][output_neurons] = 0, //0 1, //1 1, //1 0 //0 ; Најпрвин се воспоставуваат конекции помеѓу сите неврони од моменталниот со сите неврони од претходниот слој бидејќи библиотеката е креирана за целосно конектирани невронски мрежи. При воспоставување на конекцијата се прави најпрвин проверка за преостанат мемориски простор бидејќи се работи со платформи кај кои истиот е премногу ограничен и доколку сеуште има преостанато доволно меморија се 91

92 воспоставува конекцијата помеѓу невроните и истата добива тежина со случајна вредност помеѓу -0.5 и 0.5. bool Nevron::AddConnection(Nevron* nevron) Connections* tmp; if ((tmp = (Connections *)malloc(sizeof(connections))) == NULL) Serial.println("NEMA SLOBODNO MESTO"); return false; tmp->nevronptr = nevron; tmp->connectionweight = (((double)random(rand_max) / RAND_MAX) - 0.5); tmp->previouschange = nevron->getpreviouschange(); tmp->nextptr = NULL; if (NULL == this->currentconnection_m) this->currentconnection_m = tmp; this->nextconnection_m = tmp; else this->nextconnection_m->nextptr = tmp; this->nextconnection_m = tmp; return true; После воспоставувањето на конекциите започнува процесот на тренинг на мрежата. Тренингот се прави така што се пресметува излезната вредност на секој од невроните од секој слој последователно. Притоа како што беше кажано во Глава 7, најпрвин се пресметува сумата на биас невронот и производите на влезните вредности кои невронот ги добива преку своите влезни конекции (со кои е конектиран со невроните од претходниот слој) и тежините за тие конекции. Влезните вредности за невронот од слој n се излезните вредности од невроните од слојот n-1 (претходниот слој). void Nevron::CalculateOutputValue() bool callsigmoid = false; Connections* tmp; tmp = this->currentconnection_m; this->outputvalue_m = this->bias_m; while (tmp!= NULL) this->outputvalue_m += 92

93 (tmp->nevronptr->getoutputvalue() * tmp->connectionweight); tmp = tmp->nextptr; callsigmoid = true; if (true == callsigmoid) CalculateSigmoid(); Оваа сума потоа се користи како влез во функција на сигмоида, поточно во библиотеката се користи логистичката функција (15). Резултатот од логистичката функција е излезната вредност од невронот. void Nevron::CalculateSigmoid() this->outputvalue_m = 1.0 / (1.0 + exp(-1 * (this->outputvalue_m))); според (18). За излезниот слој покрај излезната вредност се пресметува и вкупната грешка deltaoutput = (trainingtargets[insz][i] - outputlayer[i].getoutputvalue()) * outputlayer[i].getoutputvalue() * (1.0 - outputlayer[i].getoutputvalue()); Покрај вкупната грешка на излезните неврони исто така се пресметува и грешката на мрежата, која доколку падни под одредена граница се прекинува извршувањето на апликацијата бидејќи се пресметани прифатливи тежини. error += 0.5 * (trainingtargets[insz][i] - outputlayer[i].getoutputvalue()) * (trainingtargets[insz][i] - outputlayer[i].getoutputvalue());... if ((error * 10000) <= ACCEPTABLE_ERROR) unsatisfactory = false; else unsatisfactory = true; Грешката потоа се пропагира низ претходните слоеви се до влезниот слој. После пропагацијата на грешката се подесуваат тежините на конекциите. Процесот се повторува се додека вкупната грешка не падни под границата за која велиме дека тежините добиле прифатлива вредност за која ќе се добиваат резултати со доволна прецизност. 93

94 if ((error * 10000) <= ACCEPTABLE_ERROR) unsatisfactory = false; Вториот пример кој беше имплементиран има поголема практична примена и служи за тренирање на невронска мрежа која ќе научи да ги разпознава броевите од 0 до 9. Со цел симулација на апликација за распознавање на напишани броеви беше креирано множество со тренинг вредности и соодветни очекувани резултати. int traininginputs[training_sets][input_neurons] = 1, 1, 1, 1, 1, 1, 0, //0 0, 1, 1, 0, 0, 0, 0, //1 1, 1, 0, 1, 1, 0, 1, //2 1, 1, 1, 1, 0, 0, 1, //3 0, 1, 1, 0, 0, 1, 1, //4 1, 0, 1, 1, 0, 1, 1, //5 0, 0, 1, 1, 1, 1, 1, //6 1, 1, 1, 0, 0, 0, 0, //7 1, 1, 1, 1, 1, 1, 1, //8 1, 1, 1, 0, 0, 1, 1 //9 ; int trainingtargets[training_sets][output_neurons] = 0, 0, 0, 0, //0 0, 0, 0, 1, //1 0, 0, 1, 0, //2 0, 0, 1, 1, //3 0, 1, 0, 0, //4 0, 1, 0, 1, //5 0, 1, 1, 0, //6 0, 1, 1, 1, //7 1, 0, 0, 0, //8 1, 0, 0, 1 //9 ; Секоја од тренинг вредностите (низа од седум елементи секој со вредност 0 или 1) всушност ќе претставува дигитална претстава на една од цифрите од 0 до 9. Секоја од цифрите е составена од 7 делови како цифрите на дигитронот. Доколку делот е уклучен тогаш има вредност 1, а во спротивно вредност 0. Останатите чекори на креирање, тренирање и извршување на невронската мрежа се исти како и во првиот пример. Единствената разлика е во тренинг податоците и бројот на неврони и слоеви. Како и во претходниот пример и во овој, за време на реалното извршување на невронската мрежа единствената функција која се извршува е функцијата за пресметување на излез, а се користат вредностите за тежините кои се претходно добиени за време на тренинг процесот. 94

95 12 Софтверска имплементација Support Vector Machines Поради хардверските ограничувања, а со цел да се покаже дека сепак можи да се користат SVM, беше имплементиран едноставен пример со две линеарно раздвоиви класи. За потребите на примерот беа имплементирани две функции. Првата служи за оптимизирање т.е. пронаоѓање на хиперрамнина дефинирана со тежини и биас и со која може да се одделат двете класи на кои припаѓаат влезните тренинг податоци. Втората се користи после оптимизациониот процес и служи за да ги класифицира реалните влезни податоци. За потребите на процесот на оптимизација е дефинирано множество со тренинг податоци кои се точки во 2D просторот дефинирани со нивните координати за x и y оските, како и класата на која и припаѓаат. Најпрвин се одредува границите помеѓу кои ќе се движат вредностите на тежините. Притоа ќе има три инкременти во процесот на наоѓање на екстремот со цел најпрвин со најголемиот чекор грубо да се лоцира каде се наоѓа екстремот, а потоа последователно попрецизно истиот да се најди. Притоа се проверува дали е исполнет условот во (25) double sum = 0; for (int b = 0;b < FEATURES;b++) //(int)treningdata.at(a).size() sum += (w_t[b] * treningdata[a][b]); sum += bias; Доклку условот не е исполнет за било кој од тренинг податоците проверката прекинува и се тестира со нова комбинација на тежини. Всушност ова е исто како и кај класификаторите со цврста маргина, бидејќи ефективно се забранува погрешна класификација на податоци. Ова можи да се прошири со воведување на променлива која ќе брои колку отстапувања се направени и колкаво е вкупното отстапување со цел доколку не ја надмини некоја граница да биди дозволено погрешно класифицирање на податоци. 95

96 if (treninglabel[a] * sum < 1) found_option = false; break; Доколку ниту еден од тренинг податоците не е погрешно класифициран се зачувуваат моменталната вредност за тежините и биасот. for (int iw = 0; iw < 2; iw++) this->m_wt[iw] = w_t[iw]; this->m_b = bias; Процесот ќе се повтори за сите вредности на инкрементот на тежините. Последно зачуваните вредности за тежините и биасот се користат во процесот на класификација на реалните податоци. int SVM_MH::predict( double point[features] ) double sum = 0; for (int i = 0;i < FEATURES;i++) //(int)point.size() sum += point[i] * this->m_wt[i]; sum += this->m_b; if (sum < 0) return -1; else if (sum>0) return 1; else return 0; 96

97 13 За имплементираните примери и можностите за практична примена Во претходните четири глави каде беа претставени извадоци од код за некои од поважните делови од имплементираните примери за применетите методи од машинското учење накратко стана збор за примената на истите. Во оваа глава подетално ќе бидат опишани овие примери како и дополнителни за кои беа тестирани кодовите, а исто така ќе стани збор и за останати потенцијални случаи во кои понудените кодови можат да најдат практични примена. Кога стана збор за генетските алгоритми беше кажано дека беа имплементирани два примери од кои првиот служеше повеќе како тест за исправноста на кодот но и за да потврди дека можи истиот да се извршува на избраните хардверски платформи. Првиот пример на употреба на генетските алгоритми беше едноставен, со тоа што целта беше да се најди решение во кое во најдобар случај сите гени ќе имаат вредност 1. Самиот проблем кој требаше да се реши не е интересен и нема некоја практична примена, но игра голема улога во процесот на изучување на генетските алгоритми од практичен аспект. Овој проблем е еден од првите проблеми кои ги решаваат оние кои првпат имплементираат генетски алгоритми. Па дури и ако некој не е почетник во оваа област, самиот пример е доста корисен со цел да ги дознаеме можностите кои ни ги нуди системот на кој сакаме да имплементираме генетски алгоритми. Всушност можи да се речи дека овој пример е за генетските алгоритми исто што и Hello World! примерот е за програмските јазици. Преку овој пример најпрвин можиме да дознаеме дали самата софтверска имплементација на функциите за избор, вкрстување, мутација и фитнес е исправна. Иако самите генетски алгоритми функционираат така што во голем дел од процесите користат случајни вредности што ги прави тешки за дебагирање, сепак често после неколку генерации може со голема точност да се дознае дали функциите се правилно имплементирани или не во зависност од резултатите кои се добиваат. Така на пример доколку низ генерациите фитнесот на најдобрите единки и на генерацијата како целина има тенденција на опаѓање, а се очекува да расти, тогаш најчесто ќе значи дека има проблем во имплементацијата на функциите за избор на единки и/или функцијата за пресметка на фитнес. Доколку пак 97

98 има голем број на единки во генерацијата кои се повторуваат ова можи да покажува на проблеми со функцијата за избор на најдобри единки и/или функцијата за вкрстување. Вториот решен пример од областа на генетските алгоритми беше проблемот на патувачкиот продавач. Овој проблем е класичен проблем од областа на оптимизацијата. Истиот е проучуван повеќе од еден век и има за цел да се најди најефикасниот (најчесто тоа е најкраткиот) пат помеѓу група на градови така што секој од нив ќе биди посетен само еднаш. Самиот проблем сеуште останува нерешен бидејќи за да се најди најдоброто решение мора да се тестираат сите можни решенија (метод на груба сила) бидејќи не ја знаеме должината на најкратката патека помеѓу градовите. Можеби методот на груба сила е прифатлив доколку станува збор за 5 или 6 градови, но бидејќи самиот проблем односно бројот на потенцијални решенија подлежат на факторијално растење може да се види дека дури и за мала промена во бројот на градови, бројот на можни решенија драстично се зголемува. Така на пример за 5 градови има 120 можни решенија (5! = = 120). Доколку бројот на градови го зголемиме за 1 (6 градови) ќе се добијаат 720 можни решенија (6! = 720), а доколку истиот го зголемиме на 7 ќе добијаме 5040 решенија. За секој нов град кој се додава бројот на можни решенија се зголемува за n + 1 пати. Така само за 15 градови има повеќе од 1 трилион решенија (поточно има решенија). Дури и ако се превземат чекори кон отстранување на пример на обратните патеки (A B C е исто со C B A) сепак бројот на можни патеки, а со тоа и бројот на решенија кои треба да се пресметаат најчесто ќе биди преголем за да се користи груба сила. Поради ова кај овој проблем како и кај некои други нема да биди важно да го најдиме најдоброто решение. Доколку го најдиме би било одлично, но дури и доволно добро решение ќе биди прифатливо. Тоа што кај овој проблем не го знаеме најдоброто решение ќе значи дека нема да ни биди позната фитнес вредноста на истото. Бидејќи не ја знаеме најдобрата фитнес вредност нема да знаеме дали сме го нашле најдобриот пат, па поради тоа во овој пример беа воведени поинакви услови за завршување на извршувањето на програмата. Градовите во примеров се 2D точки дефинирани со нивните X и Y координати, а растојанието помеѓу нив е Евклидовото растојание. Самиот фитнес на решението е збирот на овие растојаниа т.е. вкупната должина на патот кој треба да го помини патникот. 98

99 Бидејќи не ја знаеме должината на најкраткиот пат, доколку најдобрите решенија во неколку последователни генерации се разликуваат за помалку од одредена вредност т.е. најдоброто решение не се подобрува за повеќе од некоја вредност престанува извршувањето на програмата и најдоброто решение во тековната генерација се прогласува за победник. Често патот помеѓу градовите нема да биди шрава линија (Евклидово растојание) па поради тоа беше имплементиран уште еден пример во кој беше дадена табела со растојанија помеѓу било кој пар од два градови. Овај пример користи додатна меморија биејќи треба да се запишат и растојанијата помеѓу градовите но поголем број од реалните примери се од овој облик отколку од првиот. Практичната применливост на проблемот на патувачкиот продавач е многу поголема одколку првиот пример за кој беше креирано решение со генетски алгоритми. Градовите од примерот можиме да ги замениме со било кои точки во просторот: точки кои треба да ги посети некој робот, места на контакт во електронските кола итн. Самите растојанија помеѓу точките исто така не мора да бидат должини. Истите може да бидат други вредности како на пример брзина, време и слично. Дури и ако станува збор за вистински градови, патот помеѓу нив ретко кога ќе биди права линија. Не само што патот нема да биди линеарен не секогаш најкраткиот пат е најбрзиот. Времето на поминување на патот ќе зависи од повеќе работи: ограничувањето на брзината, квалитетот на патот, бројот на возила, застои поради поправки, а често знае да има еден пат од град А до град В, а сосема друг пат кога се движиме во обратна насока од В кон А. Најкраткиот пат често нема да биди оној со најмала должина туку оној кој ќе го поминиме за најмало време. Доколку градовите ги замениме со компјутерски системи (или други електронски уреди на пример сензорски нодови), а патиштата помеѓу нив бидат конекциите помеѓу системите, должината на патот не мора да биди физичкото растојание помеѓу системите туку можи да биди бендвитот на самата конекција. Па така дури и ако два системи се физички блиску, поради бавниот трансфер на податоци помеѓу нив можеби е помалку исплатливо да се прави директна комуникација туку е побрзо двата системи да остваруваат размена на податоци преку еден или повеќе посредници. Вториот метод од областа на машинското учење кој беше имплементиран беше системот со fuzzy логика. Природата на имплементацијата е таква што се овозможува 99

100 да се искористат функции за имплементација на решенија за различни проблеми. Поради тоа што корисникот самиот можи да ги дефинира функциите на членство и да креира fuzzy правила има голема слобода во поглед на ситуациите во кои можи да ја употреби fuzzy логиката и да креира систем со fuzzy логика. Со цел да се покажи функционалноста на библиотеката беше креиран еден пример преку кој беа претставени некои од нејзините можности. Станува збор за пример во кој врз база на вредности за квалитетот на услугата и храната се одредува вредноста на бакшишот кој може да се остави во ресторанот. Примерот со мали промени можи да биди практично применлив. Иако во имплементацијата се користат фиксни вредности за влезните променливи сепак не е потребна голема промена во кодот за истите да се заменат со вредности кои се добиваат преку мерење со различни сензори. Самата библиотека не знае како е добиена вредноста на влезната променлива или променливи кои се дел од системот. Поради ова истата не треба да се променува. Така на пример променливите за храна и услуга можи да се заменат со температура во степени целзиусови и процент на влажност и истите да добиваат вредности измерени со еден сензор за температура и еден со кој ќе се мери влажност на воздухот. Двата сензори ќе служат за да ги постават вредностите на влезните променливи. Понатаму врз база на вредностите на овие влезни променливи можи да се креираат неколку правила со цел да се направи систем со кој на пример можи да се предвидува веројатноста за настанување на пожар и за рана детекција на веќе настанати пожари. На пример доколку имаме температура повисока од 40 степени и сув воздух потенцијалот за настанување на пожар е многу поголем одколку ако температурите се ниски на пример под 20 степени и има голема влажност на воздухот. Доколку самата температура кај повеќе од еден од нодовите надминува 100 степени целзиусови тогаш може да се кажи дека на тоа место има голема веројатност дека настанал пожар. Зошто кај повеќе од еден од нодовите, а не само кај еден, затоа што треба да се земи во предвид и можноста дека сензорот можи да биди неисправен. Доколку понатаму го прошириме системот со дополнителни сензори за јачина на ветар, воздушен притисок и интензитет на светлина можи да се направи добар систем за временска прогноза. Во зависност од времето во денот и интензитетот на светлината можи да се одредува облачноста. Во комбинација со јачината на ветрот, температурата, притисокот и влажноста на воздухот можи да се добија добра претстава 100

101 за потенцијалот за дожд, град и слично. Покрај што системот ќе можи да процени потенцијална временска (не)погода исто така бидејќи станува збор за fuzzy логика можи да се добијаат и информации од кои особено имаат бенефит метеоропатите (на пример системот можи да ни кажи дека во текот на денот ќе имаме добро расположение поради погодните временски услови). Со мала промена во сензорите кои ги користиме како и во вредностите на функциите за членство и правилата кои ги поврзуваат истите, може да се добија систем со целосно различна намена. Може (и се креирани) системи за контрола на најразлични процеси, само со мала промена во бројот на влезни и излезни променливи, рангот на функциите на членство за истите променливи како и правилата кои ги поврзуваат овие вредности и системот кој го контролира излезната променлива. Во имплементираниот пример имаше само една излезна променлива чиј резултат му беше прикажан на корисникот во текстуална форма. Но доколку истиот позлужи како влез во контролен систем можи да се искористи на пример за да ја поставува температурата на системот кој го контролираме, протокот на воздух, производството на електрична енергија итн. За невронските мрежи беа имплементирани два примери. Првиот пример беше со цел да се потврди дека е исправно имплементирана библиотеката за креирање на невронски мрежи и извршување на истите. Со цел да се провери ова беа креирани влезни тренинг податоци за Буловите логични операции И, НИ (НЕ_И), ИЛИ, НИЛИ (НЕ_ИЛИ), ЕКСКЛУЗИВНО_ИЛИ и ЕКСКЛУЗИВНО_НИЛИ, како и соодветните очекувани резултати за секоја од тренинг вредностите (парови од 0 и 1) за шесте Булови операции. Со цел симулација на реален влез после тренингот беше искористено Arduino-то на кое беа поставени едно копче и три диоди. Идеата позади ова беше да се искористи копчето за да се симулираат измерени влезни податоците. Најпрвин се читаат вредностите од копчето, притоа се чека да се постават влезовите, 1 ако е притиснато копчето, а 0 ако не е притиснато во дадениот временски интревал додека се регистрира влез, за двата влезни неврони, последователно. 101

102 Слика 13.1 Графички приказ на Arduino-то употребено во практичната имплементација на првиот пример за невронски мрежи. Употребени се 3 LED диоди (две жолти на кои се прикажува вредност од секој од влезните неврони и една црвена на која се прикажува вредноста на излезниот неврон), 3 отпорници од 330 Ω (по еден на секоја LED диода) и еден отпорник од 10 kω како и едно копче за поставување на влезните вредности. Резултатот на пресметката на мрежата се прикажува на излез на диодата на пин 7, ON ако резултатот е 1, OFF ако е 0. Покрај диодата на порт 7 која служи за прикажување на вредноста на резултатот, исто така има и две диоди на порт 4 и 5 со кои се прикажува вредноста на првиот односно вториот влезен неврон. Диодата на порт 4 го означува влезот 1 и ќе биди во состојба ON за влезна вредност 1 односно OFF за 0. Диодата на порт 5 го означува влезот 2 и ќе биди во состојба ON за влезна вредност 1 односно OFF за 0. Иако станува збор за навидум едноставен пример без некоја практична примена сепак истиот е доволно корисен за тестирање на исправноста на имплементираниот код. И не само тоа истиот може и практично да се примени со мали модификации. Така 102

103 на пример можиме да додадеме два сензори (по еден за секој од двата влезни неврони) кои во зависност од измерените вредности во системот кој го набљудуваат ќе поставуваат вредност 1 или 0. На пример да земиме систем кој има два сензори или две групи на сензори од кои секој сензор можи да ја постави вредноста на еден од двата влезни неврони. Системот ќе го користиме за контрола на процес на мешање на две различни течности со цел добивање на трета. Притоа двете течности на почеток се наоѓаат во два одделни резервоари со контролирани услови со цел да не дојде до намалување на квалитетот на истите. На пример течност А мора да биди на температура не помала од 20 и не поголема од 22 степени целзиусови, во спротивно истата неповртно ќе кристализира, а за течност В важи истото но со температурни граници од 35 до 37 степени целзиусови. Притоа со мешање на двете се добива целосно нова течност С која ги нема недостатоците на течностите А и В, но постои само мал временски период во кој двете течности треба да се измешаат пред да настани неповратна штета во било која од нив. Поради ова мора пред да настани мешање да бидиме сигурни дека и во двата резервоари има доволно количество од соодветната течност. Така едниот сензор или едната група на сензори ќе го мери нивото на течност А во првиот резервоар, а додека другиот сензор или група на сензори ќе го мерат нивото на течност В во вториот резервоар. Само доколку има доволно од двете течност ќе можи да се измешаат за да се добие течност С. Сензорот ќе постави вредност 1 на соодветниот влезен неврон кога ќе има доволно од течноста во резервоар за кој го мери нивото на течност. Само во случај да и двата влезни неврони имаат вредност 1 ќе се активира вентил со кој се отвораат и двата резервоари со цел да настане мешање на течностите. На овај начин е имплементирана Буловата логичка операција И. Се разбира ова можи да се направи и на друг поедноставен начин без потреба од креирање и тренирање на невронска мрежа, но самото ова можи да ја потврди исправноста на имплементацијата на кодот. Вториот пример кој беше имплементиран со користење на невронски мрежи е од реална практична примена. Истиот претставува едноставен систем за распознавање на карактери. Во случајов ќе научи да ги распознава броевите од 0 до 9. За секој од броевите е креирана тренинг вредност. Секоја од тренинг вредностите (низа од седум елементи секој со вредност 0 или 1) всушност ќе претставува дигитална претстава на 103

104 една од цифрите од 0 до 9. Секоја од цифрите е составена од 7 делови како цифрите на дигитронот. Доколку делот е уклучен тогаш има вредност 1, а во спротивно вредност 0. Слика 13.2 Секој од седумте делови од кои е составен бројот може да има вредност 0 (исклучен) или 1 (уклучен). Со комбинација на различни делови се добиваат броевите од 0 до 9 Во зависност од тоа кој дел од седумте е активиран (влегува во составот на бројот) т.е. има вредност 1 соодветно на таа позиција во низата од тренинг податокот кој соодвестува на бројот ќе има вредност 1, а во спротивно ќе има вредност 0. Така на пример тренинг податокот (низата) за бројот 2 ќе ги има вредностите 1, 1, 0, 1, 1, 0, 1, бројот 6 ќе ги има вредностите 1, 0, 1, 1, 1, 1, 1 итн. Слика 13.3 Цифрите за кои невронската мрежа треба да научи да ги препознава. Секоја од цифрите е составена од седум делови, кои доколку се обоени имаат вредност 1, а во спротивно вредност

105 Дури и кај посложените апликации принципот на работа е ист, со тоа што сликата од карактерот кој треба да биди препознаен се поделува на поголем број на делови (пиксели) кои доколку се полни имаат вредност 1 а во спротивно вредност 0. Често покрај 0 и 1 се користат и вредности помеѓу нив во зависност од интензитетот на линијата (бојата на пикселот). Поради ограничувањата во примеров се користат само вредности 0 и 1 и бројот на пиксели со кои е претставена секоја од цифрите е 7. Слика 13.4 Рачно напишаниот карактер (а) се конвертира во црно-бела слика со димензии 10х10 пиксели што значи дека хромозомот би имал 100 гени(б). Во зависност од интензитетот на црната боја соодветниот ген ќе добија вредност помеѓу 0 (целосно бело) и 1 (целосно црно) (в) Исто како и кај претходниот пример, така и кај овој беше искористено Arduinoто со цел симулација на реален влез и приказ на резултатот на излез. Бидејќи не можи да се користи камера или скенирана вредност која ќе се обработи со цел да се препознае бројот, симулацијата се прави така што се избира еден случаен број од 0 до 9 за кој на мрежата и се проследува низата од нули и единици која одговара на дигиталниот приказ на бројот. Претходно тренираната невронска мрежа го пресметува резултатот за влезните вредности користејќи ги тежините на конекциите помеѓу невроните и резултатот кој се добива е бројот за кој мрежата мисли дека е добијан на влез. Истиот во бинарен формат се прикажува со користење на четири диоди. Диодите со кои се претставени позициите на бинарниот број од десно кон лево се уклучени на портови 7, 6, 5 и 4. Доколку битот на соодветната позиција има вредност 1 тогаш LED диодата е уклучена, а во спротивно за вредност 0 е исклучена. Пример за бројот 3 кој во бинарниот систем ја има вредноста 0011 ќе бидат уклучени диодите на порт 7 и 6, а за бројот 9 кој има бинарен облик 1001 ќе бидат уклучени диодите на порт 7 и

106 Слика 13.5 Графички приказ на Arduino-то употребено во практичната имплементација на вториот пример за невронски мрежи 106 За последниот метод на машинско учење кој беше имплементиран (SVM) беше искористен еден пример. Притоа имплементираната SVM служи за класификација. Имплементираниот пример е за две линеарно раздвоиви класи од точки во 2D просторот. Како тренинг вредности се користат три точки за класа -1 и уште толку за класа 1. SVM тренира со цел да најди хиперрамнина која линеарно ќе ги разделува двете класи. Со цел симулација на реален влез се користи множество од 10 тест објекти (10 точки) кои системот треба да ги класифицира во една од двете класи во зависност од вредноста која ќе ја добие користејќи ги координатите на точките како влезни вредности и претходно најдените вредности за тежините и биасот кои се пресметани во фазата на тренинг. Реално вредностите кои сега се фиксни и кои ги претставуваат координатите на точките може да се заменат со било кои вредности добиени преку сензори за мерење на некоја карактеристика на одреден систем. Притоа секоја од оските (во случајов две оски X и Y) ќе претставува по една влезна карактеристика на објектот кој треба да се класифицира. Во наредната глава ќе бидат изнесени добиените резултати за некои од имплементираните примери.

107 14 Резултати од тестирања Со цел да се утврди прифатливоста на имплементираните кодови и библиотеки беа направени повеќе тестирања со симулирани и реални податоци. Секој од примерите беше тестиран со комбинација од различни вредности за соодветните параметри. Врз база на тестирањате беа извлечени одредени заклучоци како во поглед на влијанието на секој од параметрите врз брзината на извршување на алгоритмите и врз самата брзина на наоѓање на соодветно решение за конкретниот проблем, така и за обемноста на проблемите кои можи да се решат знаејќи ги ограничувањата кои постојат од аспект на перформансите на хардверските платформи кои беа употребени. Сите тестирања се направени на двете хардверски платформи: Arduino UNO и Texas Instruments Tiva C-Series TM4C1294XL. Резултатите од тестирањата се прикажани во табелите кои следуваат. Заклучоците до кои беше дојдено преку тестирањата се изнесени во тековната глава. Табела 3 Просечни резултати од тестирањата на првиот пример за генетски алгоритми. Секоја од комбинациите (1-6) беше тестирана по 50 пати. Популација Стапки Решение (просек) Arduino UNO Решение (просек) TI TM4C1294XL Единки Бр. на гени Вкрстување Мутација Генерација Време (ms) Генерација Време (ms) Она што може да се види од табела 3 е дека најдобри резултати доколку имаме за цел да добиеме решение во најмал број на генерации се добиени со користење на вредностите од втората комбинација (означени со црвено во табела 3). Но доколку целта ни е за најкратко време да добиеме најдобар резултат, тогаш истото се постигнува со третата комбинација (означена со плаво во табела 3). Вредностите за генерацијата во која е пронајдено решението и времето кое е потребно да се пронајде решението (изразено во милисекунди) се просечните вредности кои се добиени при 107

108 тестирање. Секоја од комбинациите (1-6) беше тестирана по 50 пати со цел да биди извлечен просекот. Сите тестови беа направени на Arduino UNO и на Texas Instruments Tiva C-Series TM4C1294XL и резултатите од тестирањата на двете хардверски платформи се изнесени во табела 3. Како што беше очекувано времето кое е потребно да се дојди до решение е пократко кога се користи TI TM4C1294XL поради подобриот процесор, но она што е изненадувачко е дека во просек за сите комбинации беа потребни повеќе генерации за да се дојди до решение во споредба со Arduino UNO. Просечно кога се користи TI TM4C1294XL до решение, за било која од комбинациите, се стасува 10 пати побрзо во споредба со времето потребно да се дојди до решение кога се користи Arduino UNO. Во табела 4 се дадени просечните резултати од тестирањето на вториот пример за генетските алгоритми (проблемот на патувачкиот продавач). Поради имплементацијата на примерот, градовите кои треба да ги посети патникот (од проблемот за кој е имплементирано решението) имаат координати кои се случајно генерирани. Со цел тестирањето да биди што е можно попрецизно, а бидејќи се прават споредувања на ефектот на стапките на вкрстување и мутациа и како со нивна промена се менува времето кое е потребно за да се најди прифатливо решение, со цел да се отстрани влијанието на останатите фактори врз времето на извршување на алгоритмот, ќе се користат при симулација градови со претходно одредени координати. Така x- координатите се следните: 82, 87, 82, 11, 45, 9, 28, а додека y-координатите ги имаат следните вредности: 8, 82, 38, 35, 59, 72, 56. На овај начин единствено влијание врз брзината на пресметување и наоѓање на прифатливо решение ќе имаат стапките на вкрстување и мутација. Исто така, бидејќи станува збор за проблем за кој реално нема да го знаеме најдоброто решение, програмот ќе престани со извршување кога бројот на генерации ќе надмине претходно одреден број на генерации (во случајов 500). Но поради тоа што сега имаме фиксни вредности за координатите на точките кои треба да бидат посетени и за кои ја бараме најкратката патека која ги поврзува, исто така после извршување на алгоритмот ќе имаме патека која е најкратка според самиот алгоритам. Оваа патека за дадените точки ќе има должина од а редоследот на посетување на точките е следниот: или било кој друг затоа што формира кружна 108

109 патека, па така можиме да почниме од било кој град и се додека го следиме овој редослед, патеката која ќе ја поминиме ќе биди најкратката. Така и патеката ќе ја има истата должина како и претходната затоа што всушност е истата патека со таа разлика што наместо од точката 5, сме почнале од точка 2. Со цел да се добијаат просечните вредности за генерација и време, секоја од комбинациите (1-4) беше тестирана по 500 пати. Табела 4 Просечни резултати од тестирањата на вториот пример за генетски алгоритми. Секоја од комбинациите (1-4) беше тестирана 500 пати. Популација Стапки Решение (просек) Arduino UNO Единки Бр. на Вкрстување Мутација Турнир Генерација Време гени (ms) Решение (просек) TI TM4C1294XL Генерација Време (ms) Она што можи да се заклучи е дека за најкратко време и во најмал број на генерации се доаѓа до решение доколку се користи првата комбинација (означена со црвено во табела 4). Сите тестови беа направени на Arduino UNO и на Texas Instruments Tiva C-Series TM4C1294XL и резултатите од тестирањата на двете хардверски платформи се изнесени во табела 4. Како што беше очекувано времето кое е потребно да се дојди до решение е пократко кога се користи TI TM4C1294XL поради подобриот процесор. Нема некои разлики помеѓу двете хардверски платформи во поглед на бројот на генерации кои се потребни, во просек, за да се дојди до најприфатливото решение. Просечно кога се користи TI TM4C1294XL до решение, за било која од комбинациите, се стасува 10 пати побрзо во споредба со времето потребно да се дојди до решение кога се користи Arduino UNO. Со цел да се осигураме дека резултатите кои се добиваат со имплементираниот код за проблемот со патувачкиот продавач (вториот пример за генетски алгоритми) истите беа споредени со NEOS Server Solver [11]. Резултатите се исправни. 109

110 Во табела 5 се дадени 50 низи, секоја со по седум елементи, точки во 2D просторот, секоја со сопствени координати по x и y оската. Во табелата е дадена должината на најкратката патека која е пронајдена со користење на имплементираниот алгоритам како и реоследот на градовите кои треба да се посетат со цел да се добие најкратката патека. Резултатите од NEOS Server Solver-от не се прикажани во табелата но треба да се знае дека NEOS користи цели броеви при пресметување на растојаниата помеѓу точките, поради што и крајниот резултат (должината на патеката) е цел број. Во овој поглед можи да се речи дека резултатите кои се добиени со NEOS се со помала прецизност. Табела 5 Резултати од тестирањето на проблемот на патувачкиот продавач за 50 групи со 7 градови. ГРАДОВИ A B C D E F G Редослед на посетување на градовите од најкратката патека Должина на најкратката патека A F B C G D E A 219, C E D G B A F C 278, C B E D A G F C 305, C D G E A F B C 229, D F G B E A C D 271, B A G C F D E B 222, D E B G A C F D 261, F C E B D G A F 238, C A B G E F D C 253, E D F G A C B E 259, B G F A C D E B 268, F B G D A C E F 283, G A D F B E C G 261, C F E G D A B C 110

111 , C D F E B A G C 263, B A G F D C E B 281, E G B C D A F E 177, G C F A D E B G 283, D B A G E F C D 195, B D E F A C G B 295, C D G F B A E C 295, G F A E B C D G 273, E G A F C D B E 274, A C D E F G B A 286, F D E B C G A F 302, A F D E G C B A 255, F E C D G B A F 275, B A E F D C G B 302, E D B F C A G E 277, F E D G A C B F 248, D C F G A E B D 226, A D F G B C E A 226, G D C F E A B G 295, D A B F G C E D 286, A B D E G F C A 264, A B C F G E D A 111

112 , E C G F D B A E 250, E B D G A F C E 250, D C B G E F A D 286, D E G C F A B D 275, E A F D C B G E 254, F G C E D A B F 265, C E G F B D A C 255, D B G C A F E D 272, E A B G C F D E 271, E F B A G D C E 266, B C A D G E F B 276, D F G B E C A D 270, G B A D E F C G 273, G A C B E D F G 236, Поради тоа што во примерот со патувачкиот продавач нема да се мери времето кое е потребно да се дојди до прифатливо решение, бидејќи прифатливо решение е најдоброто решение после одреден број на генерации, нема да се прави споредба помеѓу резултатите кои се добиваат на двете хардверски платформи (Arduino UNO и Texas Instruments Tiva C-Series TM4C1294XL). Резултатите кои се добиваат за невронските мрежи, поточно за примерите кои се имплементирани од областа на невронските мрежи, нема да служат за да споредиме како вредноста на одредени променливи ќе влијае врз времето кое е потребно за да се добие прифатлив резултат, туку ќе направиме споредба на времињата потребни за да се добијаат тежини за конекциите помеѓу невроните од соседни слоеви со цел да се добие 112

113 целосно тренирана мрежа која понатаму ќе служи за пресметка на резултат за нови влезни податоци. Во табела 6 е даден резултатот од тестирањата направени при тренирање на невронска мрежа со која може да се извршуваат следните шест Булови логички операции: И, ИЛИ, ЕКСКЛУЗИВНО_ИЛИ, НИ, НИЛИ и ЕКСКЛУЗИВНО_НИЛИ. Со цел да се добија просечна вредност за циклусот и времето за секоја од Буловите операции, алгоритмот беше извршен по 50 пати. Табела 6 Просечни резултати од тестирањата на првото софтверско решение за невронски мрежи. За секоја од Буловите операции кодот беше извршен по 50 пати. Слоеви Влезен Скријан Излезен Тренинг податоци Решение (просек) Arduino UNO Решение (просек) TI TM4C1294XL Циклус Време (ms) Циклус Време (ms) AND NAND OR NOR XOR XNOR Сите тестови беа направени на Arduino UNO и на Texas Instruments Tiva C-Series TM4C1294XL и резултатите од тестирањата на двете хардверски платформи се изнесени во табела 6. Како што беше очекувано времето кое е потребно да се дојди до решение е пократко кога се користи TI TM4C1294XL поради подобриот процесор. Просечно кога се користи TI TM4C1294XL до решение, за било која од Буловите логички операции, се стасува 5 до 6 пати побрзо во споредба со времето потребно да се дојди до решение кога се користи Arduino UNO. Изненадува тоа што и овде, како и во првиот пример за генетски алгоритми (табела 3) во просек беа потребни повеќе генерации за да се дојди до решение за сите Булови операции во споредба со Arduino UNO. За тестирање на имплементираното решение за SVM беа употребени 10 тест примери (точки со x и y координати). Тренирањето беше направено на 6 тренинг примери од кои 3 во класа 1 и 3 во класа -1. Во табела 7 се дадени шесте тренинг точки со нивните x и y координати како и класата на која и припаѓаат, а во табела 8 се дадени тест податоците со нивните x и y 113

114 координати како и класата на која истите треба да и припаѓаат и класата на која истите се доделени после тренингот. Табела 7 Тренинг точки за тренирање на софтверското решение за машини со носечки вектори. Со плаво се означени точките кои и припаѓаат на класа -1, а со црвено точките кои и припаѓаат на класа 1. Координати Класа X Y A 2,00 6,00-1 B 3,00 7,00-1 C 2,00 7,00-1 D 4,00 2,00 1 E 3,00 0,00 1 F 1,00 2,00 1 Табела 8 Тест точки за проверка на точноста на алгоритмот за имплементираното софтверско решение за машините со носечки вектори, кој е трениран со податоците од табела 7. Сите тест точки се правилно класифицирани. Координати Класа X Y Очекувана Добиена 1 0,00 10, ,03 6, ,98 0, ,99 4, ,54 0, ,83 10, ,00-5, ,11 11, ,00-1, ,00 12, На слика 14.1 графички се прикажани тренинг точките (полни кругови) и тест точките (ѕвезди) кои се користени за тестирање на функционалноста и исправноста на кодот за SVM. Со плаво се обоени податоците кои и припаѓаат на класа -1, а со црвено на класа 1. Со жолта испрекината линија е означена хиперрамнината, а со црни полни линии се означени маргините. 114

115 Слика 14.1 Класифицирање на податоците од табела 7 и 8. Тестирањето на имплементираното решение за fuzzy логиката се направи така што беа креирани две влезни и една излезна променлива. За секоја од променливите беше креирано соодветно множество од лингвистички вредности кои можи да ги има секоја од влезните односно излезната промелнива соодветно. Биејќи секоја од лингвистичките вредности е функција на членство, за секоја од нив беа поставени вредностите на темињата на триаголникот односно трапезот со кој е претставена функцијата на членство. Безразлика дали се користи трапез или триаголник, се поставуваат вредностите на четирите темиња на трапезот, со таа разлика што доколку сакаме да користиме триаголник наместо трепез, бидејќи триаголникот има три темиња второто и третото теме на трапезот треба да добијат иста вредност со цел трапезот да се конвертира во триаголник. Беа креирани IF-THEN правила и со поставување на вредностите на влезните променливи започнува извршување на алгоритмот. Бидејќи целта не е да се тестира времето кое е потребно да се изврши алгоритмот туку неговата прецизност, истиот модел на fuzzy логика со исти влезни и излезни променливи, лингвистичките вредности со соодветниот облик на функциите на членство, како и правилата, беше рекреиран во MATLAB и беше направена споредба на резултатаите кои се добиваат со имплементираниот алгоритам и резултатите кои се добиваат со MATLAB за истите влезни вредности. Со цел тестирање на точноста на алгоритмот беа креирани сто парови од случајно генерирани децимални броеви кои се користеа како вредности за двете влезни променливи. Истите вредности беа искористени и во MATLAB со цел да се спореди резултатот кој се добива од имплементираниот алгоритам со оној во MATLAB како би 115

М-р Јасмина Буневска ОСНОВИ НА ПАТНОТО ИНЖЕНЕРСТВО

М-р Јасмина Буневска ОСНОВИ НА ПАТНОТО ИНЖЕНЕРСТВО УНИВЕРЗИТЕТ СВ. КЛИМЕНТ ОХРИДСКИ - БИТОЛА ТЕХНИЧКИ ФАКУЛТЕТ - БИТОЛА - Отсек за сообраќај и транспорт - ДОДИПЛОМСКИ СТУДИИ - ECTS М-р Јасмина Буневска ОСНОВИ НА ПАТНОТО ИНЖЕНЕРСТВО ПРИЛОГ ЗАДАЧИ ОД ОПРЕДЕЛУВАЊЕ

Διαβάστε περισσότερα

ВЕРОЈАТНОСТ И СТАТИСТИКА ВО СООБРАЌАЈОТ 3. СЛУЧАЈНИ ПРОМЕНЛИВИ

ВЕРОЈАТНОСТ И СТАТИСТИКА ВО СООБРАЌАЈОТ 3. СЛУЧАЈНИ ПРОМЕНЛИВИ Предавање. СЛУЧАЈНИ ПРОМЕНЛИВИ. Еднодимензионална случајна променлива При изведување на експеримент, случајниот настан може да има многу различни реализации. Ако ги знаеме можните реализации и ако ја знаеме

Διαβάστε περισσότερα

ЗАДАЧИ ЗА УВЕЖБУВАЊЕ НА ТЕМАТА ГЕОМЕТРИСКИ ТЕЛА 8 ОДД.

ЗАДАЧИ ЗА УВЕЖБУВАЊЕ НА ТЕМАТА ГЕОМЕТРИСКИ ТЕЛА 8 ОДД. ЗАДАЧИ ЗА УВЕЖБУВАЊЕ НА ТЕМАТА ГЕОМЕТРИСКИ ТЕЛА 8 ОДД. ВО ПРЕЗЕНТАЦИЈАТА ЌЕ ПРОСЛЕДИТЕ ЗАДАЧИ ЗА ПРЕСМЕТУВАЊЕ ПЛОШТИНА И ВОЛУМЕН НА ГЕОМЕТРИСКИТЕ ТЕЛА КОИ ГИ ИЗУЧУВАМЕ ВО ОСНОВНОТО ОБРАЗОВАНИЕ. СИТЕ ЗАДАЧИ

Διαβάστε περισσότερα

НАПРЕГАЊЕ ПРИ ЧИСТО СМОЛКНУВАЊЕ

НАПРЕГАЊЕ ПРИ ЧИСТО СМОЛКНУВАЊЕ Факултет: Градежен Предмет: ЈАКОСТ НА МАТЕРИЈАЛИТЕ НАПРЕГАЊЕ ПРИ ЧИСТО СМОЛКНУВАЊЕ Напрегање на смолкнување е интензитет на сила на единица површина, што дејствува тангенцијално на d. Со други зборови,

Διαβάστε περισσότερα

Предизвици во моделирање

Предизвици во моделирање Предизвици во моделирање МОРА да постои компатибилност на јазлите од мрежата на КЕ на спојот на две површини Предизвици во моделирање Предизвици во моделирање Предизвици во моделирање Предизвици во моделирање

Διαβάστε περισσότερα

σ d γ σ M γ L = ЈАКОСТ 1 x A 4М21ОМ02 АКСИЈАЛНИ НАПРЕГАЊА (дел 2) 2.6. СОПСТВЕНА ТЕЖИНА КАКО АКСИЈАЛНА СИЛА Напонска состојаба

σ d γ σ M γ L = ЈАКОСТ 1 x A 4М21ОМ02 АКСИЈАЛНИ НАПРЕГАЊА (дел 2) 2.6. СОПСТВЕНА ТЕЖИНА КАКО АКСИЈАЛНА СИЛА Напонска состојаба 4МОМ0 ЈАКОСТ АКСИЈАЛНИ НАПРЕГАЊА (дел ) наставник:.6. СОПСТВЕНА ТЕЖИНА КАКО АКСИЈАЛНА СИЛА Напонска состојаба γ 0 ( специфична тежина) 0 ak() G γ G ΣX0 ak() G γ ak ( ) γ Аксијалната сила и напонот, по

Διαβάστε περισσότερα

СТАНДАРДНИ НИСКОНАПОНСКИ СИСТЕМИ

СТАНДАРДНИ НИСКОНАПОНСКИ СИСТЕМИ НН трифазни мрежи се изведуваат со три или четири спроводника мрежите со четири спроводника можат да преминат во мрежи со пет спроводника, но со оглед што тоа во пракса се прави во објектите (кај потрошувачите),

Διαβάστε περισσότερα

Регулација на фреквенција и активни моќности во ЕЕС

Регулација на фреквенција и активни моќности во ЕЕС 8 Регулација на фреквенција и активни моќности во ЕЕС 8.1. Паралелна работа на синхроните генератори Современите електроенергетски системи го напојуваат голем број на синхрони генератори кои работат паралелно.

Διαβάστε περισσότερα

Примена на Matlab за оптимизација на режимите на работа на ЕЕС

Примена на Matlab за оптимизација на режимите на работа на ЕЕС 6. СОВЕТУВАЊЕ Охрид, 4-6 октомври 2009 Мирко Тодоровски Ристо Ачковски Јовица Вулетиќ Факултет за електротехника и информациски технологии, Скопје Примена на Matlab за оптимизација на режимите на работа

Διαβάστε περισσότερα

СОДРЖИНА 1. ОСНОВНИ ПОИМИ ОД ПОДАТОЧНОТО РУДАРЕЊЕ УЧЕЊЕ НА ПРЕДИКТИВНИ МОДЕЛИ...9

СОДРЖИНА 1. ОСНОВНИ ПОИМИ ОД ПОДАТОЧНОТО РУДАРЕЊЕ УЧЕЊЕ НА ПРЕДИКТИВНИ МОДЕЛИ...9 СОДРЖИНА ВОВЕД...3 1. ОСНОВНИ ПОИМИ ОД ПОДАТОЧНОТО РУДАРЕЊЕ...4 1.1 ВОВЕД...4 1.2 ОСНОВНИ ЗАДАЧИ ВО ПОДАТОЧНОТО РУДАРЕЊЕ...6 2. УЧЕЊЕ НА ПРЕДИКТИВНИ МОДЕЛИ...9 2.1 ВОВЕД...9 2.2 УЧЕЊЕ НА ВЕРОЈАТНОСНИ МОДЕЛИ...10

Διαβάστε περισσότερα

ИСПИТ ПО ПРЕДМЕТОТ ВИСОКОНАПОНСКИ МРЕЖИ И СИСТЕМИ (III година)

ИСПИТ ПО ПРЕДМЕТОТ ВИСОКОНАПОНСКИ МРЕЖИ И СИСТЕМИ (III година) Septemvri 7 g ИСПИТ ПО ПРЕДМЕТОТ ВИСОКОНАПОНСКИ МРЕЖИ И СИСТЕМИ (III година) Задача 1. На сликата е прикажан 4 kv преносен вод со должина L = 18 km кој поврзува ЕЕС со бесконечна моќност и една електрична

Διαβάστε περισσότερα

ЈАКОСТ НА МАТЕРИЈАЛИТЕ

ЈАКОСТ НА МАТЕРИЈАЛИТЕ диј е ИКА ски ч. 7 ч. Универзитет Св. Кирил и Методиј Универзитет Машински Св. факултет Кирил и Скопје Методиј во Скопје Машински факултет МОМ ТЕХНИЧКА МЕХАНИКА професор: доц. др Виктор Гаврилоски. ТОРЗИЈА

Διαβάστε περισσότερα

37. РЕПУБЛИЧКИ НАТПРЕВАР ПО ФИЗИКА 2013 основни училишта 18 мај VII одделение (решенија на задачите)

37. РЕПУБЛИЧКИ НАТПРЕВАР ПО ФИЗИКА 2013 основни училишта 18 мај VII одделение (решенија на задачите) 37. РЕПУБЛИЧКИ НАТПРЕВАР ПО ФИЗИКА 03 основни училишта 8 мај 03 VII одделение (решенија на задачите) Задача. Во еден пакет хартија која вообичаено се користи за печатење, фотокопирање и сл. има N = 500

Διαβάστε περισσότερα

46. РЕГИОНАЛЕН НАТПРЕВАР ПО ФИЗИКА април III година. (решенија на задачите)

46. РЕГИОНАЛЕН НАТПРЕВАР ПО ФИЗИКА април III година. (решенија на задачите) 46. РЕГИОНАЛЕН НАТПРЕВАР ПО ФИЗИКА 3 април 3 III година (решенија на задачите) Задача. Хеликоптер спасува планинар во опасност, спуштајќи јаже со должина 5, и маса 8, kg до планинарот. Планинарот испраќа

Διαβάστε περισσότερα

ТАРИФЕН СИСТЕМ ЗА ДИСТРИБУЦИЈА

ТАРИФЕН СИСТЕМ ЗА ДИСТРИБУЦИЈА ТАРИФЕН СИСТЕМ ЗА ДИСТРИБУЦИЈА Тарифен систем за ДС на ЕВН Македонија 2014 година (rke.org.mk) Надоместок за користење на дистрибутивниот систем плаќаат сите потрошувачи, корисници на дистрибутивниот сите

Διαβάστε περισσότερα

46. РЕГИОНАЛЕН НАТПРЕВАР ПО ФИЗИКА април II година (решенија на задачите)

46. РЕГИОНАЛЕН НАТПРЕВАР ПО ФИЗИКА април II година (решенија на задачите) 46 РЕГИОНАЛЕН НАТПРЕВАР ПО ФИЗИКА 03 0 април 03 година (решенија на задачите Задача Tочкаст полнеж е поставен во темето на правиот агол на правоаголен триаголник како што е прикажано на слика Јачината

Διαβάστε περισσότερα

Од точката С повлечени се тангенти кон кружницата. Одреди ја големината на AOB=?

Од точката С повлечени се тангенти кон кружницата. Одреди ја големината на AOB=? Задачи за вежби тест плоштина на многуаголник 8 одд На што е еднаков збирот на внатрешните агли кај n-аголник? 1. Одреди ја плоштината на паралелограмот, според податоците дадени на цртежот 2. 3. 4. P=?

Διαβάστε περισσότερα

НУМЕРИЧКО МОДЕЛИРАЊЕ НА ГАЛАКСИИ

НУМЕРИЧКО МОДЕЛИРАЊЕ НА ГАЛАКСИИ Школа млади физичари 39, (2014) p. 1-12 НУМЕРИЧКО МОДЕЛИРАЊЕ НА ГАЛАКСИИ Наце Стојанов 1. ВОВЕД Kомпјутерските симулации, гледано воопштено, се прават заради разбирањете на својствата на објектите или

Διαβάστε περισσότερα

Етички став спрема болно дете од анемија Г.Панова,Г.Шуманов,С.Јовевска,С.Газепов,Б.Панова Факултет за Медицински науки,,универзитет Гоце Делчев Штип

Етички став спрема болно дете од анемија Г.Панова,Г.Шуманов,С.Јовевска,С.Газепов,Б.Панова Факултет за Медицински науки,,универзитет Гоце Делчев Штип Етички став спрема болно дете од анемија Г.Панова,Г.Шуманов,С.Јовевска,С.Газепов,Б.Панова Факултет за Медицински науки,,универзитет Гоце Делчев Штип Апстракт Вовед:Болести на крвта можат да настанат кога

Διαβάστε περισσότερα

3. ПРЕСМЕТКА НА КРОВ НА КУЌА СО ТРИГОНОМЕТРИЈА

3. ПРЕСМЕТКА НА КРОВ НА КУЌА СО ТРИГОНОМЕТРИЈА 3. ПРЕСМЕТКА НА КРОВ НА КУЌА СО ТРИГОНОМЕТРИЈА Цел: Учениците/студентите да се запознаат со равенки за пресметка на: агли, периметар, плоштина, волумен на триаголна призма, како од теоретски аспект, така

Διαβάστε περισσότερα

ШЕМИ ЗА РАСПОРЕДУВАЊЕ НА ПРОСТИТЕ БРОЕВИ

ШЕМИ ЗА РАСПОРЕДУВАЊЕ НА ПРОСТИТЕ БРОЕВИ МАТЕМАТИЧКИ ОМНИБУС, (07), 9 9 ШЕМИ ЗА РАСПОРЕДУВАЊЕ НА ПРОСТИТЕ БРОЕВИ Весна Целакоска-Јорданова Секој природен број поголем од што е делив самo со и сам со себе се вика прост број. Запишани во низа,

Διαβάστε περισσότερα

I. Теорија на грешки

I. Теорија на грешки I. Теорија на грешки I.. Вовед. Еден отпорник со назначена вредност од 000 Ω, измерен е со многу точна постапка и добиена е вредност од 000,9Ω. Да се одреди номиналната вредност на, конвенционално точната

Διαβάστε περισσότερα

а) Определување кружна фреквенција на слободни пригушени осцилации ωd ωn = ω б) Определување периода на слободни пригушени осцилации

а) Определување кружна фреквенција на слободни пригушени осцилации ωd ωn = ω б) Определување периода на слободни пригушени осцилации Динамика и стабилност на конструкции Задача 5.7 За дадената армирано бетонска конструкција од задачата 5. и пресметаните динамички карактеристики: кружна фреквенција и периода на слободните непригушени

Διαβάστε περισσότερα

Универзитет Св. Кирил и Методиј -Скопје Факултет за електротехника и информациски технологии ДИНАМИЧКА ВИЗУЕЛИЗАЦИЈА НА СОФТВЕР. -магистерски труд-

Универзитет Св. Кирил и Методиј -Скопје Факултет за електротехника и информациски технологии ДИНАМИЧКА ВИЗУЕЛИЗАЦИЈА НА СОФТВЕР. -магистерски труд- Универзитет Св. Кирил и Методиј -Скопје Факултет за електротехника и информациски технологии ДИНАМИЧКА ВИЗУЕЛИЗАЦИЈА НА СОФТВЕР -магистерски труд- Ментор Проф. Д-р Сузана Лошковска Кандидат Александра

Διαβάστε περισσότερα

45 РЕГИОНАЛЕН НАТПРЕВАР ПО ФИЗИКА 2012 II година (решенија на задачите)

45 РЕГИОНАЛЕН НАТПРЕВАР ПО ФИЗИКА 2012 II година (решенија на задачите) 45 РЕГИОНАЛЕН НАТПРЕВАР ПО ФИЗИКА 1 II година (решенија на задачите) 1 Координатите на два точкасти полнежи q 1 = + 3 µ C и q = 4µ C, поставени во xy рамнината се: x 1 = 3, 5cm; y 1 =, 5cm и x = cm; y

Διαβάστε περισσότερα

( ) ( ) ( ) ( ) ( ) ( )

( ) ( ) ( ) ( ) ( ) ( ) Мерни мостови и компензатори V. Мерни мостови и компензатори V.. Мерни мостови. Колкава е вредноста на отпорот измерен со Томпсоновиот мост ако се: Ω,, Ω 6 и Ω. Колкава процентуална грешка ќе се направи

Διαβάστε περισσότερα

Проф. д-р Ѓорѓи Тромбев ГРАДЕЖНА ФИЗИКА. Влажен воздух 3/22/2014

Проф. д-р Ѓорѓи Тромбев ГРАДЕЖНА ФИЗИКА. Влажен воздух 3/22/2014 Проф. д-р Ѓорѓи Тромбев ГРАДЕЖНА ФИЗИКА Влажен воздух 1 1 Влажен воздух Влажен воздух смеша од сув воздух и водена пареа Водената пареа во влажниот воздух е претежно во прегреана состојба идеален гас.

Διαβάστε περισσότερα

Методина гранични елементи за инженери

Методина гранични елементи за инженери Методина гранични елементи за инженери доц. д-р Тодорка Самарџиоска Градежен факултет УКИМ -Скопје Типовина формулации со гранични елементи директна формулација: Интегралната равенка е формулирана во врска

Διαβάστε περισσότερα

Анализа на триаголници: Упатство за наставникот

Анализа на триаголници: Упатство за наставникот Анализа на триаголници: Упатство за наставникот Цел:. Што мислиш? Колку многу триаголници со основа a=4см и висина h=3см можеш да нацрташ? Линк да Видиш и Направиш Mathcast за Што мислиш? Нацртај точка

Διαβάστε περισσότερα

ИНТЕРПРЕТАЦИЈА на NMR спектри. Асс. д-р Јасмина Петреска Станоева

ИНТЕРПРЕТАЦИЈА на NMR спектри. Асс. д-р Јасмина Петреска Станоева ИНТЕРПРЕТАЦИЈА на NMR спектри Асс. д-р Јасмина Петреска Станоева Нуклеарно магнетна резонанца Нуклеарно магнетна резонанца техника на молекулска спектроскопија дава информација за бројот и видот на атомите

Διαβάστε περισσότερα

Проф. д-р Ѓорѓи Тромбев ГРАДЕЖНА ФИЗИКА

Проф. д-р Ѓорѓи Тромбев ГРАДЕЖНА ФИЗИКА Проф. д-р Ѓорѓи Тромбев ГРАДЕЖНА ФИЗИКА Преглед - МКС EN ISO 14683:2007 Топлински мостови во градежништво Линеарни коефициенти на премин на топлина Упростен метод и утврдени вредности Thermal bridges in

Διαβάστε περισσότερα

2. КАРАКТЕРИСТИКИ НА МЕРНИТЕ УРЕДИ

2. КАРАКТЕРИСТИКИ НА МЕРНИТЕ УРЕДИ . КАРАКТЕРИСТИКИ НА МЕРНИТЕ УРЕДИ Современата мерна техника располага со големо количество разнородни мерни уреди. Одделните видови мерни уреди имаат различни специфични својства, но и некои заеднички

Διαβάστε περισσότερα

МОДЕЛИРАЊЕ СО СТРУКТУРНИ РАВЕНКИ И ПРИМЕНА

МОДЕЛИРАЊЕ СО СТРУКТУРНИ РАВЕНКИ И ПРИМЕНА УНИВЕРЗИТЕТ ГОЦЕ ДЕЛЧЕВ ШТИП ФАКУЛТЕТ ЗА ИНФОРМАТИКА ПРИМЕНЕТА МАТЕМАТИКА Штип ВАСИЛКА ВИТАНОВА МОДЕЛИРАЊЕ СО СТРУКТУРНИ РАВЕНКИ И ПРИМЕНА МАГИСТЕРСКИ ТРУД Штип, 14 UNIVERSITY "GOCE DELCEV" - STIP FACULTY

Διαβάστε περισσότερα

м-р Дејан Д. Ѓорѓевиќ КОМБИНИРАЊЕ НА КЛАСИФИКАТОРИ ЗА ПРЕПОЗНАВАЊЕ НА БРОЕВИ НАПИШАНИ СО РАКА

м-р Дејан Д. Ѓорѓевиќ КОМБИНИРАЊЕ НА КЛАСИФИКАТОРИ ЗА ПРЕПОЗНАВАЊЕ НА БРОЕВИ НАПИШАНИ СО РАКА УНИВЕРЗИТЕТ Св. КИРИЛ И МЕТОДИЈ - СКОПЈЕ ЕЛЕКТРОТЕХНИЧКИ ФАКУЛТЕТ м-р Дејан Д. Ѓорѓевиќ КОМБИНИРАЊЕ НА КЛАСИФИКАТОРИ ЗА ПРЕПОЗНАВАЊЕ НА БРОЕВИ НАПИШАНИ СО РАКА - докторска дисертација - Скопје, 2004 година

Διαβάστε περισσότερα

Доц. д-р Наташа Ристовска

Доц. д-р Наташа Ристовска Доц. д-р Наташа Ристовска Класификација според структура на скелет Алифатични Циклични Ароматични Бензеноидни Хетероциклични (Повторете ги хетероцикличните соединенија на азот, петчлени и шестчлени прстени,

Διαβάστε περισσότερα

ФРАКТАЛИ: ДЕФИНИЦИЈА, КОНСТРУКЦИЈА, СВОЈСТВА И ПРИМЕНА. Елена Хаџиева 1 Јован Петкоски 2 1. ВОВЕД

ФРАКТАЛИ: ДЕФИНИЦИЈА, КОНСТРУКЦИЈА, СВОЈСТВА И ПРИМЕНА. Елена Хаџиева 1 Јован Петкоски 2 1. ВОВЕД МАТЕМАТИЧКИ ОМНИБУС, 3 (2018), 21 41 http://im-pmf.weebly.com/matematicki-omnibus-kniga-3.html ФРАКТАЛИ: ДЕФИНИЦИЈА, КОНСТРУКЦИЈА, СВОЈСТВА И ПРИМЕНА Елена Хаџиева 1 Јован Петкоски 2 1. ВОВЕД Една од воведните

Διαβάστε περισσότερα

МЕТОДИ ЗА ДИГИТАЛНО ДИРЕКТНО ФАЗНО УПРАВУВАЊЕ НА СЕРИСКИ РЕЗОНАНТНИ ЕНЕРГЕТСКИ КОНВЕРТОРИ

МЕТОДИ ЗА ДИГИТАЛНО ДИРЕКТНО ФАЗНО УПРАВУВАЊЕ НА СЕРИСКИ РЕЗОНАНТНИ ЕНЕРГЕТСКИ КОНВЕРТОРИ 8. СОВЕТУВАЊЕ Охрид, 22 24 септември Љупчо Караџинов Факултет за електротехника и информациски технологии, Универзитет Светите Кирил и Методиј Скопје Гоце Стефанов Факултет за електротехника Радовиш,Универзитет

Διαβάστε περισσότερα

НЕКОИ АЛГОРИТМИ ЗА РЕШАВАЊЕ НА ЗАДАЧАТА НА ПАТУВАЧКИОТ ТРГОВЕЦ

НЕКОИ АЛГОРИТМИ ЗА РЕШАВАЊЕ НА ЗАДАЧАТА НА ПАТУВАЧКИОТ ТРГОВЕЦ МАТЕМАТИЧКИ ОМНИБУС, 1 (2017), 101 113 НЕКОИ АЛГОРИТМИ ЗА РЕШАВАЊЕ НА ЗАДАЧАТА НА ПАТУВАЧКИОТ ТРГОВЕЦ Ирена Стојковска 1 Задачата на патувачкиот трговец е комбинаторна оптимизациона задача со едноставна

Διαβάστε περισσότερα

Грешки при хемиските анализи Случајни грешки Статистичка анализа

Грешки при хемиските анализи Случајни грешки Статистичка анализа Инструментални аналитички методи А-ниво 4+1+4 (вторник и среда 8-10, среда 10-11, понед. 9-15, четв. 1-15) Марина Стефова, кабинет 31, лаб. 310, mariaiv@pmf.ukim.mk Литература: Д.А. Ског, Д.М. Вест, Ф.Џ.

Διαβάστε περισσότερα

6. СОВЕТУВАЊЕ. Охрид, 4-6 октомври 2009

6. СОВЕТУВАЊЕ. Охрид, 4-6 октомври 2009 6. СОВЕТУВАЊЕ Охрид, 4-6 октомври 009 м-р Методија Атанасовски Технички Факултет, Битола д-р Рубин Талески Факултет за Електротехника и Информациски Технологии, Скопје ИСТРАЖУВАЊЕ НА ЕФИКАСНОСТА НА МАРГИНАЛНИТЕ

Διαβάστε περισσότερα

ПЕТТО СОВЕТУВАЊЕ. Охрид, 7 9 октомври ДМС Софтвер "WINDOWS" за дистибутивните системи

ПЕТТО СОВЕТУВАЊЕ. Охрид, 7 9 октомври ДМС Софтвер WINDOWS за дистибутивните системи ПЕТТО СОВЕТУВАЊЕ Охрид, 7 9 октомври 2007 Оливер Мирчевски, дипл.ел.инж Влатко Манев дипл.ел.инж Неоком А.Д., Скопје М-р Бранислав Брбаклиќ, дипл. инг. ДМС Група, Нови Сад Вон.Проф. Д-р Весна Борозан Факултет

Διαβάστε περισσότερα

1. Вовед во енвиронментална информатика

1. Вовед во енвиронментална информатика 1. Вовед во енвиронментална информатика Енвиронменталната информатика е дел од применетата информатика и поддржува методи и процедури на информатичката техологија кои придонесуваат во анализата на податоци

Διαβάστε περισσότερα

Социјалните мрежи како алатка во процесот на управување со знаење

Социјалните мрежи како алатка во процесот на управување со знаење Универзитет Св. Климент Охридски Битола ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ И КОМУНИКАЦИСКИ ТЕХНОЛОГИИ БИТОЛА студиска програма по Инженерство и менаџмент на софтверски апликации Социјалните мрежи како алатка во

Διαβάστε περισσότερα

Душан Чакмаков. Веројатност

Душан Чакмаков. Веројатност Душан Чакмаков Веројатност Интерна скрипта, Машински факултет Скопје, 04 ii Содржина. Вовед.... Случајни настани и веројатност... 5.. Простор на случајни настани... 5.. Аксиоми на веројатност... 9.3. Класичен

Διαβάστε περισσότερα

ИСПИТУВАЊЕ НА СТРУЈНО-НАПОНСКИТЕ КАРАКТЕРИСТИКИ НА ФОТОВОЛТАИЧЕН ГЕНЕРАТОР ПРИ ФУНКЦИОНИРАЊЕ ВО РЕАЛНИ УСЛОВИ

ИСПИТУВАЊЕ НА СТРУЈНО-НАПОНСКИТЕ КАРАКТЕРИСТИКИ НА ФОТОВОЛТАИЧЕН ГЕНЕРАТОР ПРИ ФУНКЦИОНИРАЊЕ ВО РЕАЛНИ УСЛОВИ . СОВЕТУВАЊЕ Охрид, - октомври 29 Димитар Димитров Факултет за електротехника и информациски технологии, Универзитет Св. Кирил и Методиј Скопје ИСПИТУВАЊЕ НА СТРУЈНО-НАПОНСКИТЕ КАРАКТЕРИСТИКИ НА ФОТОВОЛТАИЧЕН

Διαβάστε περισσότερα

ЗАШТЕДА НА ЕНЕРГИЈА СО ВЕНТИЛАТОРИТЕ ВО ЦЕНТРАЛНИОТ СИСТЕМ ЗА ЗАТОПЛУВАЊЕ ТОПЛИФИКАЦИЈА-ИСТОК - СКОПЈЕ

ЗАШТЕДА НА ЕНЕРГИЈА СО ВЕНТИЛАТОРИТЕ ВО ЦЕНТРАЛНИОТ СИСТЕМ ЗА ЗАТОПЛУВАЊЕ ТОПЛИФИКАЦИЈА-ИСТОК - СКОПЈЕ 6. СОВЕТУВАЊЕ Охрид, 4-6 октомври 2009 Иле Георгиев Македонски Телеком а.д. Скопје ЗАШТЕДА НА ЕНЕРГИЈА СО ВЕНТИЛАТОРИТЕ ВО ЦЕНТРАЛНИОТ СИСТЕМ ЗА ЗАТОПЛУВАЊЕ ТОПЛИФИКАЦИЈА-ИСТОК - СКОПЈЕ КУСА СОДРЖИНА Во

Διαβάστε περισσότερα

SFRA ТЕСТ ЗА МЕХАНИЧКА ПРОЦЕНКА НА АКТИВНИОТ ДЕЛ КАЈ ЕНЕРГЕТСКИ ТРАНСФОРМАТОРИ

SFRA ТЕСТ ЗА МЕХАНИЧКА ПРОЦЕНКА НА АКТИВНИОТ ДЕЛ КАЈ ЕНЕРГЕТСКИ ТРАНСФОРМАТОРИ 6. СОВЕТУВАЊЕ Охрид, 4-6 октомври 2009 Жан Кипаризоски Howard Industries, Laurel, MS, USA SFRA ТЕСТ ЗА МЕХАНИЧКА ПРОЦЕНКА НА АКТИВНИОТ ДЕЛ КАЈ ЕНЕРГЕТСКИ ТРАНСФОРМАТОРИ КУСА СОДРЖИНА SFRA (sweep frequency

Διαβάστε περισσότερα

ЛАМБЕРТОВА ФУНКЦИЈА ГРАФИК, ПРЕСМЕТКИ И ПРИМЕНА. Емилија Целакоска 1 1. ВОВЕД

ЛАМБЕРТОВА ФУНКЦИЈА ГРАФИК, ПРЕСМЕТКИ И ПРИМЕНА. Емилија Целакоска 1 1. ВОВЕД МАТЕМАТИЧКИ ОМНИБУС, 1 (2017), 33 43 ЛАМБЕРТОВА ФУНКЦИЈА ГРАФИК, ПРЕСМЕТКИ И ПРИМЕНА Емилија Целакоска 1 1. ВОВЕД Математичарите поретко слушнале за Јохан Хајнрих Ламберт (1728 1777) бидејќи неговиот придонес

Διαβάστε περισσότερα

ПРЕОДНИ ПРОЦЕСИ ПРИ ВКЛУЧУВАЊЕ НА КОНДЕНЗАТОРСКИТЕ БАТЕРИИ КАЈ ЕЛЕКТРОЛАЧНАТА ПЕЧКА

ПРЕОДНИ ПРОЦЕСИ ПРИ ВКЛУЧУВАЊЕ НА КОНДЕНЗАТОРСКИТЕ БАТЕРИИ КАЈ ЕЛЕКТРОЛАЧНАТА ПЕЧКА 8. СОВЕТУВАЊЕ Охрид, 4 септември Бранко Наџински Илија Хаџидаовски Макстил АД ПРЕОДНИ ПРОЦЕСИ ПРИ ВКЛУЧУВАЊЕ НА КОНДЕНЗАТОРСКИТЕ БАТЕРИИ КАЈ ЕЛЕКТРОЛАЧНАТА ПЕЧКА КУСА СОДРЖИНА Во овој труд е разгледан

Διαβάστε περισσότερα

Генерирање на Концепти

Генерирање на Концепти Час #7 (Дел 1) Генерирање на Концепти Recommended study materials in addition to these lecture notes: Text : The Mechanical Design Process 4 th edition by David G. Ullman Chapter 7, Pages: 171-211 Prof.

Διαβάστε περισσότερα

ИНСТРУМЕНТАЛНИ МЕТОДИ ЗА АНАЛИЗА

ИНСТРУМЕНТАЛНИ МЕТОДИ ЗА АНАЛИЗА ИНСТРУМЕНТАЛНИ МЕТОДИ ЗА АНАЛИЗА интерна скрипта за студентите од УГД Штип Рубин Гулабоски Виолета Иванова Петропулос Универзитет Гоце Делчев-Штип, Штип, 2014 година 1 Вовед Инструменталните методи за

Διαβάστε περισσότερα

ПРИМЕНА НА FACTS УРЕДИ ЗА РЕДНА И НАПРЕЧНА КОМПЕНЗАЦИЈА НА РЕАКТИВНА МОЌНОСТ ВО ЕЛЕКТРОЕНЕРГЕТСКИ МРЕЖИ

ПРИМЕНА НА FACTS УРЕДИ ЗА РЕДНА И НАПРЕЧНА КОМПЕНЗАЦИЈА НА РЕАКТИВНА МОЌНОСТ ВО ЕЛЕКТРОЕНЕРГЕТСКИ МРЕЖИ 8. СОВЕТУВАЊЕ Охрид, 22 24 септември Јовица Вулетиќ Јорданчо Ангелов Мирко Тодоровски Факултет за електротехника и информациски технологии Скопје ПРИМЕНА НА FACTS УРЕДИ ЗА РЕДНА И НАПРЕЧНА КОМПЕНЗАЦИЈА

Διαβάστε περισσότερα

ТФБ. 6. Energy Micro Б е д р и З и ј а. Страна2

ТФБ. 6. Energy Micro Б е д р и З и ј а. Страна2 Универзитет,, Св. Климент Охридски Битола Технички факултет Битола - Отсек за информатика и компјутерска техника -II циклус- Профилирање на оптимална потрошувачка на енергијата на сензорски јазол за имплементација

Διαβάστε περισσότερα

ТРЕТО СОВЕТУВАЊЕ Охрид 3 6 октомври 2001

ТРЕТО СОВЕТУВАЊЕ Охрид 3 6 октомври 2001 ТРЕТО СОВЕТУВАЊЕ Охрид 3 6 октомври 2001 Рубин Талески Ристо Ачковски Електротехнички факултет, Скопје ПРИМЕНА НА ТРАНСФОРМАТОРИТЕ ЗА РЕГУЛАЦИЈА НА НАПОН ВО ДИСТРИБУТИВНИТЕ МРЕЖИ КУСА СОДРЖИНА Во трудот

Διαβάστε περισσότερα

45 РЕГИОНАЛЕН НАТПРЕВАР ПО ФИЗИКА 2012 III година (решенија на задачите)

45 РЕГИОНАЛЕН НАТПРЕВАР ПО ФИЗИКА 2012 III година (решенија на задачите) 45 РЕГИОНАЛЕН НАТПРЕВАР ПО ФИЗИКА III година (решенија на задачите Рамнострана стаклена призма чиј агол при врвот е = 6 поставена е во положба на минимална девијација за жолтата светлина Светлината паѓа

Διαβάστε περισσότερα

АНАЛИТИЧКИ МЕТОД ЗА ПРЕСМЕТКА НА ДОВЕРЛИВОСТA НА ДИСТРИБУТИВНИTE СИСТЕМИ

АНАЛИТИЧКИ МЕТОД ЗА ПРЕСМЕТКА НА ДОВЕРЛИВОСТA НА ДИСТРИБУТИВНИTE СИСТЕМИ ЧЕТВРТО СОВЕТУВАЊЕ Охрид, 6 9 септември 004 д-р Ристо Ачковски, дипл ел инж Електротехнички факултет, Скопје Сашо Салтировски, дипл ел инж АД Електростопанство на Македонија, Скопје АНАЛИТИЧКИ МЕТОД ЗА

Διαβάστε περισσότερα

Φύλλα Εργασίας. Работни Листови. Εκπαιδευτικό Υλικό

Φύλλα Εργασίας. Работни Листови. Εκπαιδευτικό Υλικό Εκπαιδευτικό Υλικό Φύλλα Εργασίας Работни Листови Έργο: «Διασυνοριακή συνεργασία και ανταλλαγή τεχνογνωσίας για τη χρήση της εκπαιδευτικής τεχνολογίας στην Περιβαλλοντική Εκπαίδευση» Проект: «Ποгранична

Διαβάστε περισσότερα

Годишен зборник 2014 Yearbook Факултет за информатика, Универзитет Гоце Делчев Штип Faculty of Computer Science, Goce Delcev University Stip

Годишен зборник 2014 Yearbook Факултет за информатика, Универзитет Гоце Делчев Штип Faculty of Computer Science, Goce Delcev University Stip 89 УНИВЕРЗИТЕТ ГОЦЕ ДЕЛЧЕВ ШТИП ФАКУЛТЕТ ЗА ИНФОРМАТИКА ГОДИШЕН ЗБОРНИК 204 YEARBOOK 204 ГОДИНА 3 ЈУНИ, 205 GOCE DELCEV UNIVERSITY STIP FACULTY OF COMPUTER SCIENCE VOLUME III Издавачки совет Проф. д-р

Διαβάστε περισσότερα

КОМПЕНЗАЦИЈА НА РЕАКТИВНА МОЌНОСТ

КОМПЕНЗАЦИЈА НА РЕАКТИВНА МОЌНОСТ Сите потрошувачи за својата работа ангажираат активна моќност, а некои од нив и реактивна моќност во ЕЕС извори на активната моќност се генераторите, синхроните компензатори, синхроните мотори, кондензаторските

Διαβάστε περισσότερα

Универзитет Св. Кирил и Методиј -Скопје Факултет за електротехника и информациски технологии

Универзитет Св. Кирил и Методиј -Скопје Факултет за електротехника и информациски технологии Универзитет Св. Кирил и Методиј -Скопје Факултет за електротехника и информациски технологии А. Крколева, Р. Ачковски Упатство за работа со Excel Скопје, октомври 2008 г. ВОВЕД ВО EXCEL 1. Стартување на

Διαβάστε περισσότερα

ИНСТРУМЕНТАЛНИ МЕТОДИ ЗА АНАЛИЗА

ИНСТРУМЕНТАЛНИ МЕТОДИ ЗА АНАЛИЗА ИНСТРУМЕНТАЛНИ МЕТОДИ ЗА АНАЛИЗА интерна скрипта за студентите од УГД Штип Рубин Гулабоски Виолета Иванова Петропулос Универзитет Гоце Делчев-Штип, Штип, 2014 година 1 Вовед Инструменталните методи за

Διαβάστε περισσότερα

ЕЛЕКТРОМАГНЕТНА АНАЛИЗА И ПРЕСМЕТКА НА ЕЛЕКТРОМАГНЕТНА СИЛА КАЈ МОДЕЛ НА СИНХРОН ЛИНЕАРЕН МОТОР ПО МЕТОД НА КОНЕЧНИ ЕЛЕМЕНТИ

ЕЛЕКТРОМАГНЕТНА АНАЛИЗА И ПРЕСМЕТКА НА ЕЛЕКТРОМАГНЕТНА СИЛА КАЈ МОДЕЛ НА СИНХРОН ЛИНЕАРЕН МОТОР ПО МЕТОД НА КОНЕЧНИ ЕЛЕМЕНТИ 6. СОВЕТУВАЊЕ Охрид, 4-6 октомври 2009 Мирка Попниколова Радевска Благоја Арапиноски Технички Факултет, Битола Драган Видановски ЕЛЕМ, Подружница РЕК Битола ЕЛЕКТРОМАГНЕТНА АНАЛИЗА И ПРЕСМЕТКА НА ЕЛЕКТРОМАГНЕТНА

Διαβάστε περισσότερα

Заземјувачи. Заземјувачи

Заземјувачи. Заземјувачи Заземјувачи Заземјување претставува збир на мерки и средства кои се превземаат со цел да се обезбедат нормални услови за работа на системот и безбедно движење на луѓе и животни во близина на објектот.

Διαβάστε περισσότερα

ПОДОБРУВАЊЕ НА КАРАКТЕРИСТИКИТЕ НА ИСПИТНА СТАНИЦА ЗА ТЕСТИРАЊЕ НА ЕНЕРГЕТСКИ ТРАНСФОРМАТОРИ

ПОДОБРУВАЊЕ НА КАРАКТЕРИСТИКИТЕ НА ИСПИТНА СТАНИЦА ЗА ТЕСТИРАЊЕ НА ЕНЕРГЕТСКИ ТРАНСФОРМАТОРИ 8. СОВЕТУВАЊЕ Охрид, 22 24 септември Љубомир Николоски Крсте Најденкоски Михаил Дигаловски Факултет за електротехника и информациски технологии, Скопје Зоран Трипуноски Раде Кончар - Скопје ПОДОБРУВАЊЕ

Διαβάστε περισσότερα

4.3 Мерен претворувач и мерен сигнал.

4.3 Мерен претворувач и мерен сигнал. 4.3 Мерен претворувач и мерен сигнал. 1 2 Претворањето на процесната величина во мерен сигнал се изведува со помош на мерен претворувач. Може да се каже дека улогата на претворувачот е претворање на енергијата

Διαβάστε περισσότερα

ИЗБОР НА ЕНЕРГЕТСКИ ТРАНСФОРМАТОР ЗА МЕТАЛНА КОМПАКТНА ТРАФОСТАНИЦА

ИЗБОР НА ЕНЕРГЕТСКИ ТРАНСФОРМАТОР ЗА МЕТАЛНА КОМПАКТНА ТРАФОСТАНИЦА 8. СОВЕТУВАЊЕ Охрид, 22 24 септември Михаил Дигаловски Крсте Најденкоски Факултет за електротехника и информациски технологии, Скопје Тане Петров Бучим ДООЕЛ - Радовиш ИЗБОР НА ЕНЕРГЕТСКИ ТРАНСФОРМАТОР

Διαβάστε περισσότερα

Проф. д-р Ѓорѓи Тромбев ГРАДЕЖНА ФИЗИКА

Проф. д-р Ѓорѓи Тромбев ГРАДЕЖНА ФИЗИКА Проф. д-р Ѓорѓи Тромбев ГРАДЕЖНА ФИЗИКА Преглед - MKС ЕN ISO 6946 Компоненти и елементи од згради Топлински отпори и коефициенти на премин на топлина Метод на пресметка - ( Building components and building

Διαβάστε περισσότερα

Во трудот се истражува зависноста на загубите во хрватскиот електроенергетски систем од

Во трудот се истражува зависноста на загубите во хрватскиот електроенергетски систем од 8. СОВЕТУВАЊЕ Охрид, 22 24 септември Стипе Ќурлин Антун Андриќ ХОПС ОПТИМИЗАЦИЈА НА ЗАГУБИТЕ НА ПРЕНОСНАТА МРЕЖА ОД АСПЕКТ НА КРИТЕРИУМОТ НА МИНИМАЛНИ ЗАГУБИ НА АКТИВНА МОЌНОСТ СО ПРОМЕНА НА АГОЛОТ НА

Διαβάστε περισσότερα

10. Математика. Прашање. Обратен размер на размерот е: Геометриска средина x на отсечките m и n е:

10. Математика. Прашање. Обратен размер на размерот е: Геометриска средина x на отсечките m и n е: Обратен размер на размерот е: Геометриска средина x на отсечките m и n е: За две геометриски фигури што имаат сосема иста форма, а различни или исти големини велиме дека се: Вредноста на размерот е: Односот

Διαβάστε περισσότερα

ПРИМЕНА НА ИКТ КАКО АЛАТКА ВО НАСТАВАТА PO УЧИЛИШТАТА ВО РМАКЕДОНИЈА

ПРИМЕНА НА ИКТ КАКО АЛАТКА ВО НАСТАВАТА PO УЧИЛИШТАТА ВО РМАКЕДОНИЈА UDK 004:371.32/.33(497.7) Mimoza ANASTASOSKA JANKULOVSKA 1 ПРИМЕНА НА ИКТ КАКО АЛАТКА ВО НАСТАВАТА PO УЧИЛИШТАТА ВО РМАКЕДОНИЈА Abstract Newer and improved technologies are entering our lives every day.

Διαβάστε περισσότερα

ЕВН ЕЛЕКТРОСТОПАНСТВО НА МАКЕДОНИЈА

ЕВН ЕЛЕКТРОСТОПАНСТВО НА МАКЕДОНИЈА 20140300978 ЕВН ЕЛЕКТРОСТОПАНСТВО НА МАКЕДОНИЈА ИЗМЕНИ И ДОПОЛНУВАЊЕ НА МРЕЖНИ ПРАВИЛА ЗА ДИСТРИБУЦИЈА НА ЕЛЕКТРИЧНА ЕНЕРГИЈА ( СЛУЖБЕН ВЕСНИК НА РЕПУБЛИКА МАКЕДОНИЈА БР. 87/12) Член 1 Во мрежните правила

Διαβάστε περισσότερα

Бесмртноста на душата кај Платон (II)

Бесмртноста на душата кај Платон (II) Бесмртноста на душата кај Платон (II) Стефан Пановски Студент на институтот за класични студии noxdiaboli@yahoo.com 1. За деловите на душата За да зборуваме за бесмртноста на душата, најнапред мора да

Διαβάστε περισσότερα

Почетоците на европската античка етимологија (со осврт на македонската)

Почетоците на европската античка етимологија (со осврт на македонската) УДК. 81'373.6 811.163.3'376.6 Александра Гецовска Почетоците на европската античка етимологија (со осврт на македонската) Клучни зборови: античка етимологија, дијахронија, македонска етимологија. Апстракт:

Διαβάστε περισσότερα

Потешкотии при проучувањето на TCR (vs. BCR) Го нема во растворлива форма Афинитет и специфичност. Стекнат/вроден имунолошки одговор

Потешкотии при проучувањето на TCR (vs. BCR) Го нема во растворлива форма Афинитет и специфичност. Стекнат/вроден имунолошки одговор Потешкотии при проучувањето на TCR (vs. BCR) Го нема во растворлива форма Афинитет и специфичност IgT? Стекнат/вроден имунолошки одговор Препознавање на слободен антиген (директно поврзување)? Пр. LCM

Διαβάστε περισσότερα

Природни ресурси и технологии Natural resources and technology

Природни ресурси и технологии Natural resources and technology УНИВЕРЗИТЕТ ГОЦЕ ДЕЛЧЕВ ШТИП ФАКУЛТЕТ ЗА ПРИРОДНИ И ТЕХНИЧКИ НАУКИ UDC 622:55:574:658 ISSN 185-6966 Природни ресурси и технологии Natural resources and technology ноември 2011 november 2011 ГОДИНА 5 БРОЈ

Διαβάστε περισσότερα

МОДЕЛИРАЊЕ НА DC/DC КОНВЕРТОРИ ЗА УПРАВУВАЊЕ НА ЕДНОНАСОЧНИ МОТОРИ СО КОМПЈУТЕРСКА СИМУЛАЦИЈА COMPUTER SIMULATION AND MODELING OF DC/DC CONVERTERS

МОДЕЛИРАЊЕ НА DC/DC КОНВЕРТОРИ ЗА УПРАВУВАЊЕ НА ЕДНОНАСОЧНИ МОТОРИ СО КОМПЈУТЕРСКА СИМУЛАЦИЈА COMPUTER SIMULATION AND MODELING OF DC/DC CONVERTERS МОДЕЛИРАЊЕ НА DC/DC КОНВЕРТОРИ ЗА УПРАВУВАЊЕ НА ЕДНОНАСОЧНИ МОТОРИ СО КОМПЈУТЕРСКА СИМУЛАЦИЈА Гоце СТЕФАНОВ 1, Влатко ЧИНГОСКИ 2, Елена СТЕФАНОВА 3 1 Електротехнички факултет Радовиш, УГД Штип, gce.stefnv@ugd.edu.mk

Διαβάστε περισσότερα

Развоj на систем за следење на точка на максимална мо`кност

Развоj на систем за следење на точка на максимална мо`кност Универзитет Св. Климент Охридски Технички факултет-битола Магистерски труд Развоj на систем за следење на точка на максимална мо`кност Изработил: Благоj Гегов Октомври 2014 УНИВЕРЗИТЕТ СВ. КЛИМЕНТ ОХРИДСКИ

Διαβάστε περισσότερα

МОДЕЛИРАЊЕ НА ПРЕОДНИ ПРОЦЕСИ ПРИ КОМУТАЦИИ СО MATLAB/Simulink

МОДЕЛИРАЊЕ НА ПРЕОДНИ ПРОЦЕСИ ПРИ КОМУТАЦИИ СО MATLAB/Simulink 6. СОВЕТУВАЊЕ Охрид, 4-6 октомври 2009 Александра Крколева Јовица Вулетиќ Јорданчо Ангелов Ристо Ачковски Факултет за електротехника и информациски технологии Скопје МОДЕЛИРАЊЕ НА ПРЕОДНИ ПРОЦЕСИ ПРИ КОМУТАЦИИ

Διαβάστε περισσότερα

ЗБИРКА НА ОДБРАНИ РЕШЕНИ ЗАДАЧИ ОД ОБЛАСТА НА СИНТЕЗАТА НА СИСТЕМИ НА АВТОMАТСКО УПРАВУВАЊЕ

ЗБИРКА НА ОДБРАНИ РЕШЕНИ ЗАДАЧИ ОД ОБЛАСТА НА СИНТЕЗАТА НА СИСТЕМИ НА АВТОMАТСКО УПРАВУВАЊЕ Универзитет Св. Кирил и Методиј - Скопје Факултет за електротехника и информациски технологии - Скопје ЕЛИЗАБЕТА ЛАЗАРЕВСКА ЗБИРКА НА ОДБРАНИ РЕШЕНИ ЗАДАЧИ ОД ОБЛАСТА НА СИНТЕЗАТА НА СИСТЕМИ НА АВТОMАТСКО

Διαβάστε περισσότερα

Универзитет Гоце Делчев - Штип. Факултет за информатика

Универзитет Гоце Делчев - Штип. Факултет за информатика Универзитет Гоце Делчев - Штип Факултет за информатика Магистерски труд на тема: Примена на Канбан методологијата и нејзините ефекти кај тимовите за развој на софтвер Ментор: Проф. д-р Сашо Коцески Изработил:

Διαβάστε περισσότερα

56. РЕПУБЛИЧКИ НАТПРЕВАР ПО ФИЗИКА 2013 Скопје, 11 мај IV година (решенија на задачите)

56. РЕПУБЛИЧКИ НАТПРЕВАР ПО ФИЗИКА 2013 Скопје, 11 мај IV година (решенија на задачите) 56. РЕПУБЛИЧКИ НАТПРЕВАР ПО ФИЗИКА 03 Скопје, мај 03 IV година (решенија на задачите) Задача. Птица со маса 500 лета во хоризонтален правец и не внимавајќи удира во вертикално поставена прачка на растојание

Διαβάστε περισσότερα

Оценка на ефикасноста на македонските банки примена на пристапот на стохастичка граница

Оценка на ефикасноста на македонските банки примена на пристапот на стохастичка граница Народна банка на Република Македонија Работен материјал 2015 Оценка на ефикасноста на македонските банки примена на пристапот на стохастичка граница Михајло Васков, Петар Дебников, Неда Поповска - Камнар,

Διαβάστε περισσότερα

DEMOLITION OF BUILDINGS AND OTHER OBJECTS WITH EXPLOSIVES AND OTHER NONEXPLOSIVES MATERIALS

DEMOLITION OF BUILDINGS AND OTHER OBJECTS WITH EXPLOSIVES AND OTHER NONEXPLOSIVES MATERIALS Ристо Дамбов * РУШЕЊЕ НА ЗГРАДИ И ДРУГИ ГРАДЕЖНИ ОБЈЕКТИ СО ПОМОШ НА ЕКСПЛОЗИВНИ И НЕЕКСПЛОЗИВНИ МАТЕРИИ РЕЗИМЕ Во трудот се преставени основните параметри и начини за рушење на стари згради. Ќе се прикажат

Διαβάστε περισσότερα

ПРИМЕНА НА МЕНАЏМЕНТ НА РИЗИК ЗА ДОНЕСУВАЊЕ НА ОДЛУКИ ВО ЕНЕРГЕТСКИ КОМПАНИИНАПАТСТВИЈА

ПРИМЕНА НА МЕНАЏМЕНТ НА РИЗИК ЗА ДОНЕСУВАЊЕ НА ОДЛУКИ ВО ЕНЕРГЕТСКИ КОМПАНИИНАПАТСТВИЈА 8. СОВЕТУВАЊЕ Охрид, 22 24 септември Невенка Китева Роглева Вангел Фуштиќ Факултет за електротехника и информациски технологии Ева Шуклева ЕВН-Македонија ПРИМЕНА НА МЕНАЏМЕНТ НА РИЗИК ЗА ДОНЕСУВАЊЕ НА

Διαβάστε περισσότερα

ИЗБОР НА ОПТИМАЛНА ЛОКАЦИЈА НА 400/110 kv РЕГУЛАЦИОНИ АВТО-ТРАНСФОРМАТОРИ ВО ЕЕС НА РМ

ИЗБОР НА ОПТИМАЛНА ЛОКАЦИЈА НА 400/110 kv РЕГУЛАЦИОНИ АВТО-ТРАНСФОРМАТОРИ ВО ЕЕС НА РМ 6. СОВЕТУВАЊЕ Охрид, 4-6 октомври 2009 Климент Наумоски Александар Пауноски Елизабета Силјановска Атанасова Елена Јовановска Александар Костевски АД МЕПСО Скопје ИЗБОР НА ОПТИМАЛНА ЛОКАЦИЈА НА 400/110

Διαβάστε περισσότερα

БРЗ ДИЗАЈН НА ПРОТОТИП НА УПРАВУВАЧ И ИЗРАБОТКА НА ДИНАМИЧКИ МОДЕЛ ЗА ТЕСТИРАЊЕ НА ХАРДВЕР ВО ЈАМКА НА БРЗИНСКИ СЕРВОМЕХАНИЗАМ

БРЗ ДИЗАЈН НА ПРОТОТИП НА УПРАВУВАЧ И ИЗРАБОТКА НА ДИНАМИЧКИ МОДЕЛ ЗА ТЕСТИРАЊЕ НА ХАРДВЕР ВО ЈАМКА НА БРЗИНСКИ СЕРВОМЕХАНИЗАМ УНИВЕРЗИТЕТ СВ. КЛИМЕНТ ОХРИДСКИ ТЕХНИЧКИ ФАКУЛТЕТ БИТОЛА Електротехнички отсек Александар Јуруковски БРЗ ДИЗАЈН НА ПРОТОТИП НА УПРАВУВАЧ И ИЗРАБОТКА НА ДИНАМИЧКИ МОДЕЛ ЗА ТЕСТИРАЊЕ НА ХАРДВЕР ВО ЈАМКА

Διαβάστε περισσότερα

УДК: Клучни зборови DoS, напад, напаѓач, безжична мрежа, IEEE DoS И DDoS НАПАДИ 1. ВОВЕД

УДК: Клучни зборови DoS, напад, напаѓач, безжична мрежа, IEEE DoS И DDoS НАПАДИ 1. ВОВЕД УДК: 004.7.056 DoS напади кај безжичните мрежи и методи за намалување на ефектите од овие напади Елена Конеска, Јасминка Сукаровска Костадиновска, М-р Митко Богданоски, Доц. Д-р Сашо Гелев Европски Универзитет

Διαβάστε περισσότερα

АНАЛИЗА НА ДОВЕРЛИВОСТА НА РАДИЈАЛНИ ДИСТРИБУТИВНИ МРЕЖИ СО ПРИМЕНА НА МОНТЕ КАРЛО СИМУЛАЦИИ

АНАЛИЗА НА ДОВЕРЛИВОСТА НА РАДИЈАЛНИ ДИСТРИБУТИВНИ МРЕЖИ СО ПРИМЕНА НА МОНТЕ КАРЛО СИМУЛАЦИИ 8. СОВЕТУВАЊЕ Охрид, 22 24 септември Петар Крстевски Ристо Ачковски Факултет за електротехника и информациски технологии - Скопје АНАЛИЗА НА ДОВЕРЛИВОСТА НА РАДИЈАЛНИ ДИСТРИБУТИВНИ МРЕЖИ СО ПРИМЕНА НА

Διαβάστε περισσότερα

Гоце Јанкулоски ТРАНСФОРМАЦИСКОТО ЛИДЕРСТВО КАКО ГЕНЕРАТОР НА УСПЕХОТ НА РАБОТЕЊЕТО - МАГИСТЕРСКИ ТРУД -

Гоце Јанкулоски ТРАНСФОРМАЦИСКОТО ЛИДЕРСТВО КАКО ГЕНЕРАТОР НА УСПЕХОТ НА РАБОТЕЊЕТО - МАГИСТЕРСКИ ТРУД - УНИВЕРЗИТЕТ ГОЦЕ ДЕЛЧЕВ ШТИП ЕКОНОМСКИ ФАКУЛТЕТ - ШТИП МБА - Менаџмент Гоце Јанкулоски ТРАНСФОРМАЦИСКОТО ЛИДЕРСТВО КАКО ГЕНЕРАТОР НА УСПЕХОТ НА РАБОТЕЊЕТО - МАГИСТЕРСКИ ТРУД - Штип, февруари 2015 година

Διαβάστε περισσότερα

Анализа на преодниот период на прекинувачите кај Н топологија на сериски резонантен конвертор при работа со уред за индукционо загревање

Анализа на преодниот период на прекинувачите кај Н топологија на сериски резонантен конвертор при работа со уред за индукционо загревање 7. СОВЕТУВАЊЕ Охрид, 2 4 октомври 2011 Гоце Стефанов Василија Шарац Дејан Милчевски Електротехнички факултет - Радовиш Љупчо Караџинов ФЕИТ - Скопје Анализа на преодниот период на прекинувачите кај Н топологија

Διαβάστε περισσότερα

Анализа на мрежите на ЈИЕ во поглед на вкупниот преносен капацитет

Анализа на мрежите на ЈИЕ во поглед на вкупниот преносен капацитет 6. СОВЕТУВАЊЕ Охрид, 4-6 октомври 2009 Мирко Тодоровски Ристо Ачковски Факултет за електротехника и информациски технологии, Скопје Анализа на мрежите на ЈИЕ во поглед на вкупниот преносен капацитет КУСА

Διαβάστε περισσότερα

УНИВЕРЗИТЕТ ГОЦЕ ДЕЛЧЕВ ШТИП ФАКУЛТЕТ ПО ИНФОРМАТИКА. Катедра за математика. Сања Пачемска

УНИВЕРЗИТЕТ ГОЦЕ ДЕЛЧЕВ ШТИП ФАКУЛТЕТ ПО ИНФОРМАТИКА. Катедра за математика. Сања Пачемска УНИВЕРЗИТЕТ ГОЦЕ ДЕЛЧЕВ ШТИП ФАКУЛТЕТ ПО ИНФОРМАТИКА Катедра за математика ЕФЕКТИ ОД ПРИМЕНАТА НА ИНФОРМАТИЧКО КОМПЈУТЕРСКАТА ТЕХНОЛОГИЈА ВО НАСТАВАТА ПО МАТЕМАТИКА МАГИСТЕРСКИ ТРУД ШТИП, мај 01 Комисија

Διαβάστε περισσότερα

ХЕМИСКА КИНЕТИКА. на хемиските реакции

ХЕМИСКА КИНЕТИКА. на хемиските реакции ХЕМИСКА КИНЕТИКА Наука која ја проучува брзината Наука која ја проучува брзината на хемиските реакции Познато: ЗАКОН ЗА ДЕЈСТВО НА МАСИ Guldberg-Vage-ов закон При константна температура (T=const) брзината

Διαβάστε περισσότερα

7. Димензионирање на преживливи WDM мрежи

7. Димензионирање на преживливи WDM мрежи 7. Димензионирање на преживливи WDM мрежи Мултиплексирањето на бранови должини (WDM) еволуира во форма од истражувачка активност во реална алтернатива за мрежните оператори во надградбата на нивната транспортна

Διαβάστε περισσότερα

МЕХАНИКА 1 МЕХАНИКА 1

МЕХАНИКА 1 МЕХАНИКА 1 диј е ИКА Универзитет Св. Кирил и Методиј Универзитет Машински Св. факултет Кирил -и Скопје Методиј во Скопје Машински факултет 3М21ОМ01 ТЕХНИЧКА МЕХАНИКА професор: доц. д-р Виктор Гаврилоски 1. ВОВЕДНИ

Διαβάστε περισσότερα

Безжични мерни системи 1

Безжични мерни системи 1 6. Безжични мерни системи Безжичниот пренос е единствениот можен начин на пренос во системи каде што објектот се движи или се наоѓа на големо растојание од центарот за мерење. Постојат три типа на мерни

Διαβάστε περισσότερα

СТРУКТУРАТА НА КАПИТАЛОТ КАКО ФАКТОР ВО ВРЕДНУВАЊЕТО НА ПРЕТПРИЈАТИЈАТА И ИНВЕСТИЦИОНИТЕ ВЛОЖУВАЊА М-р Илија Груевски Државен универзитет Гоце Делчев

СТРУКТУРАТА НА КАПИТАЛОТ КАКО ФАКТОР ВО ВРЕДНУВАЊЕТО НА ПРЕТПРИЈАТИЈАТА И ИНВЕСТИЦИОНИТЕ ВЛОЖУВАЊА М-р Илија Груевски Државен универзитет Гоце Делчев СТРУКТУРАТА НА КАПИТАЛОТ КАКО ФАКТОР ВО ВРЕДНУВАЊЕТО НА ПРЕТПРИЈАТИЈАТА И ИНВЕСТИЦИОНИТЕ ВЛОЖУВАЊА М-р Илија Груевски Државен универзитет Гоце Делчев Штип, Република Макдонија Abstract Some of the most

Διαβάστε περισσότερα

56. РЕПУБЛИЧКИ НАТПРЕВАР ПО ФИЗИКА 2013 Скопје, 11 мај I година (решенија на задачите)

56. РЕПУБЛИЧКИ НАТПРЕВАР ПО ФИЗИКА 2013 Скопје, 11 мај I година (решенија на задачите) 56. РЕПУБЛИЧКИ НАТПРЕВАР ПО ФИЗИКА 03 Скопје, мај 03 I година (решенија на задачите) Задача. Експресен воз го поминал растојанието помеѓу две соседни станици, кое изнесува, 5 km, за време од 5 min. Во

Διαβάστε περισσότερα

шифра: Филигран Истражувачки труд на тема: Анализа на мала хидроцентрала Брајчино 2

шифра: Филигран Истражувачки труд на тема: Анализа на мала хидроцентрала Брајчино 2 шифра: Филигран Истражувачки труд на тема: Анализа на мала хидроцентрала Брајчино 2 Битола, 2016 Содржина 1. Вовед... 2 2. Поделба на хидроцентрали... 3 2.1. Поделба на хидроцентрали според инсталирана

Διαβάστε περισσότερα

СТУДИЈА НА РЕАЛЕН СЛУЧАЈ НА ВЛИЈАНИЕТО НА ДИСПЕРЗИРАНОТО ПРОИЗВОДСТВО ВРЗ СН ДИСТРИБУТИВНА МРЕЖА

СТУДИЈА НА РЕАЛЕН СЛУЧАЈ НА ВЛИЈАНИЕТО НА ДИСПЕРЗИРАНОТО ПРОИЗВОДСТВО ВРЗ СН ДИСТРИБУТИВНА МРЕЖА 6. СОВЕТУВАЊЕ Охрид, 4-6 октомври 2009 Методија Атанасовски Љупчо Трпезановски Технички Факултет, Битола СТУДИЈА НА РЕАЛЕН СЛУЧАЈ НА ВЛИЈАНИЕТО НА ДИСПЕРЗИРАНОТО ПРОИЗВОДСТВО ВРЗ СН ДИСТРИБУТИВНА МРЕЖА

Διαβάστε περισσότερα