Wi!Mi – это инструмент для создания моделей знаний с неограниченным количеством связей, параметров и отношений, обладающий логическим выводом. Скачать данный конструктор можно с официального сайта.
К сожалению, адекватного туториала по данной программе я не нашел, не считая видеоурока на youtube. Поэтому решил написать его самостоятельно.
Я изначально решил поставить себе определенную прикладную задачу:
Перед тем, как описывать процесс решения данной задачи, проведу краткий экскурс по теории, на которой базируется данная программа. В основе Wi!Mi лежит миварный подход к описанию и формализации любых типов знаний. Этот подход основан на создании эволюционного многомерного динамического пространства унифицированного представления данных и правил. Иначе говоря, получается, что миварный подход обобщает общепринятые подходы — к примеру, такие как когнитивные карты и онтологии.
Для простоты я разбил все данные на входные и выходные, чтобы проще было ориентироваться.
Входные данные модели:
Выходные данные модели:
Стоит отметить, что в программе присутствует кнопочка изменения языка, которая позволяет на любом этапе создания модели поменять язык интерфейса на английский / русский. К сожалению, во многих программах такой возможности нет (это лирическое отступление — наболевшая проблема).
Вернемся к созданию модели. Создадим два класса «Входные данные модели» и «Выходные данные модели». Для этого нажимаем кнопку «Добавить объект» и выбираем его тип «Класс».
Задаем имя класса и пишем его описание. Потом необходимо добавить параметры в наш класс. Для этого нажимаем на «Добавить параметр», и в открывшимся окне вводим необходимые данные – имя и тип. Стоит вводить и описание, но это не обязательный параметр — просто он позволяет легче ориентироваться в модели и понимать, для чего нужен тот или иной объект.
После того, как мы создадим два класса и наполним их объектами, получим следующий вид:
Далее нам необходимо создать отношения между объектами. Для этого переходим на вкладку «Отношения», нажимаем «Добавить отношение» и выбираем тип «Формула».
Введем формулу загрузки одного сотрудника Ro = lambda / (Mu * K) и нажмем на кнопку «Анализировать формулу». Программа автоматически определит входные и выходные параметры. Аналогичные действия делаем с формулой количества клиентов в очереди
Q =( K * Math.pow(Ro,K+1)) / (1 — Math.pow(Ro,K)) и с суммарными затратами фирмы Cp = K * S + Ub * Q.
Теперь необходимо создать правила. Для этого нажимаем на «Добавить правило» и выбираем тип «Простое правило».
Далее выбираем отношение, с которым мы будем работать. Выбрав его, привязываем к каждому объекту соответствующий параметр. Стоит отметить, что отношение может быть представлено в виде иных значений (x=y+z) — главное, чтобы оно повторяло структуру формулы. Это бывает удобно, когда к отношению привязывается несколько правил. Так как модель небольшая, я для простоты использовал значения, идентичные параметрам.
После того как мы создали все отношения и привязали к ним правила, получаем следующий вид:
Создание модели закончено. Теперь нужно ее проверить. Для этого необходимо перейти во вкладку «Умный калькулятор». Раскроем root и наши два класса. Введем данные из нашего условия и отметим галочкой параметры, которые необходимо получить.
Программа произвела расчет и выдала алгоритм решения.
Также можно нажать на галочку «Показать граф решения». Будет визуализирован весь алгоритм в виде графа.
В целом инструмент очень простой — даже в реализации интерфейсов. Однако для человека, который не хочет или не умеет программировать (а если умеет программировать, то в Wi!Mi есть специальные «Сложные» отношения, которые позволяют писать их на JavaScript), или не хочет долго вникать, как работать с этой «штукой» — отличный вариант. Хотел сказать еще, что все модели сохраняются в .XML формате.
По сути, остается написать свой интерфейс, распарсить эти данные — и мы получим свою полноценную программку. Лично мне было удобно использовать данный конструктор для быстрого построения логики.
К сожалению, адекватного туториала по данной программе я не нашел, не считая видеоурока на youtube. Поэтому решил написать его самостоятельно.
Цель
Я изначально решил поставить себе определенную прикладную задачу:
«Существует N организация, у которой есть служба ремонта техники. Количество сотрудников 3 человека. Интенсивность поступления оборудования — 2 клиента в час. А интенсивность обслуживания равно 2. Почасовая оплата сотрудника составляет 8 у.е./час. Убыток службы от нахождения клиента в очереди составляет 10 у.е./час. Необходимо вычислить суммарные затраты фирмы».
Теория
Перед тем, как описывать процесс решения данной задачи, проведу краткий экскурс по теории, на которой базируется данная программа. В основе Wi!Mi лежит миварный подход к описанию и формализации любых типов знаний. Этот подход основан на создании эволюционного многомерного динамического пространства унифицированного представления данных и правил. Иначе говоря, получается, что миварный подход обобщает общепринятые подходы — к примеру, такие как когнитивные карты и онтологии.
Создание модели
Для простоты я разбил все данные на входные и выходные, чтобы проще было ориентироваться.
Входные данные модели:
- Интенсивность поступления оборудования lambda;
- Интенсивность обслуживания Mu;
- Оплата сотрудника S;
- Убытки фирмы в случае простоя Ub;
- Число сотрудников K.
Выходные данные модели:
- Загрузка одного сотрудника Ro;
- Клиентов в очереди Q;
- Суммарные затраты фирмы Cp.
Стоит отметить, что в программе присутствует кнопочка изменения языка, которая позволяет на любом этапе создания модели поменять язык интерфейса на английский / русский. К сожалению, во многих программах такой возможности нет (это лирическое отступление — наболевшая проблема).
Вернемся к созданию модели. Создадим два класса «Входные данные модели» и «Выходные данные модели». Для этого нажимаем кнопку «Добавить объект» и выбираем его тип «Класс».
Задаем имя класса и пишем его описание. Потом необходимо добавить параметры в наш класс. Для этого нажимаем на «Добавить параметр», и в открывшимся окне вводим необходимые данные – имя и тип. Стоит вводить и описание, но это не обязательный параметр — просто он позволяет легче ориентироваться в модели и понимать, для чего нужен тот или иной объект.
После того, как мы создадим два класса и наполним их объектами, получим следующий вид:
Далее нам необходимо создать отношения между объектами. Для этого переходим на вкладку «Отношения», нажимаем «Добавить отношение» и выбираем тип «Формула».
Введем формулу загрузки одного сотрудника Ro = lambda / (Mu * K) и нажмем на кнопку «Анализировать формулу». Программа автоматически определит входные и выходные параметры. Аналогичные действия делаем с формулой количества клиентов в очереди
Q =( K * Math.pow(Ro,K+1)) / (1 — Math.pow(Ro,K)) и с суммарными затратами фирмы Cp = K * S + Ub * Q.
Теперь необходимо создать правила. Для этого нажимаем на «Добавить правило» и выбираем тип «Простое правило».
Далее выбираем отношение, с которым мы будем работать. Выбрав его, привязываем к каждому объекту соответствующий параметр. Стоит отметить, что отношение может быть представлено в виде иных значений (x=y+z) — главное, чтобы оно повторяло структуру формулы. Это бывает удобно, когда к отношению привязывается несколько правил. Так как модель небольшая, я для простоты использовал значения, идентичные параметрам.
После того как мы создали все отношения и привязали к ним правила, получаем следующий вид:
Создание модели закончено. Теперь нужно ее проверить. Для этого необходимо перейти во вкладку «Умный калькулятор». Раскроем root и наши два класса. Введем данные из нашего условия и отметим галочкой параметры, которые необходимо получить.
Программа произвела расчет и выдала алгоритм решения.
Шаг № 0
Описание правила: Вычисление загрузки одного сотрудника
Входные параметры:
lambda=2;
Mu=2;
K=3;
Формула:
Ro = lambda / (Mu * K)
Результат: Ro=0.333333333333333;
------------------------------------
Шаг № 1
Описание правила: Вычисление загрузки очереди клиентов
Входные параметры:
K=3;
Ro=0.333333333333333;
Формула:
Q = (K * Math.pow(Ro,K+1)) / (1 - Math.pow(Ro,K))
Результат: Q=0.0384615384615384;
------------------------------------
Шаг № 2
Описание правила: Вычисление затрат фирмы
Входные параметры:
K=3;
S=8;
Ub=10;
Q=0.0384615384615384;
Формула:
Cp = K * S + Ub * Q
Результат: Cp=24.3846153846154;
------------------------------------
Также можно нажать на галочку «Показать граф решения». Будет визуализирован весь алгоритм в виде графа.
В целом инструмент очень простой — даже в реализации интерфейсов. Однако для человека, который не хочет или не умеет программировать (а если умеет программировать, то в Wi!Mi есть специальные «Сложные» отношения, которые позволяют писать их на JavaScript), или не хочет долго вникать, как работать с этой «штукой» — отличный вариант. Хотел сказать еще, что все модели сохраняются в .XML формате.
По сути, остается написать свой интерфейс, распарсить эти данные — и мы получим свою полноценную программку. Лично мне было удобно использовать данный конструктор для быстрого построения логики.
DbLogs
Пока что впечатление, что эта штука возможно чуть более умнее Экселя, но уступает по UX.
Kilox
Excel это сам по себе мощный инструмент, который решает огромный спектр задач. Правда, людей, которые используют его на 100% очень мало. Если необходимо быстро перестроить модель, в случае необходимости, Wi!Mi с этой задачей справится достаточно быстро, даже если меняется структура модели (задачи). По поводу UX: в Wi!Mi мы описываем реальную картину мира и опираемся на «человеческое» представление этой самой картины, так что не уступает, а скорее наоборот!