예제 #1
0
def testing(template=None):
    global bestcount
    global best
    if (template == None):
        models1 = [evModel(9, 9, [16, 16, 9]) for k in range(200)]
        models2 = [evModel(9, 9, [16, 16, 9]) for k in range(200)]
    else:
        models1 = [evModel(9, 9, [16, 16, 9], template[0]) for k in range(100)]
        models2 = [evModel(9, 9, [16, 16, 9], template[1]) for k in range(100)]
    models = zip(models1, models2)
    bestmods1 = []
    bestmods2 = []
    for m1, m2 in models:
        m1.mutate(3, 2)
        m2.mutate(3, 2)
        best = ticktactoe(m1, m2)
        bestmods1.append([best[0], m1])
        bestmods2.append([best[1], m2])
    bestmods1 = sorted(bestmods1, key=itemgetter(0))
    bestmods2 = sorted(bestmods2, key=itemgetter(0))
    print bestmods1
    return [
        bestmods1[0][1].structure,
        generateAverages([M[1] for M in bestmods2[len(bestmods2) / 4:]])
    ]
예제 #2
0
def ticktactoe(player1=None, player2=None):
    global lastwinner
    global streak
    if (player1 == None):
        player1 = evModel(9, 9, [16, 16, 9])
        player2 = evModel(9, 9, [16, 16, 9])
        player1.mutate(2, 2)
        player2.mutate(2, 2)
    game = [0] * 9
    turns = 0
    end = False
    winner = player1
    c = 0
    while not end:
        p1move = player1.run(game)
        p1move = p1move.index(max(p1move))

        if (game[p1move] != 0):
            print "player failed"
            return [c, 10 + c]
        else:
            print "move played"
            game[p1move] = 1
        if gameover(1, game):
            if (lastwinner == 1):
                streak += 1
            else:
                streak = 1
                lastwinner = 1
            print "WINNER 1"
            return [1000 + (-100 * c), (c)]
        p2move = player2.run(game)
        p2move = p2move.index(max(p2move))
        if (game[p2move] != 0):
            print "player failed"
            return [10 + c, c]
        else:
            print "move played"
            game[p2move] = -1
        if gameover(-1, game):
            if (lastwinner == -1):
                streak += 1
            else:
                streak = 1
                lastwinner = -1
            print "WINNER 2"
            return [(c), 1000 + (-100 * c)]
        if (sum(game) == 7):
            print "TIE"
            return [200, 200]
        print game
        c += 1
예제 #3
0
def testing(template=None):
    global images
    global labels
    global bestcount
    global best
    if (template == None):
        models = [evModel(378, 10, 5, activation=1) for k in range(25)]
        for model in models:
            model.mutate(2, 4)
    else:
        models = [
            evModel(378, 10, 5, template[k], activation=1)
            for k in range(len(template))
        ]
    bestmods = []
    outset = []
    for model in models:
        model.mutate(.5, 4)
        c = 0
        k = 0
        seed = [random.randint(0, 125) for z in range(100)]
        tests = [images[seed[z]] for z in range(8)]
        answers = [labels[seed[z]] for z in range(8)]
        outs = []
        for test, answer in zip(tests, answers):
            print c
            out = model.run(test)
            aindex, value = max(enumerate(out), key=operator.itemgetter(1))
            print str(aindex) + "|" + str(answer)
            outs.append(aindex)
            k += (out[answer]) * 10
            del out[answer]
            k -= 1 - sum(out)
            print k
            c += 1
        bestmods.append((k, model))
        if k > bestcount:
            bestcount = k
            best = model
    if (len(set(outset)) == 1):
        print "genocide"
        crazyMod = evModel(378, 10, 5, activation=1)
        crazyMod.mutate(.05, 50)
        return generateAverages([crazyMod])

    bestmods = sorted(bestmods, key=itemgetter(0))
    print bestmods
    return generateAverages([M[1] for M in bestmods[len(bestmods) / 2:]])
예제 #4
0
def playticktactoe(player1=None, ):
    if (player1 == None):
        player1 = evModel(9, 9, [16, 16, 9])
        player2 = evModel(9, 9, [16, 16, 9])
        player1.mutate(5, 10)
        player2.mutate(5, 10)
    game = [0] * 9
    turns = 0
    end = False
    winner = player1

    c = 0
    while not end:
        p1move = player1.run(game)
        p1move = p1move.index(max(p1move))

        if (game[p1move] != 0):
            print "player failed"
            return [-100 + c, 10 + c]
        else:
            print "move played"
            game[p1move] = 1
        if gameover(1, game):
            print "WINNER 1"
            return [1000 + (-100 * c), -c * 2]
        p2move = int(raw_input("play"))
        if (game[p2move] != 0):
            print "player failed"
            return [10 + c, -100 + c]
        else:
            print "move played"
            game[p2move] = -1
        if gameover(-1, game):
            print "WINNER 2"
            return [c * 2, 1000 + (-100 * c)]
        if (sum(game) == 7):
            print "TIE"
            return [200, 200]
        print game
        c += 1
예제 #5
0
from evolution import evModel
from evolution import generateAverages
model = evModel(3, 2, [2, 2])
print model.structure
model.mutate(1, 2)
print model.run([0, 1, 0])
model1 = evModel(3, 2, [2, 2])
model1.mutate(1, 2)
print generateAverages([model, model1])
예제 #6
0
import numpy as np
import random
from sklearn.datasets import load_digits
from operator import itemgetter
from mnist import MNIST
from evolution import evModel
from evolution import generateAverages
import math

best = evModel(6, 3, 6, activation=1)
bestcount = 0
import operator

mndata = MNIST('MNIST')
images, labels = mndata.load_training()
newimages = []
for image in images[:200]:
    temp = []
    c = 0
    while c < 729:
        if (c > 27 and c % 27 == 0):
            c += 27
        if (c + 27 < 729):
            temp.append(
                max([
                    np.tanh(image[c] * 1.0),
                    np.tanh(image[c + 1] * 1.0),
                    np.tanh(image[c + 27] * 1.0),
                    np.tanh(image[c + 28] * 1.0)
                ]))
        c += 1
예제 #7
0
        if (game[p1move] != 0):
            print "player failed"
            return [-100 + c, 10 + c]
        else:
            print "move played"
            game[p1move] = 1
        if gameover(1, game):
            print "WINNER 1"
            return [1000 + (-100 * c), -c * 2]
        p2move = int(raw_input("play"))
        if (game[p2move] != 0):
            print "player failed"
            return [10 + c, -100 + c]
        else:
            print "move played"
            game[p2move] = -1
        if gameover(-1, game):
            print "WINNER 2"
            return [c * 2, 1000 + (-100 * c)]
        if (sum(game) == 7):
            print "TIE"
            return [200, 200]
        print game
        c += 1


last = testing()
for k in range(1000):
    last = testing(last)
playticktactoe(evModel(9, 9, [16, 16, 9], last[0]))