Esempio n. 1
0
 private Action GetAction()
 {
     if (groupMod.WithinGCM())
     {
         return(Action.Driving);
     }
     return(Action.Collecting);
 }
Esempio n. 2
0
    private void LateUpdate()
    {
        // 数据统计
        if (Config.useStatistical)
        {
            // 统计占比
            if (groupMod.WithinGCM())
            {
                statistical.driveStep++;
            }
            else
            {
                statistical.collectStep++;
            }

            statistical.step++;
            statistical.sheepNum = Config.N;
            statistical.timeOK  += Time.fixedDeltaTime;
        }
        if (groupMod.IsTargetOk() && groupMod.WithinGCM())
        {
            ReLoad();
        }
    }
Esempio n. 3
0
    public override void AgentAction(float[] vectorAction, string textAction)
    {
        time += Time.deltaTime;
        if (brain.brainParameters.vectorActionSpaceType == SpaceType.continuous)
        {
            Vector3 vec = new Vector3(vectorAction[0], vectorAction[1]);

            Vector2 GCM = groupMod.GetGCM();
            if (Vector2.Dot(vec, (GCM - new Vector2(transform.position.x, transform.position.y))) < 0)
            {
                vec = new Vector2(-vec.x, -vec.y);
            }
            vec.Normalize();
            float speed = Mathf.Clamp(vectorAction[2], 1f, 2f);
            gameObject.transform.position += speed * vec;
        }

        if (groupMod.IsTargetOk())
        {
            AddReward(1000f);
            Done();
        }
        else
        {
            if (time >= 20)
            {
                AddReward(-200f);
                Done();
            }
            if (groupMod.WithinGCM())
            {
                AddReward(1);
            }
            float dis = CalDistance();
            AddReward(Mathf.Clamp((lastDis - dis), -0.1f, 0.1f));
        }
        AddReward(-0.05f);
    }