Вопрос

Я ищу движок правил на C или Python, но если вы знаете движок правил, реализованный на другом языке, я был бы рад узнать об этом.

Движок будет использоваться как способ автоматизации дома, например, для выключения света, когда кто-то выходит из комнаты и т.д.Таким образом, никаких правил "office" там нет (они же правила do you в Excel или что-то в этом роде).

Я заглянул в Jess и Drools, которые находятся на Java и отлично справляются со своей работой.Я хотел бы знать о других и, возможно, использующих меньше памяти, чем Java.Я слышал о RuleCore на Python, но не смог найти никакой документации по нему (версия 1.0 доступна на SourceForge, но похоже, что они продают v.2.0).

Редактировать:Под механизмом правил (inference engine) я подразумеваю реализацию RETE или эквивалента.

Это было полезно?

Решение

В вашем поиске движок правил на основе RETE на Python либо Пайк или Циклипсы это может быть тот, который вы хотели бы использовать.

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

Другие советы

Вы могли бы посмотреть на ЗАЖИМЫ как уже предлагалось, или, если вы хотите заплатить деньги или нуждаетесь в них Повторите 2.В прошлом я использовал CLIPS в Unix и успешно внедрял его в другие приложения.

Надеюсь, это поможет.

правило by это движок правил, написанный на ruby.Это было темой презентации на rubyhoedown 2008: ruleby-движок-правил-для-ruby

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

http://www.mindswap.org /~кац/пичинко/

По сути, Python является механизм правил.

"Движок будет использоваться для автоматизации дома, например, для выключения света, когда кто-то выходит из комнаты и т.д.".

Вам нужны датчики и контроллеры.Вы пишете свои "правила" как обычные объекты Python.

Ваша основная "программа" собирает события с ваших датчиков и отправляет их на ваши контроллеры.

Если вы можете считывать данные со своих датчиков через обычный USB, это еще лучше.Морская индустрия использует пару тесно связанных стандартов, таких как NMEA 0183 и NMEA 2000, для определения трафика по шине от датчика к контроллеру.

Вам не нужен Еще Один Язык Правил.У вас есть Python.

Rulecore действительно частично написан на Python.Но на самом деле это не имеет значения.Вы, как пользователь, в любом случае не увидели бы ни одной из этих деталей реализации.

Правила носят чисто декларативный характер и определяются с использованием XML.XML отправляется на сервер CEP ruleCore в виде событий с использованием веб-служб, JMS или других протоколов.

Вот список из 13 движков правил с открытым исходным кодом на Java, Drools, возможно, лучший из них. http://java-sources.org/open-source/rule-engines

Я знаю, что в ruleCore есть некоторые части, написанные на Python.Но API использует XML и ActiveMQ или веб-сервисы, поэтому он находится на более высоком уровне абстракции.

Nebri это самый простой способ написать правила для домашней автоматизации И другого программного обеспечения / машин.Вот пример выполнения отключения света:

class high_temp_shutdown(NebriOS):
    listens_to == ['shared.pebble_location'] 


    def check(self):
        # if pebble dongle is out or room, return true
        return shared.pebble_location > 3 # in meters

    def action(self):
        smartthings.lights(2,"off")

Это идеальный инструмент для автоматизации вашего дома, поскольку вы можете pip устанавливать существующие библиотеки для использования в вашем скрипте.Гнездо, умные штуковины, Sen.se и так далее.Это всего лишь Python!

И для более полного объяснения того, почему Python сам по себе не является механизмом правил, см. эта статья.Просто потому, что Python сам по себе может выполнять правила, у вас нет движка правил на руках.На самом деле это огромный архитектурный сдвиг.

Я пишу простой движок правил на python.Вы можете хранить свои правила в формате json или yaml string и использовать этот механизм правил для сопоставления правила с контекстом.

https://github.com/tclh123/rule

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top