1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
#!/usr/bin/env bash
set -e
wai=$(dirname $(readlink -f "$0"))
scenarios="${wai}/../scenarios"
inputs="${wai}/../inputs.json"
simulator="make -C ${wai}/../ run"
parser="${wai}/../parser.awk"
results="${wai}/results.csv"
aheaders="simkey,wireless,wakeupfor"
avalues="none,none,none"
log_file="${wai}/logs/$(date +%s).org" && mkdir -p "${wai}/logs/"
run-simulation () {
# Generate inputs
$scenarios $seed $simtime $wakeupevery $wakeupfor $n_nodes $extended $hint $poff $pon $prx $ptx $datasize $bitrate > "$inputs"
# Init logs
echo -e "* seed=$seed simtime=$simtime wakeupevery=$wakeupevery wakeupfor=$wakeupfor n_nodes=$n_nodes extended=$extended hint=$hint poff=$poff pon=$pon prx=$prx ptx=$ptx datasize=$datasize bitrate=$bitrate \n" >> "${log_file}"
# Run simulations
if [ -e "$results" ]
then
$simulator 2>&1 | tee -a "${log_file}" | $parser | sed 1d | sed "s/$/,${avalues}/" >> "$results"
else
$simulator 2>&1 | tee -a "${log_file}" | $parser | sed "1 s/$/,${aheaders}/g" | sed "2,\$s/$/,${avalues}/" > "$results"
fi
}
# Default Parameters
seed=0
simtime=86400 # One day
wakeupevery=3600
wakeupfor=180
n_nodes=12
extended="false"
hint="false"
poff=0
pon=0.4
prx=0.16
ptx=0.16
datasize=1000000 # MB
bitrate="100kbps"
run-scenarios() {
# Configure number of seed per scenarios
nseed=100
# Baseline
echo "Baseline..."
avalues="baseline,$wireless,$wakeupfor"
for seed in $(seq 1 $nseed)
do
run-simulation
done
# Hint
echo "Hint..."
hint="true"
avalues="hint,$wireless,$wakeupfor"
for seed in $(seq 1 $nseed)
do
run-simulation
done
hint="false"
# Extended
echo "Extended..."
extended="true"
avalues="extended,$wireless,$wakeupfor"
for seed in $(seq 1 $nseed)
do
run-simulation
done
extended="false"
# Hint+Extended
echo "Hint + Extended..."
extended="true"
hint="true"
avalues="hintandextended,$wireless,$wakeupfor"
for seed in $(seq 1 $nseed)
do
run-simulation
done
extended="false"
hint="false"
}
# Clean previous runs
[ -e "${results}" ] && rm "${results}"
for wakeupfor in 60 180
do
# Lora
echo "----- Run Lora (wakeupfor=$wakeupfor) -----"
wireless="lora"
bitrate="50kbps"
pon=0.4
prx=0.16
ptx=0.16
run-scenarios
# NbIot
echo "----- Run NbIoT (wakeupfor=$wakeupfor) -----"
wireless="nbiot"
bitrate="200kbps"
pon=0.4
prx=0.65
ptx=0.65
run-scenarios
done
|