Exemplo n.º 1
0
    public void ResetSpeedTest()
    {
        int iter = 1000;

        mlpMN = new MultiLayerMathsNet(seed, null, shapes, 1, initialValueWeights);
        mlp   = new MultiLayer(shapes, seed, 1, null);


        var watch = System.Diagnostics.Stopwatch.StartNew();

        for (int i = 0; i < iter; i++)
        {
            mlpMN.Reset(true);
        }
        watch.Stop();
        var elapsedMs = watch.ElapsedMilliseconds;

        Debug.Log("Reset Time MathNet: " + elapsedMs);


        watch = System.Diagnostics.Stopwatch.StartNew();
        for (int i = 0; i < iter; i++)
        {
            mlp.Reset(1.0f, true);
        }
        watch.Stop();
        elapsedMs = watch.ElapsedMilliseconds;

        Debug.Log("Reset Time Array: " + elapsedMs);
    }
Exemplo n.º 2
0
        void Awake()
        {
            signalControl = new ControlSignal();
            path          = "Save/DroneSession/" + "Task-" + task + "/Seed-" + fromSeed + "/";
            rndGenerator  = new SystemRandomSource(fromSeed);
            taskObject    = (DroneTask)Activator.CreateInstance(Type.GetType("Lexmou.MachineLearning.Drone" + task), rndGenerator, task);

            mlp = new MultiLayerMathsNet(fromSeed, null, taskObject.shapes, 1, 0);
            float[] floatArr = new float[taskObject.individualSize];

            //float[] floatArr = new float[] {0,-0.33f,0,0,-0.33f,0,0,0,0,0,0.5f,0,0,-1,0,0,-1,0,0,0.5f,0,1,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0.5f};

            Genetic.LoadBest(path, fromGeneration, floatArr);
            BuildCustomWeights(mlp.weights, taskObject.shapes, Vector <float> .Build.DenseOfArray(floatArr));
            //Debug.Log(mlp.weights[0]);

            /*if (stabilizationGeneration != 0)
             * {
             *  Debug.Log("Gene Move");
             *  gene = new Genetic(stabilizationSeed, null, 100, 40, 1.0f, 0.1f, 0.1f, 0.1f, 0.1f, "Save/DroneSession/Task-stabilization/", false);
             * }
             * if (moveGeneration != 0)
             * {
             *  Debug.Log("Gene Move");
             *  gene = new Genetic(moveSeed, null, 100, 52, 1.0f, 0.1f, 0.1f, 0.1f, 0.1f, "Save/DroneSession/Task-move/", false);
             * }
             * deltaDistribution = new ContinuousUniform(-2, 2);
             * tmpBuildCustomWeights = new List<Matrix<float>>();*/

            Restart();
        }
Exemplo n.º 3
0
 public override void Reset()
 {
     for (int i = 0; i < populationSize; i++)
     {
         dronePopulation[i] = MonoBehaviour.Instantiate((GameObject)Resources.Load("DroneGene"), taskObject.GetInitialposition(i), Quaternion.identity) as GameObject;
         droneRigid[i]      = dronePopulation[i].GetComponentInChildren <Rigidbody>();
         taskObject.GetTargetPosition(i, targetPosition);
         //Debug.Log(targetPosition[i].ToString());
         //targetPosition[i] =
         if (!taskObject.ResetOrientation(droneRigid[i], gene.bestScore, gene.median, i, populationSize))
         {
             OnDestroy();
             Application.Quit();
             Time.timeScale = 0f;
         }
         if ((gene.generation == 1) || (gene.generation == loadGeneration))
         {
             mlpPopulation[i] = new MultiLayerMathsNet(-1, rndGenerator, taskObject.shapes, 1, initialValueWeights);
         }
         BuildCustomWeights(mlpPopulation[i].weights, taskObject.shapes, gene.GetIndividual(i));
     }
     externalEvaluations.Clear();
 }
Exemplo n.º 4
0
 public void SetUp()
 {
     mlpMN = new MultiLayerMathsNet(seed, null, shapes, 1, initialValueWeights);
     mlp   = new MultiLayer(shapes, seed, 1, null);
 }