Example #1
0
def TestAGeneration(BrainList, NumToReturn):
    BrainFitnesses = []
    for i in range(0, len(BrainList)):
        print("Testing Brain #" + str(i))
        Fitness = 0
        for j in range(0, 100):
            NewCube = Cube()
            NewCube.ScrambleCube(20)
            Fitness += AttemptSolve(NewCube, BrainList[i])
        print("Brain Fitness: " + str(Fitness))
        BrainFitnesses.append(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 Cube import Cube
from Brain import Brain

NewCube = Cube()
NewBrain = Brain()

#We have nothing to go on so we just implement a random brain
#let's start with a simple test 1 layer, 40 neurons
NewBrain.InitializeRandomLayerNeurons(1, 40)

NewCube.ScrambleCube(20)

print("Starting Cube:")
NewCube.Print()
print()

for Moves in range(0, 10):
    print("Move: " + str(Moves))
    #Feed our brain the information and let it reach a decision
    InputNeuronsToActivate = NewCube.GetInputNeuronsToActivate()
    for NeuronID in InputNeuronsToActivate:
        NewBrain.InputNeurons[NeuronID].Activate(
            0)  #don't weight the starting gun
    HighestOutputNeuron = NewBrain.GetHighestOutputNeuron()
    print("Highest Output Neuron is: " + str(HighestOutputNeuron))
    print("With Weight: " +
          str(NewBrain.OutputNeurons[HighestOutputNeuron].AccumulatedWeight))
    #perform the move
    if HighestOutputNeuron == 1:
        NewCube.RotateWhiteFaceRight()
    elif HighestOutputNeuron == 2:
Example #3
0
from Cube import Cube
from Brain import Brain
from copy import deepcopy
import HelperFunctions

if __name__ == "__main__":
    #initialize 10 random brains
    TheBrains = []
    for i in range(0, 10):
        TheBrains.append(Brain())
        #try brains with 2 internal layes, each with 40 neurons
        TheBrains[i].InitializeRandomLayerNeurons(2, 40)
    #test ten generations
    for Generation in range(0, 19):
        print("Testing Generations: " + str(Generation))
        BestBrains = HelperFunctions.TestAGeneration(TheBrains, 5)
        TheBrains = []
        for BrainElement in BestBrains:
            TheBrains = TheBrains + HelperFunctions.MakeNewGenerationFromBrain(
                BrainElement, 2)
    BestBrains = HelperFunctions.TestAGeneration(
        TheBrains, 1)  #Here is our leading contender
    DemoCube = Cube()
    DemoCube.ScrambleCube(20)
    HelperFunctions.PerformExhibitionSolve(DemoCube, BestBrains[0])