Механизм правил на C или Python

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

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

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

EDIT: под механизмом правил (механизм логического вывода) я подразумеваю реализацию RETE или аналогичный.


person Yanik    schedule 17.12.2009    source источник
comment
stackoverflow.com/questions/467738/ google.com/   -  person Alex Brasetvik    schedule 18.12.2009
comment
Спасибо, я видел этот вопрос, и я не ищу реализацию нового механизма правил. Но ссылку на CLIPS я не увидел с первого раза :)   -  person Yanik    schedule 18.12.2009


Ответы (10)


При поиске механизма правил на основе RETE в Python либо Pyke, либо PyCLIPS может быть тем, что вы хотели бы использовать.

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

person ardsrk    schedule 18.12.2009
comment
ПиКЛИПС это. И очень легко перевести мои правила Jess в CLIPS. - person Yanik; 21.12.2009

Вы можете посмотреть CLIPS, как уже было предложено, или, если вы хотите заплатить деньги или нуждаетесь в них, Rete2. Я использовал CLIPS в прошлом в Unix и успешно внедрил его в другие приложения.

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

person Jackson    schedule 18.12.2009

ruleby — это механизм правил, написанный на рубине. Это было предметом презентации на rubyhoedown 2008: ruleby-the-rule-engine-for-ruby

person miku    schedule 17.12.2009

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

http://www.mindswap.org/~katz/pychinko/

person codekaizen    schedule 17.12.2009
comment
Спасибо. Знаете ли вы какие-либо списки рассылки или irc-каналы для сообщества? Похоже, он больше не поддерживается... А вы слышали о pyCLIPS (я только что узнал)? - person Yanik; 18.12.2009

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

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

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

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

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

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

person S.Lott    schedule 18.12.2009
comment
Я не уверен, что вы имеете в виду, но я думаю, вы могли бы сказать, что любой полный язык Тьюринга на самом деле является механизмом правил. Я, вероятно, должен был упомянуть алгоритм RETE, который работает намного быстрее, чем проверка факта по всем правилам. Поскольку я не эксперт по Python, я не уверен, как вы это сделаете. У вас есть ссылка, где это объясняется? - person Yanik; 18.12.2009
comment
@Yanik: Если вывод является частью проблемного пространства, обновите вопрос, включив в него этот факт. Обработка обязательных правил не требует логического вывода. Если вам требуется вывод, обновите свой вопрос, пожалуйста, четко укажите это. - person S.Lott; 18.12.2009
comment
Если вы ищете вывод о своих правилах, вам будет полезно взглянуть на Pyke [ pyke.sourceforge.net ]. - person ardsrk; 18.12.2009
comment
@ardsrk: Пожалуйста, опубликуйте свой комментарий как отдельный ответ, чтобы я мог проголосовать за него. - person S.Lott; 18.12.2009

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

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

person Nick    schedule 20.12.2009

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

person Peter Lawrey    schedule 20.12.2009

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

person Stjoan    schedule 26.01.2010

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")

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

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

person Adam    schedule 18.09.2014

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

https://github.com/tclh123/rule

person Harry Lee    schedule 14.06.2019