コード例 #1
0
        public Creature(Vector2 pos, float viewAngle)
        {
            if (spriteBatch == null)
            {
                spriteBatch = new SpriteBatch(EvoGame.Instance.GraphicsDevice);
                bodyTex     = EvoGame.Instance.Content.Load <Texture2D>("Map/SandTexture");
                feelerTex   = EvoGame.Instance.Content.Load <Texture2D>("Map/SandTexture");
            }
            this.pos       = pos;
            this.viewAngle = viewAngle;
            inBias.SetName(NAME_IN_BIAS);
            inFoodValuePosition.SetName(NAME_IN_FOODVALUEPOSITION);
            inFoodValueFeeler.SetName(NAME_IN_FOODVALUEFEELER);
            inOcclusionFeeler.SetName(NAME_IN_OCCLUSIONFEELER);
            inEnergy.SetName(NAME_IN_ENERGY);
            inAge.SetName(NAME_IN_AGE);
            inGeneticDifference.SetName(NAME_IN_GENETICDIFFERENCE);
            inWasAttacked.SetName(NAME_IN_WASATTACKED);
            inWaterOnFeeler.SetName(NAME_IN_WATERONFEELER);
            inWaterOnCreature.SetName(NAME_IN_WATERONCREATURE);

            outBirth.SetName(NAME_OUT_BIRTH);
            outRotate.SetName(NAME_OUT_ROTATE);
            outForward.SetName(NAME_OUT_FORWARD);
            outFeelerAngle.SetName(NAME_OUT_FEELERANGLE);
            outAttack.SetName(NAME_OUT_ATTACK);
            outEat.SetName(NAME_OUT_EAT);

            brain = new NeuronalNetwork();

            brain.AddInputNeuron(inBias);
            brain.AddInputNeuron(inFoodValuePosition);
            brain.AddInputNeuron(inFoodValueFeeler);
            brain.AddInputNeuron(inOcclusionFeeler);
            brain.AddInputNeuron(inEnergy);
            brain.AddInputNeuron(inAge);
            brain.AddInputNeuron(inGeneticDifference);
            brain.AddInputNeuron(inWasAttacked);
            brain.AddInputNeuron(inWaterOnFeeler);
            brain.AddInputNeuron(inWaterOnCreature);

            brain.GenerateHiddenNeurons(10);

            brain.AddOutputNeuron(outBirth);
            brain.AddOutputNeuron(outRotate);
            brain.AddOutputNeuron(outForward);
            brain.AddOutputNeuron(outFeelerAngle);
            brain.AddOutputNeuron(outAttack);
            brain.AddOutputNeuron(outEat);

            brain.GenerateFullMesh();

            brain.RandomizeAllWeights();
            CalculateFeelerPos();

            color = new Color((float)EvoGame.GlobalRandom.NextDouble(), (float)EvoGame.GlobalRandom.NextDouble(), (float)EvoGame.GlobalRandom.NextDouble());
        }
コード例 #2
0
ファイル: Creature.cs プロジェクト: pkupper/EvoNet
        public Creature(Vector2 pos, float viewAngle)
        {
            id = currentId++;

            this.pos       = pos;
            this.viewAngle = viewAngle;
            inBias.SetName(NAME_IN_BIAS);
            inFoodValuePosition.SetName(NAME_IN_FOODVALUEPOSITION);
            inFoodValueFeeler.SetName(NAME_IN_FOODVALUEFEELER);
            inOcclusionFeeler.SetName(NAME_IN_OCCLUSIONFEELER);
            inEnergy.SetName(NAME_IN_ENERGY);
            inAge.SetName(NAME_IN_AGE);
            inGeneticDifference.SetName(NAME_IN_GENETICDIFFERENCE);
            inWasAttacked.SetName(NAME_IN_WASATTACKED);
            inWaterOnFeeler.SetName(NAME_IN_WATERONFEELER);
            inWaterOnCreature.SetName(NAME_IN_WATERONCREATURE);
            inMemory1.SetName(NAME_IN_MEMORY1);

            outBirth.SetName(NAME_OUT_BIRTH);
            outRotate.SetName(NAME_OUT_ROTATE);
            outForward.SetName(NAME_OUT_FORWARD);
            outFeelerAngle.SetName(NAME_OUT_FEELERANGLE);
            outAttack.SetName(NAME_OUT_ATTACK);
            outEat.SetName(NAME_OUT_EAT);
            outMemory1.SetName(NAME_OUT_MEMORY1);

            brain = new NeuronalNetwork();

            brain.AddInputNeuron(inBias);
            brain.AddInputNeuron(inFoodValuePosition);
            brain.AddInputNeuron(inFoodValueFeeler);
            brain.AddInputNeuron(inOcclusionFeeler);
            brain.AddInputNeuron(inEnergy);
            brain.AddInputNeuron(inAge);
            brain.AddInputNeuron(inGeneticDifference);
            brain.AddInputNeuron(inWasAttacked);
            brain.AddInputNeuron(inWaterOnFeeler);
            brain.AddInputNeuron(inWaterOnCreature);
            brain.AddInputNeuron(inMemory1);

            brain.GenerateHiddenNeurons(10);

            brain.AddOutputNeuron(outBirth);
            brain.AddOutputNeuron(outRotate);
            brain.AddOutputNeuron(outForward);
            brain.AddOutputNeuron(outFeelerAngle);
            brain.AddOutputNeuron(outAttack);
            brain.AddOutputNeuron(outEat);
            brain.AddOutputNeuron(outMemory1);

            brain.GenerateFullMesh();

            brain.RandomizeAllWeights();
            CalculateFeelerPos(MAXIMUMFEELERDISTANCE);

            color = new Color(EvoGame.RandomFloat(), EvoGame.RandomFloat(), EvoGame.RandomFloat());
            GenerateColorInv();
            CalculateCollisionGridPos();
        }
