Механизм правил: лучше всего подходит для встроенной системы

Я проводил некоторые исследования механизмов правил, которые были бы более подходящими для работы во встроенной системе. Система будет собирать информацию с датчиков и в соответствии с этой информацией выполнять конкретные вызовы C / C ++. Примером может быть:

IF RainSensor.value > RainSensor.threshold
THEN call( GarageWindow::close())

Будучи GarageWindow классом C ++, живущим в двоичном файле, который ссылается на библиотеку движка правил.

Я не могу делать предположения о возможностях указанной встроенной системы. Требования к нему:

  • Минимальный след.
  • портативный
  • Способен выполнять вызовы функций (делать вызовы C / C ++ из своей RHS).
  • Следует принять новые правила во время выполнения.

Мне нужно будет дать альтернативы в соответствии с его возможностями (будут определены в будущем), предположения:

1) Встроенная система ничего не поддерживает (без JVM, без Python и т. Д.):

КЛИПЫ как библиотека C или clipsmm как библиотека C ++. Оба могут использоваться в коммерческих приложениях (GPL для clipsmm).

преимущества: Открытый исходный код. Очень хорошо проверено / задокументировано. Портативный и может работать на малой памяти. Можно вызвать функции C или C ++ из его раздела RHS. Скорее всего, движок правил должен будет взаимодействовать с программным обеспечением C или C ++.

Недостатки: Это не потокобезопасно. Поддерживает только прямую цепочку.

2) Система поддерживает Python:

PyClips:

Интерфейс Python для CLIPS. Функциональность остается такой же, как и в предыдущем случае. Использование этого будет полезно только в том случае, если вызовы Python должны выполняться в разделе RHS. Какие преимущества / недостатки я пропускаю?

3) Система поддерживает JVM:

Джесс:

преимущества: Хорошая интеграция с объектами Java. CLIPS-подобный язык сценариев. Прямая и обратная цепочка. Автоматическое прослушивание объектов Java для изменения слотов.

НедостаткиЛицензированный. Может определять только новые классы во время компиляции.

Drools:

преимущества: Открытый исходный код. Документально. Интеграция Java Прямая и обратная цепочка.

Недостатки: Он больше предназначен для работы в Интернете (это мое впечатление).

В чем преимущество Drools против Jess во встроенной среде?

Оба могут добавлять новые классы только во время компиляции. Клипы могут во время выполнения. С другой стороны, если код C ++, который обновляет экземпляры клипов, устарел, любой новый класс, созданный непосредственно в CLIPS, не будет сопоставлен ни с каким другим классом в вызывающем коде C ++. Следовательно, недостаток перекомпиляции параметров Java не такой.

Есть ли какой-нибудь другой подходящий движок для встраиваемых систем, который мне совершенно не хватает?

4

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]