Exemplo n.º 1
0
 public void SetNetworkTopology(NetworkTopologySimpleData networkTopology)
 {
     if (networkTopology != null)
     {
         currentTopology = networkTopology.GetCopy();
     }
 }
Exemplo n.º 2
0
    public SavedTopologyData(NetworkTopologySimpleData networkTopologySimpleData, List <CarSimpleData> cars, string topologyName)
    {
        if (networkTopologySimpleData != null)
        {
            this.TopologyData = networkTopologySimpleData.GetCopy();
        }
        else
        {
            Debug.LogError("Null parameter");
        }

        if (cars != null)
        {
            CarSimpleData.Clear();

            foreach (CarSimpleData car in cars)
            {
                CarSimpleData.Add(car.GetCopy());
            }
        }
        else
        {
            Debug.LogError("Null parameter");
        }

        if (!string.IsNullOrEmpty(topologyName))
        {
            this.TopologyName = topologyName;
        }
    }
Exemplo n.º 3
0
 public virtual void Init(NetworkTopologySimpleData networkTopology)
 {
     if (networkTopology != null)
     {
         initNeuralNetwork(networkTopology);
         carRadar.Init(networkTopology.SensorsCount, AngleBetweenSensors, SensorsLength);
     }
 }
Exemplo n.º 4
0
    void refreshButtons()
    {
        NetworkTopologySimpleData currentTopology = GetNetworkTopologySimpleData();
        bool isDifferent = currentTopology.IsDifferent(defaultTopology);

        exclemationMark.SetActive(isDifferent);
        resetButton.interactable = isDifferent;
    }
Exemplo n.º 5
0
 void initNeuralNetwork(NetworkTopologySimpleData networkTopology)
 {
     if (networkTopology != null)
     {
         this.networkTopology = networkTopology.GetCopy();
         int outputCount = 1 + (this.networkTopology.TorqueOutput ? 1 : 0)
                           + (this.networkTopology.HandbrakeOutput ? 1 : 0); //there is always one output - steer angle
         int additionalInputCount = (this.networkTopology.TorqueInput ? 1 : 0) + (this.networkTopology.VelocityInput ? 1 : 0) +
                                    (this.networkTopology.SteerAngleInput ? 1 : 0) + (this.networkTopology.MovementAngleInput ? 1 : 0);
         neuralNetwork = new NeuralNetwork(networkTopology.SensorsCount + additionalInputCount, this.networkTopology.HiddenLayerNeuronsCount, outputCount);
     }
 }
Exemplo n.º 6
0
    void onNewTopologyLoaded(SavedTopologyData savedTopologyData)
    {
        if (savedTopologyData != null && savedTopologyData.TopologyData != null && savedTopologyData.CarSimpleData != null)
        {
            NetworkTopologySimpleData newTopology = savedTopologyData.TopologyData;
            geneticsManager.SetNetworkTopology(newTopology);
            geneticsManager.ResetSimulation();
            geneticsManager.SetNewCars(savedTopologyData.CarSimpleData);
            geneticsManager.ResetCars();
            geneticsManager.ActivateCars();

            geneticsUIController.RefreshViews();
        }
    }
Exemplo n.º 7
0
    public NetworkTopologySimpleData GetNetworkTopologySimpleData()
    {
        NetworkTopologySimpleData result = new NetworkTopologySimpleData();

        result.MovementAngleInput = angleBetweenForwardVectorAndMovementDirectionInputToggle.IsOn;
        result.SteerAngleInput    = steerAngleInputToggle.IsOn;
        result.TorqueInput        = torqueInputToggle.IsOn;
        result.VelocityInput      = velocityInputToggle.IsOn;

        result.SensorsCount            = sensorNeurons.Count;
        result.HiddenLayerNeuronsCount = hiddenLayerNeurons.Count;

        result.TorqueOutput    = torqueOutputToggle.IsOn;
        result.HandbrakeOutput = handbrakeOutputToggle.IsOn;

        return(result);
    }
