Каков наиболее логичный метод выбора значения с учетом набора вложенных правил?и как мы храним это? - PullRequest
3 голосов
/ 01 октября 2010

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

Система, которую я создаю, будет отрабатывать гарантийные сроки, чтобы обеспечить установку продукта на основе некоторых критериев.Требуется создать набор возможных векторов (например, шаг установки, профиль, местоположение, тип материала и т. Д.) И чтобы эти векторы были собраны пользователем в древовидную структуру:

-- Profile == corrugate (warranty = 20 years)
  -- Pitch >= 0 && < 5 (warranty = 2 years)
  -- Pitch >= 5 && < 20 (warranty = 10 years)
-- Environment == coastal && distance <= 500 meters (warranty 2 years)

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

Прямо сейчас я могу видеть, что это хранится в виде дерева в базе данных (это приложение Rails) и просто написать какой-то метод, чтобы пройтись по дереву и решить, но я хотел знать, есть ли лучший способ решения этой проблемы?

Мне придется повторить себя позже в проекте, когда я также реализую другое дерево решений, которое решит, нуждается ли гарантийное приложение в дальнейшей проверке нашей командой по гарантии.В этом случае результат для каждого узла будет просто истинным или ложным.

Поскольку это довольно важная часть приложения, я бы хотел, чтобы структура была правильной в первый раз :) И, возможно, узнать что-то новое вместекстати :) 1012 *

Ответы [ 2 ]

0 голосов
/ 12 марта 2011

Я думаю, что дерево (или несколько деревьев - поскольку вы можете сравнивать только один векторный элемент за раз, прежде чем принимать решение), переводит эти данные очень интуитивно. Может быть более компактный способ сделать это, но если кто-то еще будет смотреть на этот код в будущем, метод дерева поможет им поддерживать его.

0 голосов
/ 01 февраля 2011

Я думаю, это то, что вы ищете: Деревья решений в Ruby - он даже использует аналогичный пример, основанный на некоторой подаче данных, принимает решение включить или отказатьсяпрограмма.Итак, основываясь на вашем примере - по определенным критериям решите, можно ли использовать гарантию или нет.Он использует драгоценный камень под названием 'решающее дерево'

Надежда, которая помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...