CLASSPATH = /net/three/home/blue/kpray/bin/tomcat/webapps/Weka/weka-3-1-8/weka.jar:.

CLASSPATHFLAG = -classpath $(CLASSPATH)

MEMORYFLAG = -mx192m

DATAHOME = ../../data/

TRAINDATA = $(DATAHOME)census-income.data

# NOTE: always use the full data test set, it is only used once #
TESTDATA = $(DATAHOME)census-income.test

SIMPLEOPTIONS = -I 2000 -t 2.data -T 2.test

## do only 2 iterations through training exmaple set
QUICKOPTIONS = -I 2 -t census-income-normalized-short.data -T census-income-normalized.test

## emulate the old settings
OLDOPTIONS = -I 100 -E 0.3 -M 0.3 -t census-income-short.data -T census-income.test

## the past and current optimal settings ##
OPTIMALOPTIONS1 = -I 6000 -H 10 -E 0.0001 -M 0.0001 -t census-income-normalized-medium.data -T census-income-normalized.test

OPTIMALOPTIONS1A = -I 12000 -H 10 -E 0.0001 -M 0.0001 -t census-income-normalized-medium.data -T census-income-normalized.test

OPTIMALOPTIONS2 = -I 6000 -H 10 -E 0.0112 -M 0.0001 -t census-income-normalized-medium.data -T census-income-normalized.test

OPTIMALOPTIONS3 = -I 6000 -H 10 -E 0.0112 -M 0.0445 -t census-income-normalized-medium.data -T census-income-normalized.test

OPTIMALOPTIONS4 = -I 6000 -H 2 -E 0.0112 -M 0.0445 -t census-income-normalized-medium.data -T census-income-normalized.test

OPTIMALOPTIONS5 = -I 8000 -H 3 -E 0.0112 -M 0.0445 -t census-income-normalized-medium.data -T census-income-normalized.test

OPTIMALOPTIONS5A = -I 12000 -H 3 -E 0.0112 -M 0.0445 -t census-income-normalized-medium.data -T census-income-normalized.test

OPTIMALOPTIONS6 = -I 8000 -H 4 -E 0.0112 -M 0.0445 -t census-income-normalized-medium.data -T census-income-normalized.test

### Now for the tests and stuff ###

all : short medium

#################

test1 : BackPropagation.class census-income-normalized.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -t census-income-normalized.data -T census-income-normalized.test > test1.txt

#################
short2 : shorttest2-1000 shorttest2-2000 shorttest2-3000 shorttest2-4000 shorttest2-5000 shorttest2-6000

shorttest2-1000 : BackPropagation.class census-income-normalized-short.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 1000 -t census-income-normalized-short.data -T census-income-normalized.test > shorttest2-1000.txt

shorttest2-2000 : BackPropagation.class census-income-normalized-short.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 2000 -t census-income-normalized-short.data -T census-income-normalized.test > shorttest2-2000.txt

shorttest2-3000 : BackPropagation.class census-income-normalized-short.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 3000 -t census-income-normalized-short.data -T census-income-normalized.test > shorttest2-3000.txt

shorttest2-4000 : BackPropagation.class census-income-normalized-short.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 4000 -t census-income-normalized-short.data -T census-income-normalized.test > shorttest2-4000.txt

shorttest2-5000 : BackPropagation.class census-income-normalized-short.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 5000 -t census-income-normalized-short.data -T census-income-normalized.test > shorttest2-5000.txt

shorttest2-6000 : BackPropagation.class census-income-normalized-short.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 6000 -t census-income-normalized-short.data -T census-income-normalized.test > shorttest2-6000.txt

#################
medium2 : mediumtest2-1000 mediumtest2-2000 mediumtest2-3000 mediumtest2-4000 mediumtest2-5000 mediumtest2-6000 mediumtest2-7000 mediumtest2-8000 mediumtest2-9000 mediumtest2-10000

mediumtest2-1000 : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 1000 -t census-income-normalized-medium.data -T census-income-normalized.test > mediumtest2-1000.txt

mediumtest2-2000 : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 2000 -t census-income-normalized-medium.data -T census-income-normalized.test > mediumtest2-2000.txt

mediumtest2-3000 : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 3000 -t census-income-normalized-medium.data -T census-income-normalized.test > mediumtest2-3000.txt

mediumtest2-4000 : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 4000 -t census-income-normalized-medium.data -T census-income-normalized.test > mediumtest2-4000.txt

mediumtest2-5000 : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 5000 -t census-income-normalized-medium.data -T census-income-normalized.test > mediumtest2-5000.txt

mediumtest2-6000 : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 6000 -t census-income-normalized-medium.data -T census-income-normalized.test > mediumtest2-6000.txt

mediumtest-6000a : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 6000 -E 0.01 -S 1669713379 -H 2 -M 0.01 -t census-income-normalized-medium.data -T census-income-normalized.test > mediumtest-6000a.txt

mediumtest-6000a-zero : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 6000 -E 0.01 -S 1669713379 -H 2 -M 0.01 -t census-income-normalized-medium.data -T census-income-normalized.test > mediumtest-6000a-zero.txt

mediumtest-6000b : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 12000 -E 0.01 -S 1669713379 -H 2 -M 0.01 -t census-income-normalized-medium.data -T census-income-normalized.test > mediumtest-6000b.txt

mediumtest2-7000 : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 7000 -t census-income-normalized-medium.data -T census-income-normalized.test > mediumtest2-7000.txt

mediumtest2-8000 : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 8000 -t census-income-normalized-medium.data -T census-income-normalized.test > mediumtest2-8000.txt

