scientio logo Scientio
Sign Up/In
 

 

Fuzzy inference engine demo

Xml Miner, as well as performing data and text mining, also contains the essential ingredients of a Fuzzy Logic Inference Engine. Such an engine has many of the characteristics of an Expert System, without some of the complexity and with predictable run-times. XML Miner mines data and text to extract rules that explain the relationships found in the training data set. In order to re-use these rules, The XML Miner web service also exposes 'Evaluate' methods  which permit the user to load a rule set, and to evaluate it on data provided directly, or from an XML document. We've extended the capabilities of this evaluation method and our rule representation language Metarule, so that full business rules type functionality is also available.

The XmlMiner inference engine is unique in fully supporting Fuzzy Arithmetic, an extension to fuzzy logic that permits numerical values with associated tolerance or uncertainty to be processed as if they were normal numbers. This means that users can perform extensive 'what if' analysis in a single pass. So if the value of any variables can only be pinned down to a range, the user can enter that range into XRule, and the calculations will be performed on the range value, and of course the result will also be a range. While this kind of thing is easy to do without fuzzy arithmetic with one or two variables, once you get several variables that are known only as ranges or distributions simulation becomes very complex and slow techniques like Monte Carlo simulation are frequently used. This demonstration is intended to illustrate how fuzzy arithmetic can dramatically simplify this process.

The example

COCOMOII is a methodology for predicting the cost, time required, and staffing needs of a software design project. There are lots of excellent implementations, but to our knowledge they are all constructed with conventional - i.e. non-fuzzy - arithmetic. The structure of COCOMOII is not particularly complex. However the user is required to know in advance how many lines of code there will be in the final software product, as well as supply various qualitative judgments on the skills of the team and the complexity of the project. There are around 30 variables used in the prediction. The rule set used to implement COCOMOII is shown below:

if TYPE is Early Design then EFFORT will be equal to A * SIZE ^ E * product( RCPX , RUSE , PDIF , PERS , PREX , FCIL , SCED ) (confidence 1.00)
if TYPE is Post-Architecture then EFFORT will be equal to A * SIZE ^ E * product( RELY , DATA , CPLX , RUSE , DOCU , TIME , STOR , PVOL , ACAP , PCAP , PCON , APEX , PLEX , LTEX , TOOL , SITE Collocation , SITE communication , SCED ) (confidence 1.00)
if anything then E will be equal to B + SFScale * sum( PREC , FLEX , RESL , TEAM , PMAT ) (confidence 1.00)
if anything then SIZE will be equal to SLOC / thousand (confidence 1.00)
if anything then F will be equal to D + SCHScale * ( E - B ) (confidence 1.00)
if anything then DEVTIME will be equal to C * EFFORT ^ F (confidence 1.00)
if anything then COST will be equal to Hourly rate * Hours per month * EFFORT (confidence 1.00)

To use the demonstration enter values for each box or select the default values. Then press the "Calculate" button below and the results will be generated.
The input names are somewhat cryptic. They are taken directly from the definition of COCOMOII, which is described in the book "Software cost estimation with COCOMOII, Boehm, B.W. et al., Prentice Hall, ISBN 0130266922".
Note that, unlike the other implementations, you can enter a comma-delimited range rather than a single value for numeric inputs (e.g. 15000,17000), and where you can select a qualitative value, like "very low" or "nominal", you can select more than one. Thus if you select "low" and "nominal", you are saying to the system it could be either low or nominal. If you select "very low" and "very high" you are saying that the value could be almost anything. Obviously the more exactly you specify your views of the project's parameters, the narrower the range of the predicted times and costs is going to be.
You should at least supply numeric values for SLOC, the number of lines of code, and Hourly Rate.

Key:

ACAPAnalyst capability APEXApplications experience
COST Total cost in local currency CPLX Product complexity
DATATest database size DEVTIME Development time in months
DOCUDocumentation match to life cycle needs FCIL Facilities
Hourly rate Hourly rate in local currency LTEX Language and tool experience
PCAPProgrammer capability PCONPersonnel continuity
PDIF Platform difficulty PERS Personnel capability
PLEX Platform experience PREX Personnel experience
PVOLPlatform volatility RELYRequired software reliability
SCEDSchedule compression SITEMultisite development
SLOC Number of lines of code STOR Main storage constraint
RCPX Product reliability & complexity RUSE Developed for reusability
TIME Execution time constraints TOOL Use of software tools



DOCU
APEX
SCED
TEAM
PERS
PCAP
DATA
PCON
PLEX
RELY
FLEX
PDIF
PVOL
PREX
RESL
STOR
RCPX
PREC
TYPE
RUSE
TOOL
SITE communication
LTEX
SLOC
FCIL
CPLX
PMAT
TIME
SITE Collocation
ACAP
Hourly rate




Results