Exemple #1
0
    void QuickOptimization(int goal_generation)
    {
        if (simulation_Running && Robot_Optimization.activated)
        {
            if (!Robot_Optimization.started)
            {
                Robot_Optimization.Load(robot);
            }

            CancelInvoke();
            Visualization.enabled = false;

            simulation_Running = true;

            Robot_Optimization.quickOpti = true;
            //Optimize fast:
            while (Robot_Optimization.currentGeneration < goal_generation)
            {
                OptimizationUpdate_Sim();
            }
            Debug.Log("Reached Generation: " + Robot_Optimization.currentGeneration);

            //simulation_Running = false;

            Robot_Optimization.quickOpti = false;

            //reenable normal optimization:
            Visualization.enabled = true;
            InvokeRepeating("OptimizationUpdate_Sim", 0.01f, Robot_Optimization.deltaTime);
        }
    }
Exemple #2
0
    void CreateOptimizations()
    {
        //Loadrobot for each robot
        //Loadvis for each robot
        Robot_Optimization.Load(robot);

        Robot_Optimization.deltaTime = dt;

        //Robot_Optimization.IterTime = 10;
        //Robot_Optimization.timeStep = 0.01f ;// dt;

        InvokeRepeating("OptimizationUpdate_Sim", 0.01f, Robot_Optimization.deltaTime);
    }
Exemple #3
0
    void OptimizationUpdate_Sim()
    {
        if (simulation_Running)//Check if simulation is paused
        {
            //OPTIMIZATION:
            if (Robot_Optimization.Update(robot, simulationTime, Opti_Iterator, Robot_Optimization.IterTime))
            {
                simulationTime = 0;

                //deletes and recreates robot
                ResetRobot();
                //resets robot position:(gotta create AgX assembly first)
                //robot.setPos(oldpos?);

                Opti_Iterator++;
                if (!Robot_Optimization.quickOpti)
                {
                    Debug.Log("Generation: " + Robot_Optimization.currentGeneration + "| Entity: " + Opti_Iterator);
                }


                if (Opti_Iterator >= Robot_Optimization.population)//If all iterations have ran
                {
                    //start new iterations with new population
                    Robot_Optimization.UpdatePopulation(robot);//Update the populations

                    //ResetRobot();
                    Opti_Iterator = 0;

                    genom             = Robot_Optimization.currentBestGenome;
                    currDynamics.text = genom[0].ToString("0.###") + "," + genom[1].ToString("0.###") + "," + genom[2].ToString("0.###") + "," + genom[3].ToString("0.###")
                                        + "," + genom[4].ToString("0.###") + "," + genom[5].ToString("0.###") + "," + genom[6].ToString("0.###");
                }
            }

            //VISUALIZATION:
            if (Visualization.enabled)
            {
                Update_Vis(robot);
            }



            //this should be the Physics time
            simulationTime += Robot_Optimization.deltaTime;//timestep = dt = each step time.
        }
    }
Exemple #4
0
 void Reset_Opti()
 {
     Robot_Optimization.Reset();
     Robot_Optimization.currentGeneration = 0;
 }