コード例 #3
0
        public Creature(Vector2 pos, float viewAngle, CreatureManager manager) :
            this(manager)
        {
            id = currentId++;

            this.pos       = pos;
            this.viewAngle = viewAngle;
            inBias.SetName(NAME_IN_BIAS);
            inFoodValuePosition.SetName(NAME_IN_FOODVALUEPOSITION);
            inFoodValueFeeler.SetName(NAME_IN_FOODVALUEFEELER);
            inOcclusionFeeler.SetName(NAME_IN_OCCLUSIONFEELER);
            inEnergy.SetName(NAME_IN_ENERGY);
            inAge.SetName(NAME_IN_AGE);
            inGeneticDifference.SetName(NAME_IN_GENETICDIFFERENCE);
            inWasAttacked.SetName(NAME_IN_WASATTACKED);
            inWaterOnFeeler.SetName(NAME_IN_WATERONFEELER);
            inWaterOnCreature.SetName(NAME_IN_WATERONCREATURE);
            //inOscilation       .SetName(NAME_IN_OSCILATION);
            inMemory = new InputNeuron[AmountOfMemory];
            for (int i = 0; i < AmountOfMemory; i++)
            {
                inMemory[i] = new InputNeuron();
                inMemory[i].SetName(NAME_IN_MEMORY + (i + 1));
            }

            outBirth.SetName(NAME_OUT_BIRTH);
            outRotate.SetName(NAME_OUT_ROTATE);
            outForward.SetName(NAME_OUT_FORWARD);
            outFeelerAngle.SetName(NAME_OUT_FEELERANGLE);
            outAttack.SetName(NAME_OUT_ATTACK);
            outEat.SetName(NAME_OUT_EAT);
            //outOscilation .SetName(NAME_OUT_OSCILATION);
            outMemory = new WorkingNeuron[AmountOfMemory];
            for (int i = 0; i < AmountOfMemory; i++)
            {
                outMemory[i] = new WorkingNeuron();
                outMemory[i].SetName(NAME_OUT_MEMORY + (i + 1));
            }

            brain = new NeuronalNetwork();

            brain.AddInputNeuron(inBias);
            brain.AddInputNeuron(inFoodValuePosition);
            brain.AddInputNeuron(inFoodValueFeeler);
            brain.AddInputNeuron(inOcclusionFeeler);
            brain.AddInputNeuron(inEnergy);
            brain.AddInputNeuron(inAge);
            brain.AddInputNeuron(inGeneticDifference);
            brain.AddInputNeuron(inWasAttacked);
            brain.AddInputNeuron(inWaterOnFeeler);
            brain.AddInputNeuron(inWaterOnCreature);
            //brain.AddInputNeuron(inOscilation);
            for (int i = 0; i < AmountOfMemory; i++)
            {
                brain.AddInputNeuron(inMemory[i]);
            }

            brain.GenerateHiddenNeurons(10);

            brain.AddOutputNeuron(outBirth);
            brain.AddOutputNeuron(outRotate);
            brain.AddOutputNeuron(outForward);
            brain.AddOutputNeuron(outFeelerAngle);
            brain.AddOutputNeuron(outAttack);
            brain.AddOutputNeuron(outEat);
            //brain.AddOutputNeuron(outOscilation);
            for (int i = 0; i < AmountOfMemory; i++)
            {
                brain.AddOutputNeuron(outMemory[i]);
            }

            brain.GenerateFullMesh();

            brain.RandomizeAllWeights();
            CalculateFeelerPos(MAXIMUMFEELERDISTANCE);

            Color = new Color(Simulation.RandomFloat(), Simulation.RandomFloat(), Simulation.RandomFloat());
            GenerateColorInv();
            CalculateCollisionGridPos();
        }
