Exemplo n.º 1
0
    def get_nextcase(self):
        # construct directives
        NNcases = []
        while len(self.casenums) < State.cases['size']:
            casenum, casenumseq, directs, objs = get_directs(
                self.selectfunc, self.prefunc, self.postfunc)
            predict = None

            if casenum in self.casenums or casenum in NNcases:
                continue
            elif len(self.casenums) < self.NN_min_dataset_size or len(
                    self.ranking) == 0:
                break
            else:
                NNcases.append((casenum, casenumseq, directs, objs))
                if len(NNcases) < self.NN_basket_size: continue
                casenum, casenumseq, directs, objs, predict = self.NN_get_nextcase(
                    NNcases)
                break

            if casenum in self.casenums: continue
            break

        self.casenums.append(casenum)
        return Case(self,
                    casenum=casenum,
                    caseorder=len(self.casenums),
                    directs=directs,
                    caseidxseq=casenumseq,
                    objs=objs,
                    predict=predict)
Exemplo n.º 2
0
    def __init__(self):
        self.refcase = None
        self.ranking = [] # (casenum, caseorder, performance )
        self.failed = [] # (casenum, caseorder, performance )
        self.casenums = []

        # configure for case generation
        if State.direct.has_key('casegen'):
            if len(State.direct['casegen'])!=1:
                raise UserException('Only one CASEGEN directive is allowed')
            sub = State.direct['casegen'][0][0] # (sub, stmt, span)
            subsub = sub.cases[0][0][0]
            item = SrcFile.applymap(subsub.case[0][0][0])
            attrs = SrcFile.applymap(subsub.case[0][1])

            if item=='rand':
                self.selectfunc, self.prefunc, self.postfunc, self.updatefunc = casegen_functions_random
            elif item=='dtree':
                self.selectfunc, self.prefunc, self.postfunc, self.updatefunc = casegen_functions_dtree
            else: raise UserException('%s is not valid cage generation algorithm'%item)
        else:
            self.selectfunc, self.prefunc, self.postfunc, self.updatefunc = casegen_functions_random

        # configure for measurment
        self.measure = {}
        for sub, stmt, span in State.direct['measure']:
            for subsub in sub.cases[0][0]:
                item = SrcFile.applymap(subsub.case[0][0][0])
                attrs = SrcFile.applymap(subsub.case[0][1])
                self.measure[item] = attrs

        # configure for verification
        self.verify = {}
        for sub, stmt, span in State.direct['verify']:
            for subsub in sub.cases[0][0]:
                item = SrcFile.applymap(subsub.case[0][0][0])
                attrs = SrcFile.applymap(subsub.case[0][1])
                self.verify[item] = attrs

        self.rank_var = State.direct['rank'][0][0].cases[0][0][0].case[0][0][0]
        self.rank_attrs = State.direct['rank'][0][0].cases[0][0][0].case[0][1]

        # build Neural Network
        casenum, casenumseq, directs, objs = get_directs( self.selectfunc, self.prefunc, self.postfunc)

        self.casesizes = []
        for caseidx, caseobj in casenumseq:
            self.casesizes.append(max(1, int(math.ceil(math.log(caseobj.size, 2)))))
        self.NN_input_size = sum(self.casesizes)
        self.NN_hidden_layers = 4
        self.NN_target_size = 1

        self.NN_net = buildNetwork( self.NN_input_size, self.NN_hidden_layers, self.NN_target_size, bias = True )
        self.NN_trainer = BackpropTrainer(self.NN_net, momentum=0.1, weightdecay=0.01, learningrate=0.01)
        self.NN_ds = SupervisedDataSet( self.NN_input_size, self.NN_target_size )

        self.NN_basket_size = 1000
        self.NN_min_dataset_size = min(20, State.cases['size'])
        self.NN_amp_factor = 1.0
Exemplo n.º 3
0
    def get_nextcase(self):
        # construct directives
        NNcases = []
        while len(self.casenums)<State.cases['size']:
            casenum, casenumseq, directs, objs = get_directs( self.selectfunc, self.prefunc, self.postfunc)
            predict = None

            if casenum in self.casenums or casenum in NNcases:
                continue
            elif len(self.casenums)<self.NN_min_dataset_size or len(self.ranking)==0:
                break
            else:
                NNcases.append((casenum, casenumseq, directs, objs))
                if len(NNcases)<self.NN_basket_size: continue
                casenum, casenumseq, directs, objs, predict = self.NN_get_nextcase(NNcases)
                break
       
            if casenum in self.casenums: continue
            break
        
        self.casenums.append(casenum)
        return Case( self, casenum=casenum, caseorder=len(self.casenums), directs=directs, caseidxseq=casenumseq, objs=objs, predict=predict )
Exemplo n.º 4
0
    def __init__(self):
        self.refcase = None
        self.ranking = []  # (casenum, caseorder, performance )
        self.failed = []  # (casenum, caseorder, performance )
        self.casenums = []

        # configure for case generation
        if State.direct.has_key('casegen'):
            if len(State.direct['casegen']) != 1:
                raise UserException('Only one CASEGEN directive is allowed')
            sub = State.direct['casegen'][0][0]  # (sub, stmt, span)
            subsub = sub.cases[0][0][0]
            item = SrcFile.applymap(subsub.case[0][0][0])
            attrs = SrcFile.applymap(subsub.case[0][1])

            if item == 'rand':
                self.selectfunc, self.prefunc, self.postfunc, self.updatefunc = casegen_functions_random
            elif item == 'dtree':
                self.selectfunc, self.prefunc, self.postfunc, self.updatefunc = casegen_functions_dtree
            else:
                raise UserException(
                    '%s is not valid cage generation algorithm' % item)
        else:
            self.selectfunc, self.prefunc, self.postfunc, self.updatefunc = casegen_functions_random

        # configure for measurment
        self.measure = {}
        for sub, stmt, span in State.direct['measure']:
            for subsub in sub.cases[0][0]:
                item = SrcFile.applymap(subsub.case[0][0][0])
                attrs = SrcFile.applymap(subsub.case[0][1])
                self.measure[item] = attrs

        # configure for verification
        self.verify = {}
        for sub, stmt, span in State.direct['verify']:
            for subsub in sub.cases[0][0]:
                item = SrcFile.applymap(subsub.case[0][0][0])
                attrs = SrcFile.applymap(subsub.case[0][1])
                self.verify[item] = attrs

        self.rank_var = State.direct['rank'][0][0].cases[0][0][0].case[0][0][0]
        self.rank_attrs = State.direct['rank'][0][0].cases[0][0][0].case[0][1]

        # build Neural Network
        casenum, casenumseq, directs, objs = get_directs(
            self.selectfunc, self.prefunc, self.postfunc)

        self.casesizes = []
        for caseidx, caseobj in casenumseq:
            self.casesizes.append(
                max(1, int(math.ceil(math.log(caseobj.size, 2)))))
        self.NN_input_size = sum(self.casesizes)
        self.NN_hidden_layers = 4
        self.NN_target_size = 1

        self.NN_net = buildNetwork(self.NN_input_size,
                                   self.NN_hidden_layers,
                                   self.NN_target_size,
                                   bias=True)
        self.NN_trainer = BackpropTrainer(self.NN_net,
                                          momentum=0.1,
                                          weightdecay=0.01,
                                          learningrate=0.01)
        self.NN_ds = SupervisedDataSet(self.NN_input_size, self.NN_target_size)

        self.NN_basket_size = 1000
        self.NN_min_dataset_size = min(20, State.cases['size'])
        self.NN_amp_factor = 1.0