Exemplo n.º 8
0
    public bool IsDifferent(NetworkTopologySimpleData other)
    {
        if (other == null)
        {
            return(true);
        }

        bool result = false;

        if (MovementAngleInput != other.MovementAngleInput)
        {
            result = true;
        }
        else if (VelocityInput != other.VelocityInput)
        {
            result = true;
        }
        else if (TorqueInput != other.TorqueInput)
        {
            result = true;
        }
        else if (SteerAngleInput != other.SteerAngleInput)
        {
            result = true;
        }
        else if (SensorsCount != other.SensorsCount)
        {
            result = true;
        }
        else if (HiddenLayerNeuronsCount != other.HiddenLayerNeuronsCount)
        {
            result = true;
        }
        else if (TorqueOutput != other.TorqueOutput)
        {
            result = true;
        }
        else if (HandbrakeOutput != other.HandbrakeOutput)
        {
            result = true;
        }

        return(result);
    }
Exemplo n.º 9
0
    public NetworkTopologySimpleData GetCopy()
    {
        NetworkTopologySimpleData result = new NetworkTopologySimpleData();

        result.MovementAngleInput = MovementAngleInput;
        result.SteerAngleInput    = SteerAngleInput;
        result.TorqueInput        = TorqueInput;
        result.VelocityInput      = VelocityInput;

        result.HiddenLayerNeuronsCount = HiddenLayerNeuronsCount;
        result.SensorsCount            = SensorsCount;

        result.HandbrakeOutput = HandbrakeOutput;
        result.TorqueOutput    = TorqueOutput;

        result.AngleBetweenSensors = AngleBetweenSensors;
        result.SensorsLength       = SensorsLength;

        return(result);
    }
Exemplo n.º 10
0
    void switchFromNetworkTopologyToLearningWindow()
    {
        networkTopologyCanvas.SetActive(false);
        neuralNetworkCanvas.SetActive(true);

        NetworkTopologySimpleData currentTopology = geneticsManager.CurrentTopology;
        NetworkTopologySimpleData newTopology     = networkTopologyController.GetNetworkTopologySimpleData();
        bool isTpologyDifferent = currentTopology.IsDifferent(newTopology);

        geneticsManager.gameObject.SetActive(true);

        if (isTpologyDifferent)
        {
            geneticsManager.SetNetworkTopology(newTopology);
            geneticsManager.ResetSimulation();
        }

        geneticsManager.ResetCars();
        geneticsManager.ActivateCars();

        geneticsUIController.RefreshViews();
        imageFader.FadeOut();
    }
Exemplo n.º 11
0
    public void Init(NetworkTopologySimpleData networkTopologySimpleData)
    {
        if (networkTopologySimpleData != null)
        {
            defaultTopology = networkTopologySimpleData.GetCopy();

            hiddenLayerNeuronsCountController.SetValue(networkTopologySimpleData.HiddenLayerNeuronsCount);
            sensorsCountController.SetValue(networkTopologySimpleData.SensorsCount);

            angleBetweenForwardVectorAndMovementDirectionInputToggle.IsOn = networkTopologySimpleData.MovementAngleInput;
            velocityInputToggle.IsOn   = networkTopologySimpleData.VelocityInput;
            torqueInputToggle.IsOn     = networkTopologySimpleData.TorqueInput;
            steerAngleInputToggle.IsOn = networkTopologySimpleData.SteerAngleInput;

            torqueOutputToggle.IsOn    = networkTopologySimpleData.TorqueOutput;
            handbrakeOutputToggle.IsOn = networkTopologySimpleData.HandbrakeOutput;

            createNeurons(networkTopologySimpleData.SensorsCount, sensorNeurons, sensorsContainer);
            createNeurons(networkTopologySimpleData.HiddenLayerNeuronsCount, hiddenLayerNeurons, hiddenLayerNeuronsContainer);
            startNewRefreshLinesCoroutine();
            refreshButtons();
        }
    }
Exemplo n.º 12
0
 public override void Init(NetworkTopologySimpleData networkTopology)
 {
     base.Init(networkTopology);
     IsActive = false;
 }
Exemplo n.º 13
0
 public void Setup(NetworkTopologySimpleData currentTopologyData, List <CarSimpleData> carsData)
 {
     this.currentTopologyData = currentTopologyData;
     this.carsData            = carsData;
     refresh();
 }