Практическое применение ГА (часть 1)

Пока нормальные люди выбираются место за городом, куда можно поехать чтобы позагорать и поплавать в озере, я наблюдаю, как генетический алгоритм подбирает решения для задачи определения типа спортивной тренировки…

Если предложение выше Вам не понравилось смело закрывайте эту вкладку и идите крутить ленту 🙂 Иначе, мы поговорим о практическом применении этого алгоритма и разумеется о jevo.js, где это самое применение и появилось. Для начала, определимся с инструментами:
— у нас есть наручные часы Garmin vivoactive HR, определяющие пульс и калории
— 60 записей о трех видах тренировок (хоккей, теннис и бег) в JSON
— jevo.js — которая может писать маленькие программки

Задача: определить тип тренировки (один из трех) по входящим параметрам (дата тренировки, килокалории, продолжительность в секундах и средний пульс). То есть, на входе у нас 4 параметра (4 числа), а на выходе один — тип тренировки (от 0 до 2).

Чтобы лучше понять проблему, нужно отметить тот факт, что у этих часов есть ограниченный набор типов тренировок. А именно:

vivoactive-HR-tracking-prodilesGarmin activities

На правой нижней картинке видно тип «Cardio». Именно его я использую для записи тенниса и хоккея. То есть, мне приходится каждый раз менять имя тренировки вручную c «Сardio» на «Hokkey» и т.д. По сему, эта задача имеет вполне практическое применение в моей жизни 🙂

Описание: по сути, нам нужно получить программу, которая бы распознавала тип тренировки исходя из моих личных особенностей, а именно: средний пульс, килокалории и т.д. Она сродни тем, что решают нейронные сети при определении класса объекта по его характеристикам. На момент написания статьи, алгоритм «дошел» до 68.3% точности в определении того играл ли я на этой неделе в теннис.

Ограничения:
— размер программы ограничен 50 строками
— используются: 4 переменные, условия (if), +, -, /, *, %, &, |, ^, >>, <<, >>>, <, >, ==, !=, <=, sin, cos, tan, abs, !, константа PI, внутренняя память на 64 ячейки

Выполнение 90% заданий будет считаться успехом моей затеи. На текущий момент лучшей программой стало это чудо: (41 из 60 правильных решений):

code

Чем ближе алгоритм приближается к тому чтобы определить все правильные решения, тем больше времени ему для этого нужно. Лично мне все это напоминает экспоненциальную зависимость.

В общем ждем-с…

Реклама