Skip to content

Latest commit

 

History

History
83 lines (66 loc) · 6.78 KB

README.ru.md

File metadata and controls

83 lines (66 loc) · 6.78 KB

Визуализатор ML алгоритмов

Описание

Этот репозиторий содержит исходный код фреймворка для создания визуализаторов алгоритмов машинного обучения и некоторые примеры визуализаторов.
С помощью фреймворка можно создавать визуализаторы не только для алгоритмов машинного обучения, но и для других алгоритмов. Визуализаторы позволяют визуализировать процесс обучения алгоритмов машинного обучения, а также их результаты.
Визуализаторы могут быть использованы для обучения студентов, а также для демонстрации работы алгоритмов машинного обучения.

Структура проекта

Проект состоит из трех частей: библиотека для написания алгоритмов, библиотека для написания визуализаторов и примеры визуализаторов.

Библиотека для написания алгоритмов

С точки зрения написания алгоритмов библиотека содержит две функции: bind и here.
Функция bind позволяет связать внутренние переменные алгоритма с текущим состоянием визуализатора, которое в последствии будет отображено на экране.
Функция here позволяет создать виртуальную точку остановки в алгоритме. При достижении этой точки алгоритм будет остановлен и текущее состояние визуализатора будет отображено на экране.
У пользователя затем появится возможность продолжить выполнение алгоритма до следующей точки остановки.

Пример использования функций bind и here есть в визуализаторе алгоритма сортировки пузырьком.

Библиотека так же позволяет описать три типа:

  • State - обьект который содержит текущее состояние алгоритма с его внутренними переменными которые были связаны с визуализатором с помощью функции bind.
  • Event - обьект который содержит информацию о событии которое произошло в алгоритме. Каждый вызов функции here создает новое событие.
  • Arguments - обьект который содержит типы для аргументов функции алгоритма. Этот тип используется для описания входных данных алгоритма.

Пример использования типов есть в визуализаторе алгоритма сортировки пузырьком, но на момент написания документации строгая типизация не была реализована.

Библиотека для написания визуализаторов

TODO

Примеры визуализаторов

Примеры визуализаторов находятся в папке src/visualizers.
Каждый визуализатор представляет из себя директорию с тремя файлами:

  • [alg-name].tsx - файл в котором реализован алгоритм.
  • render.tsx - файл в котором реализован компонент визуализатора.
  • start.tsx - файл в котором реализован компонент для запуска алгоритма.

В текущей стадии развития проекта всё использование и структура визуализаторов может быть изменена.

На момент написания документации в репозитории есть следующие примеры визуализаторов:

Запуск и разработка

Для запуска проекта необходимо:

  • установить Node.js и pnpm (необходимо использовать VPN).
  • склонировать репозиторий
  • установить зависимости командой pnpm i
  • запустить проект командой pnpm run dev

На момент написания документации проект умеет запускать только алгоритм сортировки пузырьком. Чтобы поменять запускаемый алгоритм необходимо изменить файл ./src/lib/index.tsx и ./src/App.tsx в местах где явно используется bubble sort.

@startuml
actor Пользователь  as user
participant Браузер as browser
participant Фреймворк as framework
participant Алгоритм as algorithm
participant Визуализатор as visualizer
autonumber 1
user -> browser : Нажатие на "Start"
browser -> framework : Обработка события
framework -> algorithm : Запуск алгоритма
algorithm -> framework : Объекты состояния
algorithm -> framework : await here
framework -> visualizer : Состояние алгоритма
visualizer -> browser : Состояние интерфейса

user -> browser : Нажатие на "Next"
browser -> framework : Обработка события
framework -> algorithm : Promise.resolve
algorithm -> framework : await here
framework -> visualizer : Состояние алгоритма
visualizer -> browser : Состояние интерфейса

user -> browser : Нажатие на "Prev"
browser -> framework : Обработка события
framework -> visualizer : Предыдущее состояние алгоритма
visualizer -> browser : Состояние интерфейса
@enduml