Je travaille sur un moteur de décision / d'évaluation de la règle. Par exemple: p>
entrée: client et toutes les infractions effectuées par le client p>
sortie: conséquences des infractions p>
Un cas d'échantillon serait: p>
Entrée: CLIENT (JHONNY CHIMPO, 999-00-1111), Infractions (Broke Windows, Boss giflé, Botter Team Lead dans son aine) P>
sortie: obtient le glissement rose p>
Donc, la pièce de code que je veux écrire évalue différentes infractions sur la base de règles de chaque infraction et d'une infraction combinée. Le code actuel est juste un labyrinthe de Si et d'autres déclarations. Je suis sûr que de tels problèmes d'entreprise sont courants. Quelle conception / modèle d'entreprise est généralement utilisée pour résoudre un problème comme celui-ci? P>
Est-ce le modèle de spécification? Je veux que le code soit ouvert pour l'extension, propre et flexible. P>
6 Réponses :
Je pense que vous essayez de développer un système expert. Vous pouvez vérifier le terme, puis vérifier les langages de programmation appropriés en tant que prolog + etc. p>
Je n'essaie pas de construire un système expert.
@PerpetualCoder En fait, ce que vous avez énuméré est précisément un système expert.
Un système expert n'est-ce pas aussi une machine d'apprentissage pour faire un travail spécifique?
Je peux vous suggérer un outil que nous avons utilisé pour résoudre un problème similaire. P>
Jetez un coup d'oeil à jboss Brools: http://www.jboss.org/drols/ p>
C'est un BRMS: Système de gestion des règles d'entreprise P>
Voici une vidéo introductive: http://www.jboss.com/products / Plateformes / BRMS / P>
J'essaie de développer dans la plate-forme .NET +1 pour mentionner le grand produit
essentiellement des règles commerciales ressemblent à Qu'en est-il de la catégorisation de toutes les infractions par sévérité à l'aide de scores, peut-être un bonus supplémentaire pour des "mauvais arbitres" fréquents, certaines infractions peuvent devenir barrées temporelles et quelle que soit la nécessité . p> Puis un brouillon d'un algorithme pourrait être: p> Ce serait directement en avant à l'aide de structures de données au lieu de nombreuses (éventuellement profondément imbriquées) si..then..elez des choses. p> p>
Le code actuel que nous avons est le labyrinthe de if-boucles
Je ne suis pas sûr que l'une des réponses ci-dessus a été aussi utile. P>
J'ai écrit des composants similaires à l'aide de Arbres d'expression A >. Vous pouvez construire des expressions Lambda qui représentent des prédicats, les compiler et les exécuter, tous de manière dynamique, puis déclencher une action en réponse. Cette approche est puissante, flexible et sort de toute l'horreur if / sinon (ce qui n'est certainement pas la voie à suivre). P>
Cependant, de quoi vous parlez vraiment est la programmation logique. Il existe de nombreuses implémentations de Prolog sur .NET. Prolog est une langue basée sur la logique, utilisée beaucoup pour les applications AI, qui commence à devenir sérieusement puissante une fois que vous avez la tête autour de son paradigme. p>
Regardez certains de ces .. p>
C'est quelque chose de vraiment intéressant. Je ne suis pas un fan de moteurs de règles d'entreprise là-bas non plus
Mais ..:) ... je ne suis pas un fan de prolog non .. je viens de le trouver incroyable :)
Vous pouvez essayer quelque chose de similaire à Ce "Moteur de règles" basé sur l'événement " p>
Je pense que tout moteur de règle à base d'algorithme à rééquipier fonctionnerait pour votre cas. Vous pouvez essayer des bourses. P>
Voulez-vous en écrire un? Jess Jessrules.com