Exemplo n.º 1
0
        // CalculateConvergence: Calculates the rule's convergence fitness
        internal void CollectDisplacement(Vector3[] sendList)
        {
            int tries = 0;

            while (tries < 3)
            {
                int count = 0;

                UDPSend.SendData(UDPSend.EncodeMessage(sendList));
                UDPReceive.MessageReceived = false;

                while (UDPReceive.MessageReceived == false && count < 3)
                {
                    Thread.Sleep(70);
                    count++;
                }

                if (UDPReceive.MessageReceived == true)
                {
                    displacement = UDPReceive.maxDisplacement;
                    break;
                }

                tries++;
                if (tries == 3)
                {
                    Debug.Log("Action Lost");
                }
            }
        }
Exemplo n.º 2
0
    void foo()
    {
        Vector3      winnerVector = new Vector3();
        List <float> disps        = new List <float>();

        for (int i = 0; i < 30; i++)
        {
            int tries = 0;

            var       randomAgent = listAgents[UnityEngine.Random.Range(0, listAgents.Length - 1)];
            var       v           = randomAgent.Cell.GetFaceNeighbours().Where(x => x.Alive == false).ToArray()[0].Center;
            Vector3[] N           = new Vector3[] { v };

            while (tries < 3)
            {
                int count = 0;

                UDPSend.SendData(UDPSend.EncodeMessage(listAgents.Select(a => a.Cell.Center).Union(N).ToArray()));
                UDPReceive.MessageReceived = false;

                while (UDPReceive.MessageReceived == false && count < 3)
                {
                    Thread.Sleep(40);
                    count++;
                }

                if (UDPReceive.MessageReceived == true)
                {
                    print("Count: " + count + ", Tries: " + tries);
                    print("_" + UDPReceive.maxDisplacement.ToString("F10"));

                    disps.Add(UDPReceive.maxDisplacement);
                    if (disps.Min() >= UDPReceive.maxDisplacement)
                    {
                        winnerVector = v;
                    }

                    break;
                }

                tries++;
            }
        }

        print("Winner: " + winnerVector + "," + disps.Min().ToString("F10"));
        Instantiate(agentPrefab, winnerVector, Quaternion.identity);
    }