small changes to the tests to get some initial results

This commit is contained in:
Bart Cools 2014-07-01 13:33:35 +02:00
parent 41a5b5275b
commit b1426dd31d
2 changed files with 96 additions and 69 deletions

113
batch.py

@ -1,5 +1,7 @@
from matplotlib import pyplot
from os import listdir
def is_numeric(x):
try:
float(x)
@ -7,42 +9,95 @@ def is_numeric(x):
return False
return True
avg_lap_time = [0]*50
avg_position = [0]*50
avg_speed = [0]*50
avg_top = [0]*50
total_rescued = [0]*50
#for entry in ['sara','tux','elephpant','pidgin']:
avg_lap_time = {}
avg_pos = {}
avg_speed = {}
avg_top = {}
total_rescued = {}
tests = len(listdir('../batch'))-1
for file in listdir('../batch'):
if (file == '.DS_Store'):
continue
f = open('../batch/'+file,'r')
"""
'''
name_index = file.find('.')
name = str(file[:name_index])
kart_name = str(file[:name_index])
first = file.find('.',name_index+1)
numkarts = int(file[name_index+1:first])
track_name = file[name_index+1:first]
second = file.find('.',first+1)
laps = int(file[first+1:second])
third = file.find('.',second+1)
run = int(file[second+1:third])
"""
mass = int(file[:file.find('.')])
contents = f.readlines()
contents = contents[2:contents.index("[debug ] profile: \n")-1]
content = [s for s in contents if "sara" in s]
data = [float(x) for x in content[0].split() if is_numeric(x)]
avg_lap_time[(mass-50)/10] += (data[2]/2)/5
avg_position[(mass-50)/10] += data[1]/5
avg_speed[(mass-50)/10] += data[3]/5
avg_top[(mass-50)/10] += data[4]/5
total_rescued[((mass-50)/10)] += data[7]
print("total rescue")
for i in range(len(avg_lap_time)):
print(i*10+50, total_rescued[i])
run = int(file[first+1:second])
'''
track_name = "snowmountain"
kart_names = ["gnu", "sara", "tux", "elephpant"]
if track_name == "snowmountain":
contents = f.readlines()
'''
contents = contents[2:contents.index("[debug ] profile: \n")-1]
content = [s for s in contents if kart_name in s]
data = [float(x) for x in content[0].split() if is_numeric(x)]
if kart_name not in avg_lap_time:
avg_lap_time[kart_name] = []
avg_pos[kart_name] = []
avg_speed[kart_name] = []
avg_top[kart_name] = []
total_rescued[kart_name] = []
avg_lap_time[kart_name].append(data[2]/4)
avg_pos[kart_name].append(data[1])
avg_speed[kart_name].append(data[3])
avg_top[kart_name].append(data[4])
total_rescued[kart_name].append(data[7])
'''
"""avg_lap_time[i], avg_position[i], avg_speed[i], avg_top[i],"""
contents = contents[2:6] #TODO check if all is in here
for kart in kart_names:
content = [s for s in contents if kart in s]
data = [float(x) for x in content[0].split() if is_numeric(x)]
if kart not in avg_lap_time:
avg_lap_time[kart] = []
avg_pos[kart] = []
avg_speed[kart] = []
avg_top[kart] = []
total_rescued[kart] = []
avg_lap_time[kart].append(data[2]/4)
avg_pos[kart].append(data[1])
avg_speed[kart].append(data[3])
avg_top[kart].append(data[4])
total_rescued[kart].append(data[7])
tests = len(avg_lap_time["gnu"])
print total_rescued
for kart in kart_names:
print "rescues for ", kart , ": ", sum(total_rescued[kart])/tests
print "avg_lap_time for " , kart , ": " , sum(avg_lap_time[kart])/tests
print "avg_pos for " , kart , ": " , sum(avg_pos[kart])/tests
print "avg_speed for " , kart , ": " , sum(avg_speed[kart])/tests
print "avg_top for " , kart , ": " , sum(avg_top[kart])/tests
pyplot.subplot(2,2,1)
pyplot.plot(list(xrange(tests)),avg_pos["gnu"], "b-")
pyplot.xlabel("tests")
pyplot.ylabel("gnu")
pyplot.subplot(2,2,2)
pyplot.plot(list(xrange(tests)),avg_pos["sara"], "r-")
pyplot.xlabel("tests")
pyplot.ylabel("sara")
pyplot.subplot(2,2,3)
pyplot.plot(list(xrange(tests)),avg_pos["elephpant"], "y-")
pyplot.xlabel("tests")
pyplot.ylabel("elephpant")
pyplot.subplot(2,2,4)
pyplot.plot(list(xrange(tests)),avg_pos["tux"], "g-")
pyplot.xlabel("tests")
pyplot.ylabel("tux")
pyplot.show()

52
test.sh

@ -1,47 +1,19 @@
#!/bin/bash
mkdir -p ../batch
#tracks='snowmountain city lighthouse olivermath hacienda startrack farm zengarden'
#karts='gnu tux sara elephpant'
laps=4
tracks='snowmountain city lighthouse olivermath hacienda startrack farm zengarden'
karts='beastie sara elephpant tuxley'
laps=1
for track in $tracks; do
#beastie is the current kart
#sara is the light kart
#tuxley is the medium kart
#elephpant is the heavy kart
for kart in $karts; do
for run in {1..50}; do
#for track in $tracks; do
#for kart in $karts; do
for run in {901..1500}; do
for lap in $laps; do
./cmake_build/bin/supertuxkart.app/Contents/MacOS/supertuxkart -R --mode=3 --numkarts=1 --track=$track --with-profile --profile-laps=$lap --kart=$kart --ai=beastie,beastie,beastie --no-graphics > /dev/null
grep "profile" ~/Library/Application\ Support/SuperTuxKart/stdout.log > ../batch/$track.$kart.$run.txt
./cmake_build/bin/supertuxkart.app/Contents/MacOS/supertuxkart -R --mode=3 --numkarts=4 --track=snowmountain --with-profile --profile-laps=4 --kart=gnu --ai=sara,tux,elephpant --no-graphics > /dev/null
#./cmake_build/bin/supertuxkart.app/Contents/MacOS/supertuxkart -R --mode=3 --numkarts=4 --track=$track --with-profile --profile-laps=$lap --kart=$kart --ai=beastie,beastie,beastie --no-graphics > /dev/null
#grep "profile" ~/Library/Application\ Support/SuperTuxKart/stdout.log > ../batch/$kart.$track.$run.txt
grep "profile" ~/Library/Application\ Support/SuperTuxKart/stdout.log > ../batch/faceoff.$run.txt
done
done
done
done
#for track in ../stk-assets/tracks/*/track.xml; do
# grep "internal" "$track"
# if grep -q "internal" "$track" ; then
# continue;
# else
# if grep -q "arena" "$track" ; then
# continue;
# else
# if grep -q "soccer" "$track" ; then
# continue;
# else
# a=${track%%/track.xml};
# trackname=${a##../stk-assets/tracks/};
# fi
# fi
# fi
# if [ $trackname = "minel" ] || [ $trackname = "mines" ]; then
# continue;
# fi
# done
#done