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/alsregress -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    echo $REGRESS
53    # valgrind --leak-check=full $REGRESS # Just generate regression
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.*
60fi
61
62
63######################################
64# Generate Testing Data
65######################################
66NSAMPLE_TEST=10000
67XFILE_TEST="test_x.dat"
68GENTESTSAMPLES="$C3HOME/bin/random_sample -r $NSAMPLE_TEST -t $RVTYPE -c $DIM -l $LB -u $UB"
69
70echo "$GENTESTSAMPLES > $XFILE_TEST"
71$GENTESTSAMPLES > $XFILE_TEST
72
73######################################
74# Evaluate the true function
75######################################
76YFILE_TEST="test_y.dat"
77TESTVALSFUNC="$C3HOME/bin/simlib_util -f $FUNC -i $XFILE_TEST -n $NSAMPLE_TEST -o $YFILE_TEST"
78echo $TESTVALSFUNC
79$TESTVALSFUNC
80
81######################################
82# Evaluate the regressed function
83######################################
84EVALFT="$C3HOME/bin/ftstats -x $XFILE_TEST -f $FTFILE"
85echo $EVALFT
86$EVALFT > ftevals.dat
87
88######################################
89# Get Squared Error
90######################################
91error=$(awk 'FNR==NR { file1[NR]=$1; next; }; { diff=$1-file1[FNR]; sum+=diff^2; den+=file1[FNR]^2};
92  END { print sum/den; }' test_y.dat ftevals.dat)
93echo "Relative Error: $error"
94
95
96
97