|
|
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:
|
ACAP | Analyst capability |
APEX | Applications experience |
|
COST |
Total cost in local currency |
CPLX |
Product complexity |
|
DATA | Test database size |
DEVTIME |
Development time in months |
|
DOCU | Documentation match to life cycle needs |
FCIL |
Facilities |
|
Hourly rate |
Hourly rate in local currency |
LTEX |
Language and tool experience |
|
PCAP | Programmer capability |
PCON | Personnel continuity |
|
PDIF |
Platform difficulty |
PERS |
Personnel capability |
|
PLEX |
Platform experience |
PREX |
Personnel experience |
|
PVOL | Platform volatility |
RELY | Required software reliability |
|
SCED | Schedule compression |
SITE | Multisite 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 |
Results
|
|