Еволуција једног система
- Први мој циљ је био да апликација буде фул подржана од МТ5 платформе и свим оним што она тренутно нуди. Циљ испуњен.
- Други мој циљ је био да сав код буде искључиво написан у мкул5 програмском језику као и да постоји могућност конвертовања у мкул4. Нема Оникса, Пајтона, Ц ++ са итд. Радићемо и то али не сада. Испуњено.
- Да код буде што је то могуће више систематски написан и поређан по начину извршавања. Искрено то није битно јер ово је нелинеаран програмски језик, итд. Али ето овај циљ је делимично испуњен. Мислим овај циљ није био тако ни битан али ето.
- Трећи мој циљ је био да робот чува податке негде, да би имао имао могућност приступа истим након било ког проблема који може да се појави током рада. А то је на пример пуцање сервера, пуцање саме МТ5 платфроме, новог апдејта платформе који тражи рестарт, или било које вртсе проблема који може настати. Када поново покренемо робота ми имамо нашу базу , наш фајл и наше податке којима робот може одмах да приступи. Испуњено.
- Следећи циљ је био да робот има могућност самоиницијализације када се већ налази на графикону , то јест када је већ активиран. Е ово је испуњено тек у овој задњој верзији. Шта то значи за нас. На пример до сада робот је креирао базу, табелу, и чувао податке само током почетне иницијализације или активације. Овај процес је обухватао следеће кораке. Прво корак је био одабир симбола, и временског оквира. А затим активирање робота. Само током активације робот је тренирао неуроску мрежу на лајв подацима. Свака промена симбола или временског оквира није омогућавала да робот покреће ове процесе поново. Сада је то могуће. Па тако ако је робот већ активиран на симболу ЕУРУСД и у временском оквиру Х1, и ми сада желимо да променимо временски оквир или желимо једноставно да одаберемо други симбол из маркет воча и активирамо га док је робот већ присутан на већ постојећем графикону, робот ће се самоиницијализовати и покренути цео процес тренирања поново, али неће креирати базу јер је већ има. Већ ће само креирати нови фајл(читај- табелу)односно нову табелу унутар базе. Име табеле ће садржати очишћено име симбола(у ту сврху смо развили и посебну [You must be registered and logged in to see this link.] имена симбола), јер симбол може имати суфикс или префикс у свом имену, а што скул не подржава, и имаће магични број и садржаће временски оквир у имену нове табеле( види слику испод- очишћено име симбола) као и све податке од тренирања.
[You must be registered and logged in to see this image.]
Овај приступ омогућава да робот зна којој табели да приступи, за који одабрани ИД или магични број и за који временски оквир. Сад ово је могло бити све решено унутар једне табеле која би садржала име симбола и временски оквир , али ја сам се одлучио за овај приступ.
- Следећи корак у развоју апликације је подразумевао приступ најбољим подацима који ће бити фечовани даље. А што нас доводи до индексирања на основу одређених параметара унутар саме табеле. Јер унутар ове табеле робот има сачуване подтке од тренирања у неколико редова. Које од податка одабрати. Па наравно најбоље. Како одабрати најбоље. Путем индексирања одређене колоне, а затим дохвата свих података и њиховог прослеђивања даље. Испуњено.,
- Следећи мој циљ је био да апликација буде једноставна и разумљива за сваког, без обзира да ли имате или немате појма о ничему. А што значи ако се први пут сусрећете са оваквом врстом апликације, неће вам бити проблем да је користите јер сама апликација садржи минималан број подесивих улаза, који су сасвим јасно и кратко означени то јест објашњени. Искрено шта вам значи робот који има гомилу улаза са којима незнате шта да радите, па у том слкучају зависите од девелопера те исте апликације. Чак и ако имате корисничко упутство, слаба вајда. Само девелопер зна да вам одреди приоритете унутар апликације на којима можете радити ако желите да се окушате у оптимизацији на пример. Такођер ако апликација има велики број параметара које одабрати (поменути приоритети), итд. Стога могу слободно да закључим да је и овај циљ Испуњен.
- Слдеци циљ је био да робот покрене неколико сесија или неколико циклуса епоха током тренирања. На пример одабрали смо да робот тренира НН мрежу током иницијализације или само иницијализације за хиљаду епоха. За поменути број епоха робот одради тренирање , прикупи податке, прослеђује и тако даље. Међутим робот прикупи само одређени део података , то јест мали број. А нама је битно да робот има сачуван већи број података да би имао могућност одабира најбољих , просто речено (види слику испод).
[You must be registered and logged in to see this image.],
Па стога ако број сесија подесимо на пример на 5, то значи да ће робот покренути пет циклуса по хиљаду епоха. Једноставно речено број сесија је мултипликатор броја епоха. Такођер сад нам није потребно да укључимо лог испис и пратимо шта се дешава јер ова верзија има интегрисано текстуално обавештење које се појављује на графикону а које нас информише колико сесија је одрађено од укупно задатог броја и када је тренирање завршено и за колико времена (види слике испод)
[You must be registered and logged in to see this image.]
Стога и највероватније све принт функције осим еррор функција биће деактивиране. Такођер је додат и звучни сигнал на крају, који нас обавештава да је систем завршио ток оптимизације(читај тренирања)на новом симболу или временском оквиру. Сам процес траје свега пар секунди а опет у зависниости од броја епоха, броја сесија итд.
Овај циљ је решен тек јуче. Мислим ја не седим 24 сата и програмирам. Често идеје долазе саме од себе кад радим неке сасвим друге , сељачке, или мајсторске послове. Поправљам трактор на пример, скупљам кукуруз по њиви , јер је берач доста како да кажем просуо итд, зидам, малтеришем , нем појма, косим двориште. Ма није ни важно. У сваком случају , и да се вратим на почетак. Ни сам нисам имао вољу да уђем у процес оптимизације јер је била и сувише временски захтевна , па стога и цена за ову апликацију је само 65 долара за пет лиценци, за сада.
Као што сам и напоменуо на почетку, ја велики број својих система дајем другим људима , и то лајценс фри. Да тестирају исте, раде са њима, укажу ми на различите проблеме унутар истих, да ми кажу шта мисле, итд. Новац није примаран бар у мом послу , јер ја не живим и не зависим од овога. Већ ето једноставно убијам време преко дана , ноћу или кад сам слободан, као сада. Мислим ја имам другог посла преко главе али ето нешто сад књавам, итд. Стога сад робот ради као и сваки други алго систем бар који ја имам и није временски захтеван током оптимизације. Па стога време које ми је сада потребно да на пример тренирам или оптимизујем цео систем почев од 2017 па до данас унутар процесорске снаге са којом ја тренутно располажем је како да кажем разумно време и износи можда 45 минута, мање , више. Радна станица коју узгред никад нисам купио(5-7 хиљада евра) овај процес би одрадила за пар секунди.
Е сад можемо да радимо. Наиме проблем је лежао у превеликој комуникацији са базом података. Јер робот и током оптимизације и тестирања креира базу, чува податке, чита из базе, итд. Сама база се чува у комон дата фолдеру од МТ5 платформе. Та превелика комуникација током процеса оптимизације је успоравал цео систем до изнемоглости. Проблем је решен на тај начин што се сада подаци БАЧУЈУ , хахаха. Јесте смешно али ради. Сви они који раде СКУЛ знају о чему говорим.
Знате како, ја сам прво почео да учум, Р, па онда Пајтон, па онда сам почео да учим базе података. Стандардне , не стандардне. Па онда сам се дотако како да кажем Ц шарпа, па Ц ++, па онда сам једно значајно време посветио учењу Нод Џејеса. Нећу ни да помињем хтмл и цсс. Ни различите фримворкове Ђанго на пример ,Фласк. Ту је и МД ма нем појма ни ја више. И ето треба човек да се сети , јер га мука тера. Нисам ја неки велики програмер нити ми је намера да то икад постанем. Али ето као што рекох убијам време. Млатим празну сламу како наш народ воли да каже. Или хахаха можда је боља она народна. Залудан поп и овце крштава. Нек се не наљуте попови наши, без којих неможемо. И ето то је решење, БАЧОВАЊЕ података. Неко ће рећи. Види овог мајку му сељачку, БАЧУЈЕ податке, хахаха. Звучи глупо али ради посо.
Е сад можемо да радимо. Такођер нова верзија има доста мањи број услова за тренирање. Одлучио сам се да сачувам оне најбитније да бих и ту добио на перформансама. Незнам више ни шта сам написао овде. Шта још да напоменем. Стао ми мозак. Нем појма више. Пре него што завршим са овим текстом желим да напоменем следеће. Унутар овог робота сам применио само моја решења, јер нисам хтео да користим туђа. База података коју можете наћи на МКУЛ5 веб сајту је превелика и обилује већ готовим билдин решењима. Ја сам кренуо тежим путем. Наравно ја увек читам и пратим нове текстове који се објављују, првенствено на Руском (види слику испод).
[You must be registered and logged in to see this image.]
Верујте ми на реч архива текстова и свега другог, на пример базе кодова, ма свега, је много боља и квалитетнија на Руском. Пратите само датуме објаве за поједине теме и све ће вам бити јасно. Да ли знам Руски. Па хахаха научио сам га, бар да читам. Јер читам полако али конверзација, јбг нем ским да причам Руски, јер сви око мене говоре Српски хахаха. Мала шала. Океј, обратите пажњу на ову чињеницу.
И ето, остало је још да се ово решење додатано очисти,мало поправи, утегне, јер имам неких објеката који остају присутни и након деиницијализације робота, а што доводи до малог мемори лика, односно цурења меморије. Ма додао сам доста нових глобалних флагова а нисам деиницијализово исте, итд. И ето шта још да кажем хммммм. Нека се ова тема зврши на овоме. Видимо се ми опет. Будите ми здраво и живи били ви мени сви. Одох.
п.с.
(правописне грешеке исправљам наком објаве)