Fuzzy-rough feature selection algorithms

Currently, the code implements both forward selection, backward elimination, GA-based
search and ACO-based search. Available heuristics are dependency, boundary region-based,
fuzzy entropy, fuzzy gain ratio, delta measure, Cornelis' alpha measure.

The available options for the program are below:

Usage: java frfs2 <dataset> <options>

<options>
        -b              Fuzzy boundary region based search (default)
        -l              Fuzzy lower approximation based search
        -e              Fuzzy entropy based search
        -gr             Fuzzy gain ratio based search
        -delta          Slezak's delta measure based search
	-f		Cornelis' alpha measure based search
        -alpha <val>    Alpha, for alpha-decision reducts
	-reverse	Perform backward elimination (ReverseReduct)	
        -GA <pop> <gen> <mut> <crs>  GA-based search
        -ACO <its> <ants> <alpha> <beta> <update>  ACO-based search
	-vqrs <vals>	<vals> are alpha_u, beta_u
	-vqrs2 <vals>	Weak version of VQRS
        -n              Compute fuzzy transitive closure
        -s <val>        Fuzzy similarity
                         0 = Gaussian
                         1 = Triangular 1
                         2 = Triangular 2 (default)
                         3 = Crisp equivalence - use this for crisp data (= RSAR)
                         4 = Triangular 3
                         5 = Cornelis A
			 6 = Cornelis B
			 7 = Cornelis C
	-d <sim>	Fuzzy similarity for decision feature (values as above)
        -c <val>        Fuzzy connectives
                         1 = Max/Min
                         2 = Lukasiewicz (default)
                         3 = Algebraic
			 5 = Tm
	-comp <val>     Fuzzy connectives for relation composition (default = Lukasiewicz)
        -opt <val>      Levels of optimisation
                         0 = Compute full relations beforehand
                         1 = Compute partial relations (default)
                         2 = Compute relations on-the-fly

        -fuzzyDec       Calculate fuzzy sets for decision feature
        -discern        Calculate fuzzy discernibility matrix
        -core           Calculate core of the dataset
        -coreReduct     Start search using the core
        -isreduct <red> Calculates gamma for subset found in file <red>
        -v              Verbose mode
        -h              This help information

The '-n' option computes the transitive closure, which becomes computationally prohibitive 
for large datasets, and is not necessary for the Lukasiewicz connectives.


For example, to run the program using the cleveland.data file, type:

java frfs2 cleveland.data -alpha 0.9 -reverse -s 5

-l = use dependency (fuzzy lower approximation-based heuristic)
-reverse = perform backward elimination
-s 5 = Cornelis' fuzzy similarity

To perform forward selection, remove the parameter '-reverse'.

For fuzzy discernibility, use the -discern option and direct the output to a file. For example:


java frfs2 cleveland.data -s 5 -discern > fuzzyClauses.txt

The resulting fuzzy clauses will appear in the file 'fuzzyClauses.txt'. To search for fuzzy-rough
reducts using the fuzzy clauses:

java Search fuzzyClauses.txt