Example #1
0
def TrainAGeneration(BrainList, ScrambleList, NumToReturn):
    BrainFitnesses = []
    for i in range(0, len(BrainList)):
        #print("Brain: "+str(i))
        Fitness = 0
        for j in range(0, len(ScrambleList)):
            NewCube = Cube()
            NewCube.PerformPredeterminedScramble(ScrambleList[j])
            Fitness += AttemptSolve(NewCube, BrainList[i])
        #print("BrainFitness: "+str(Fitness))
        BrainFitnesses.append(Fitness)
        BrainList[i].Fitness = Fitness
    BrainsToReturn = []
    for i in range(0, NumToReturn):
        MaxFitness = max(BrainFitnesses)
        BrainsToReturn.append(BrainList[BrainFitnesses.index(MaxFitness)])
        BrainList.pop(BrainFitnesses.index(MaxFitness))
        BrainFitnesses.pop(BrainFitnesses.index(MaxFitness))
    return BrainsToReturn
Example #2
0
from copy import deepcopy
import HelperFunctions

#training 50 brains on one cube.
if __name__ == "__main__":
    #initialize 50 random brains
    TheBrains = []
    for i in range(0, 50):
        TheBrains.append(Brain())
        #try brains with 2 internal layers, each with 50 neurons
        TheBrains[i].InitializeRandomLayerNeurons(2, 50)
    #Determine the initial scrambles for our cubes
    ScrambleList = []
    for i in range(0, 1):
        ScrambleList.append(HelperFunctions.GenerateScramble(20))
    #test ten generations
    for Generation in range(0, 59):
        print()
        print("Testing Generation: " + str(Generation))
        BestBrains = HelperFunctions.TrainAGeneration(TheBrains, ScrambleList,
                                                      5)
        TheBrains = []
        for BrainElement in BestBrains:
            TheBrains = TheBrains + HelperFunctions.MakeNewGenerationFromBrain(
                BrainElement, 10)
    BestBrains = HelperFunctions.TrainAGeneration(
        TheBrains, ScrambleList, 1)  #Here is our leading contender
    DemoCube = Cube()
    DemoCube.PerformPredeterminedScramble(ScrambleList[0])
    HelperFunctions.PerformExhibitionSolve(DemoCube, BestBrains[0])