mediumtest2-9000 : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 9000 -t census-income-normalized-medium.data -T census-income-normalized.test > mediumtest2-9000.txt

mediumtest2-10000 : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation -I 10000 -t census-income-normalized-medium.data -T census-income-normalized.test > mediumtest2-10000.txt

#################

##### optimal (to date) tests #####

optimal-test-1 : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation $(OPTIMALOPTIONS1) > optimal-test-1.txt

optimal-test-1a : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation $(OPTIMALOPTIONS1A) > optimal-test-1a.txt

optimal-test-2 : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation $(OPTIMALOPTIONS2) > optimal-test-2.txt

optimal-test-3 : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation $(OPTIMALOPTIONS3) > optimal-test-3.txt

optimal-test-4 : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation $(OPTIMALOPTIONS4) > optimal-test-4.txt

optimal-test-5 : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation $(OPTIMALOPTIONS5) > optimal-test-5.txt

optimal-test-5a : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation $(OPTIMALOPTIONS5A) > optimal-test-5a.txt

optimal-test-6 : BackPropagation.class census-income-normalized-medium.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation $(OPTIMALOPTIONS6) > optimal-test-6.txt

#################

fulltest-1 : BackPropagation.class census-income-normalized.data census-income-normalized.test
	java $(CLASSPATHFLAG) $(MEMORYFLAG) BackPropagation -I 15000 -H 3 -E 0.001 -M 0.0445 -t census-income-normalized.data -T census-income-normalized.test > fulltest-1.txt

fulltest-2 : BackPropagation.class census-income-normalized.data census-income-normalized.test
	java $(CLASSPATHFLAG) $(MEMORYFLAG) BackPropagation -I 15000 -H 2 -E 0.001 -M 0.0445 -t census-income-normalized.data -T census-income-normalized.test > fulltest-2.txt

fulltest-3 : BackPropagation.class census-income-normalized.data census-income-normalized.test
	java $(CLASSPATHFLAG) $(MEMORYFLAG) BackPropagation -I 15000 -H 4 -E 0.001 -M 0.0445 -t census-income-normalized.data -T census-income-normalized.test > fulltest-3.txt

fulltest-4 : BackPropagation.class census-income-normalized.data census-income-normalized.test
	java $(CLASSPATHFLAG) $(MEMORYFLAG) BackPropagation -I 25000 -H 3 -E 0.001 -M 0.0445 -t census-income-normalized.data -T census-income-normalized.test > fulltest-4.txt

#################

paramselection-all : BackPropagation.class census-income-normalized-short.data census-income-normalized.test
	java $(CLASSPATHFLAG) weka.classifiers.CVParameterSelection -X 4 -W BackPropagation -P "I 1000 50000 10" -P "E 0.0001 0.1 10" -P "M 0.0001 0.1 10" -P "H 1 20 20" -t census-income-normalized-short.data -T census-income-normalized.test > paramselection-all.txt

paramselection-learn : BackPropagation.class census-income-normalized-short.data census-income-normalized.test
	java $(CLASSPATHFLAG) weka.classifiers.CVParameterSelection -X 4 -W BackPropagation -P "E 0.0001 0.1 10" -t census-income-normalized-short.data -T census-income-normalized.test > paramselection-learn.txt

paramselection-momentum : BackPropagation.class census-income-normalized-short.data census-income-normalized.test
	java $(CLASSPATHFLAG) weka.classifiers.CVParameterSelection -X 4 -W BackPropagation -P "M 0.0001 0.1 10" -t census-income-normalized-short.data -T census-income-normalized.test > paramselection-momentum.txt

paramselection-hidden : BackPropagation.class census-income-normalized-short.data census-income-normalized.test
	java $(CLASSPATHFLAG) weka.classifiers.CVParameterSelection -X 4 -W BackPropagation -P "H 1 20 20" -t census-income-normalized-short.data -T census-income-normalized.test > paramselection-hidden.txt

#################

#################
##################################
#################

## This uses a data set with only 2 attributes, one of which is the
## class attribute
simpletest :  BackPropagation.class
	java $(CLASSPATHFLAG) BackPropagation $(SIMPLEOPTIONS) > simpletest.txt

## let's have a short test so we can trouble shoot quickly
quicktest : BackPropagation.class census-income-normalized-short.data census-income-normalized.test
	java $(CLASSPATHFLAG) BackPropagation $(QUICKOPTIONS) > quicktest.txt

## old test for comparing old options
oldtest :
	java $(CLASSPATHFLAG) BackPropagation $(OLDOPTIONS) > oldtest.txt

## Gotta build stuff ##

## let's have a normailized data set
census-income-normalized.data :
	java weka.filters.NormalizationFilter -b -c last -i $(TRAINDATA) -o census-income-normalized.data -r $(TESTDATA) -s census-income-normalized.test

census-income-normalized.test : 
	java weka.filters.NormalizationFilter -b -c last -i $(TRAINDATA) -o census-income-normalized.data -r $(TESTDATA) -s census-income-normalized.test

census-income-normalized-short.data : census-income-normalized.data
	head -535 census-income-normalized.data > census-income-normalized-short.data

census-income-normalized-medium.data : census-income-normalized.data
	head -5035 census-income-normalized.data > census-income-normalized-medium.data

BackPropagation.class :	BackPropagation.java
	javac $(CLASSPATHFLAG) BackPropagation.java

clean :
	rm -f BackPropagation.class
	rm -f test1.txt