コード例 #4
0
        public Creature(Vector2 pos, float viewAngle, CreatureManager manager) :
            this(manager)
        {
            id = currentId++;

            this.pos       = pos;
            this.viewAngle = viewAngle;
            inBias.SetName(NAME_IN_BIAS);
            inFoodValuePosition.SetName(NAME_IN_FOODVALUEPOSITION);
            inEnergy.SetName(NAME_IN_ENERGY);
            inAge.SetName(NAME_IN_AGE);
            inWasAttacked.SetName(NAME_IN_WASATTACKED);
            inWaterOnCreature.SetName(NAME_IN_WATERONCREATURE);
            //inOscilation       .SetName(NAME_IN_OSCILATION);
            inMemory = new InputNeuron[AmountOfMemory];
            for (int i = 0; i < AmountOfMemory; i++)
            {
                inMemory[i] = new InputNeuron();
                inMemory[i].SetName(NAME_IN_MEMORY + (i + 1));
            }

            outBirth.SetName(NAME_OUT_BIRTH);
            outRotate.SetName(NAME_OUT_ROTATE);
            outForward.SetName(NAME_OUT_FORWARD);
            outStrafe.SetName(NAME_OUT_STRAFE);
            outEat.SetName(NAME_OUT_EAT);
            outMate_Age.SetName(NAME_OUT_MATE_AGE);
            outMate_Energy.SetName(NAME_OUT_MATE_ENERGY);
            outMate_Generation.SetName(NAME_OUT_MATE_GENERATION);
            outMate_GeneticDifference.SetName(NAME_OUT_MATE_GENETICDIFFERENCE);
            outMate_Age_Weight.SetName(NAME_OUT_MATE_AGE_WEIGHT);
            outMate_Energy_Weight.SetName(NAME_OUT_MATE_ENERGY_WEIGHT);
            outMate_Generation_Weight.SetName(NAME_OUT_MATE_GENERATION_WEIGHT);
            outMate_GeneticDifference_Weight.SetName(NAME_OUT_MATE_GENETICDIFFERENCE_WEIGHT);
            //outOscilation .SetName(NAME_OUT_OSCILATION);
            outMemory = new WorkingNeuron[AmountOfMemory];
            for (int i = 0; i < AmountOfMemory; i++)
            {
                outMemory[i] = new WorkingNeuron(-1);
                outMemory[i].SetName(NAME_OUT_MEMORY + (i + 1));
            }

            brain = new NeuronalNetwork();

            brain.AddInputNeuron(inBias);
            brain.AddInputNeuron(inFoodValuePosition);
            brain.AddInputNeuron(inEnergy);
            brain.AddInputNeuron(inAge);
            brain.AddInputNeuron(inWasAttacked);
            brain.AddInputNeuron(inWaterOnCreature);
            //brain.AddInputNeuron(inOscilation);
            for (int i = 0; i < AmountOfMemory; i++)
            {
                brain.AddInputNeuron(inMemory[i]);
            }

            brain.GenerateHiddenNeurons(AmountOfHidden, manager.simulation.SimulationConfiguration.NumberOfStartNeuronLayers);

            brain.AddOutputNeuron(outBirth);
            brain.AddOutputNeuron(outRotate);
            brain.AddOutputNeuron(outForward);
            brain.AddOutputNeuron(outStrafe);
            brain.AddOutputNeuron(outEat);
            brain.AddOutputNeuron(outMate_Age);
            brain.AddOutputNeuron(outMate_Energy);
            brain.AddOutputNeuron(outMate_Generation);
            brain.AddOutputNeuron(outMate_GeneticDifference);
            brain.AddOutputNeuron(outMate_Age_Weight);
            brain.AddOutputNeuron(outMate_Energy_Weight);
            brain.AddOutputNeuron(outMate_Generation_Weight);
            brain.AddOutputNeuron(outMate_GeneticDifference_Weight);
            //brain.AddOutputNeuron(outOscilation);
            for (int i = 0; i < AmountOfMemory; i++)
            {
                brain.AddOutputNeuron(outMemory[i]);
            }


            SetupFeelers(false, 1);

            brain.GenerateFullMesh();

            brain.RandomizeAllWeights();

            Color = Color.FromFloat(Simulation.RandomFloat(), Simulation.RandomFloat(), Simulation.RandomFloat());
            GenerateColorInv();
            CalculateCollisionGridPos();
        }