some  Software

Ceteris Paribus Preference Engine:

 Overview

 Specs:

This is the "iPreferenceLibrary", an interface to the preference library. There are five important interfaces in the preference library: IAtom, IModel, IOperator, IRelation, and IRelationSet. IAtom is for defining the atoms of the feature space, those atoms over which a preference is expressed. IModel allows models to be defined, where a model is a collection of boolean truth assignments to Atoms. There is currently one type of IOperator, the "strictly preferred to" operator. A Relation is composed of an Operator and two Models, where the LHS-Model is the left operand of the Operator, and the RHS-Model is the right operand of the
Operator. A Relation is a preference or a preference rule. IRelationSet allows creations of a collection of relations. Once a IRelationSet is defined, a utility function can be constructed on that set, and utilities of models over the set of atoms used therein can be computed.

Each interface has a corresponding implementation class. These are CPAtom, CPModel, CPOperator, CPRelation, and CPRelationSet, respectively. See the API for the more details.