1# C3HOME=~/Documents/c3
2# C3HOME=~/Software/c3
3
4######################################
5# Function Information
6######################################
7RVTYPE=uniform
8DIM=5
9LB=0.0
10UB=1.0
11FUNC=3
12
13######################################
14# Regression options (order=5,rank=4 for profile data)
15######################################
16CV=0
17MAXORDER=5
18RANK=4
19VERBOSE=2
20FTFILE="trainedft.c3"
21
22######################################
23# Generate Training Data (1000 for profile data)
24######################################
25
26# Sample training data
27NSAMPLE=1000
28FILENAME="trainingx.dat"
29GENSAMPLES="$C3HOME/bin/random_sample -r $NSAMPLE -t $RVTYPE -c $DIM -l $LB -u $UB"
30
31echo "$GENSAMPLES > $FILENAME"
32$GENSAMPLES > $FILENAME
33
34# Function Evaluation
35EVALFILE="trainingy.dat"
36EVALFUNC="$C3HOME/bin/simlib_util -f $FUNC -i $FILENAME -n $NSAMPLE -o $EVALFILE"
37
38echo $EVALFUNC
39$EVALFUNC
40
41######################################
42# Perform Regression
43######################################
44REGRESS="$C3HOME/profiling/regress/bin/aioregress -x $FILENAME -y $EVALFILE -m $MAXORDER -r $RANK -v $VERBOSE -o $FTFILE"
45
46if [ $CV == 1 ]
47then
48   CVPARAM="--cv-rank 2 --cv-rank 4 --cv-rank 6 --cv-num 2 --cv-num 4 --cv-num 6 --cv-kfold 5 "
49   echo $REGRESS $CVPARAM
50   $REGRESS $CVPARAM
51else
52
53    echo $REGRESS
54    time $REGRESS # Just generate regression
55
56    # Do profiling
57    # valgrind --tool=callgrind $REGRESS
58    # python $C3HOME/profiling/gprof2dot.py -f callgrind callgrind.out.* | dot -Tsvg -o output.svg
59    # rm callgrind.out.*
60
61    #Do profiling
62    # valgrind --tool=callgrind --simulate-cache=yes $REGRESS
63fi
64
65
66######################################
67# Generate Testing Data
68######################################
69NSAMPLE_TEST=10000
70XFILE_TEST="test_x.dat"
71GENTESTSAMPLES="$C3HOME/bin/random_sample -r $NSAMPLE_TEST -t $RVTYPE -c $DIM -l $LB -u $UB"
72
73echo "$GENTESTSAMPLES > $XFILE_TEST"
74$GENTESTSAMPLES > $XFILE_TEST
75
76######################################
77# Evaluate the true function
78######################################
79YFILE_TEST="test_y.dat"
80TESTVALSFUNC="$C3HOME/bin/simlib_util -f $FUNC -i $XFILE_TEST -n $NSAMPLE_TEST -o $YFILE_TEST"
81echo $TESTVALSFUNC
82$TESTVALSFUNC
83
84######################################
85# Evaluate the regressed function
86######################################
87EVALFT="$C3HOME/bin/ftstats -x $XFILE_TEST -f $FTFILE"
88echo $EVALFT
89$EVALFT > ftevals.dat
90
91######################################
92# Get Squared Error
93######################################
94error=$(awk 'FNR==NR { file1[NR]=$1; next; }; { diff=$1-file1[FNR]; sum+=diff^2; den+=file1[FNR]^2};
95  END { print sum/den; }' test_y.dat ftevals.dat)
96echo "Relative Error: $error"
97
98
99
100