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 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
import Misc
from StatisticReader_SolvingTimeReader import SolvingTimeReader
from StatisticReader_TimeLimitReader import TimeLimitReader
class TestRun:
'''
represents the collected data of a particular log (.out) file
'''
solufilename = ''
testsetname = ''
filename = ''
data = {}
solufiledata = {}
problist = []
nprobs = 0
settings = 'default'
version = ''
lpsolver = ''
solver = ''
datacollected = False
INFINITY = 1e20
solufile_err = 'ERROR: No Solufile known'
def __init__(self, filename = '', solufilename = '', testsetname = '' ):
if solufilename != '':
self.solufilename = solufilename
if testsetname != '':
self.testsetname = testsetname
if filename != '':
self.filename = filename
self.data = {}
self.solufiledata = {}
self.problist= []
self.nprobs = 0
self.settings = ''
self.version = ''
self.lpsolver = ''
def setDataCollected(self, datacollected):
self.datacollected = datacollected
def addProblem(self, probname):
assert not (probname in self.problist)
assert not (probname in self.data.keys())
#print probname
self.problist.append(probname)
self.data[probname] = {}
self.nprobs = self.nprobs + 1
def __addData(self, probname, datakey, datum):
assert probname in self.data.keys()
if datakey in self.data[probname].keys():
print self.data[probname].keys(), datakey
assert not datakey in self.data[probname].keys()
self.data[probname][datakey]= datum
def addData(self, data):
assert data != None
probname, datakey, datum = data
self.addInternalData(probname, datakey, datum)
def addInternalData(self, probname, datakey, datum):
if not (probname in self.problist):
self.addProblem(probname)
self.__addData(probname, datakey, datum)
def problemGetName(self, index):
return self.problist[index]
def problemGetData(self, probname, datakey):
return self.data[probname][datakey]
def problemlistGetData(self, problemlist, datakey, numeric=True):
array=[]
for probname in problemlist:
data = self.problemGetData(probname, datakey)
if numeric:
data = float(data)
array.append(data)
return array
def getSettings(self):
return self.settings
def getVersion(self):
return self.version
def getLpSolver(self):
return self.lpsolver
def getIdentification(self):
return self.solver + '('+self.getVersion() + ')' + self.getLpSolver() + ':' + self.getSettings()
def getShortIdentification(self, char='_', maxlength=-1):
return Misc.cutString(self.getSettings(), char, maxlength)
def isProblemSolved(self, probname):
return True
def isProblemFeasible(self, probname):
return True
def problemGetIndex(self, probname):
return self.problist.index(probname)
def timeLimitHit(self, probname):
return self.data[probname][SolvingTimeReader.datakey] - self.data[probname][TimeLimitReader.datakey] >= 0
def getTestset(self):
self.testsetname
def problemGetOptimalSolution(self, solufileprobname):
if self.solufiledata == {}:
raise self.solufile_err
objval = self.solufiledata[solufileprobname][0]
return objval
def problemGetSoluFileStatus(self, solufileprobname):
if self.solufiledata == {}:
raise self.solufile_err
status = self.solufiledata[solufileprobname][1]
return status
|