예제 #1
0
def fitnessFunction(chromo, setPheno = False):
    #build program
    try:
        s1 = symbols("exp")
        g = grammar.builder(s1)
        built = g.buildList(chromo)
        if callable(setPheno):
            setPheno(built)
        #print(built)
    except RecursionError:
        if log == "Error":
            print("Recursion Error, fitness 0")
        return 0

    #execute program
    try:
        lisp = evaluator(terminals)
        evaluated = lisp.eval(*built)
        if type(evaluated) is str:
            evaluated = 0
        #fitness is greater the closer we get to goal
        goal = 556
        return goal - math.fabs(evaluated - goal)
    except OverflowError:
        if log == "Error":
            print("OverFlow Error, fitness 0")
        return 0
    except ExpressionConstraintError:
        if log == "Error":
            print("Constraint Broken.")
        return 0
예제 #2
0
def results():
    #play noise
    Freq = 2500 # Set Frequency To 2500 Hertz
    Dur = 1000 # Set Duration To 1000 ms == 1 second
    winsound.Beep(Freq,Dur)

    print("|\n|\n|\n|\tRESULTS\n========================")
    p.look()
    print("|\n|\n|\n| BEST:")
    try:
        lisp = evaluator(terminals)
        evaluated = lisp.eval(*p.bestInd.getPheno())
        print (evaluated)
        print(str(p.bestInd.getPheno()))
    except OverflowError:
        print("Overlfow error in evaluator.")