V2.7 Normalized state

Normalized distance and rotation state.
This commit is contained in:
2022-12-18 20:17:08 +09:00
parent 64ada808de
commit 5ccb06c545
5 changed files with 30402 additions and 30395 deletions
+1 -1
View File
@@ -1 +1 @@
{"count":1,"self":15.2624832,"total":16.0374865,"children":{"InitializeActuators":{"count":16,"self":0.0020017999999999998,"total":0.0020017999999999998,"children":null},"InitializeSensors":{"count":16,"self":0.0020989999999999997,"total":0.0020989999999999997,"children":null},"AgentSendState":{"count":547,"self":0.0070130999999999995,"total":0.034057899999999995,"children":{"CollectObservations":{"count":4376,"self":0.0200301,"total":0.0200301,"children":null},"WriteActionMask":{"count":4376,"self":0.0015003,"total":0.0015003,"children":null},"RequestDecision":{"count":4376,"self":0.0055144,"total":0.0055144,"children":null}}},"DecideAction":{"count":547,"self":0.0085414999999999987,"total":0.0085414999999999987,"children":null},"AgentAct":{"count":547,"self":0.72779699999999992,"total":0.72779699999999992,"children":null}},"gauges":{},"metadata":{"timer_format_version":"0.1.0","start_time_seconds":"1670633960","unity_version":"2021.3.14f1","command_line_arguments":"C:\\Program Files\\Unity\\Hub\\Editor\\2021.3.14f1\\Editor\\Unity.exe -projectpath C:\\Users\\UCUNI\\OneDrive\\Unity\\ML-Agents\\Aimbot-ParallelEnv -useHub -hubIPC -cloudEnvironment production -licensingIpc LicenseClient-BIduOqLJT8GiF8SNWhGj_ -hubSessionId e2ebfc30-77ac-11ed-bf56-45d250d830d4 -accessToken aCi_2ERt33bo42jVTu8X3P-PvUkABd5hiU-fyHtjEnA00ef","communication_protocol_version":"1.5.0","com.unity.ml-agents_version":"2.0.1","scene_name":"InGame","end_time_seconds":"1670633976"}}
{"count":1,"self":13.315304,"total":13.988529499999999,"children":{"InitializeActuators":{"count":16,"self":0.0014992,"total":0.0014992,"children":null},"InitializeSensors":{"count":16,"self":0.0010057,"total":0.0010057,"children":null},"AgentSendState":{"count":463,"self":0.0070088,"total":0.025683599999999997,"children":{"CollectObservations":{"count":3704,"self":0.0136738,"total":0.0136738,"children":null},"WriteActionMask":{"count":3704,"self":0.0010000999999999999,"total":0.0010000999999999999,"children":null},"RequestDecision":{"count":3704,"self":0.0040009,"total":0.0040009,"children":null}}},"DecideAction":{"count":463,"self":0.0090286,"total":0.0090286,"children":null},"AgentAct":{"count":463,"self":0.63550869999999993,"total":0.63550869999999993,"children":null}},"gauges":{},"metadata":{"timer_format_version":"0.1.0","start_time_seconds":"1670806723","unity_version":"2021.3.14f1","command_line_arguments":"C:\\Program Files\\Unity\\Hub\\Editor\\2021.3.14f1\\Editor\\Unity.exe -projectpath C:\\Users\\UCUNI\\OneDrive\\Unity\\ML-Agents\\Aimbot-ParallelEnv -useHub -hubIPC -cloudEnvironment production -licensingIpc LicenseClient-YRG3pCS8ZgFNZRYWWEQNT -hubSessionId bd156e60-79a0-11ed-822f-5975ccdc385f -accessToken Oh87gx5N8gBlKDUL5eNZyAhhMBi2H5U90gq84xokOa800ef","communication_protocol_version":"1.5.0","com.unity.ml-agents_version":"2.0.1","scene_name":"InGame","end_time_seconds":"1670806737"}}
+30319 -30319
View File
File diff suppressed because it is too large Load Diff
+17 -12
View File
@@ -63,7 +63,7 @@ public class AgentWithGun : Agent
private string myTag = "";
private float lastEnemyFacingDistance = 0f; // record last enemy facing minimum distance
// scripts
private RaySensors rayScript;
private RaySensors raySensors;
private CharacterController PlayerController;
private EnvironmentUIControl EnvUICon;
private ParameterContainer paramContainer;
@@ -82,7 +82,7 @@ public class AgentWithGun : Agent
EnvUICon = EnvironmentUIControlObj.GetComponent<EnvironmentUIControl>();
targetCon = TargetControllerObj.GetComponent<TargetController>();
hudController = HUDObj.GetComponent<HUDController>();
rayScript = GetComponent<RaySensors>();
raySensors = GetComponent<RaySensors>();
PlayerController = this.transform.GetComponent<CharacterController>();
// Environment parameters
lockMouse = paramContainer.lockMouse;
@@ -263,7 +263,7 @@ public class AgentWithGun : Agent
{
// while if attack mode
float targetDis = Vector3.Distance(blockContainer.thisBlock.transform.position, transform.position);
if (targetDis <= rayScript.viewDistance)
if (targetDis <= raySensors.viewDistance)
{
// Debug.DrawRay(new Vector3(0,0,0), viewPoint, Color.red);
if (Vector3.Distance(ray.origin + (ray.direction * targetDis), blockContainer.thisBlock.transform.position) <= blockContainer.thisBlock.firebasesAreaDiameter / 2)
@@ -310,10 +310,10 @@ public class AgentWithGun : Agent
isFacingtoEnemy = true;
}
}
if (rayScript.inViewEnemies.Count > 0 && !isFacingtoEnemy) {
if (raySensors.inViewEnemies.Count > 0 && !isFacingtoEnemy) {
// have enemy in view
List<float> projectionDis = new List<float>();
foreach (GameObject thisEnemy in rayScript.inViewEnemies)
foreach (GameObject thisEnemy in raySensors.inViewEnemies)
{
// for each enemy in view
Vector3 projection = Vector3.Project(thisEnemy.transform.position - transform.position, (ray.direction * 10));
@@ -346,7 +346,7 @@ public class AgentWithGun : Agent
{
// attack mode
float targetDis = Vector3.Distance(blockContainer.thisBlock.transform.position, transform.position);
if(targetDis <= rayScript.viewDistance)
if(targetDis <= raySensors.viewDistance)
{
// Debug.DrawRay(new Vector3(0,0,0), viewPoint, Color.red);
if (Vector3.Distance(ray.origin + (ray.direction * targetDis), blockContainer.thisBlock.transform.position) <= blockContainer.thisBlock.firebasesAreaDiameter / 2)
@@ -419,7 +419,7 @@ public class AgentWithGun : Agent
{
EnvUICon.initChart();
}
rayScript.updateRayInfo(); // update raycast
raySensors.updateRayInfo(); // update raycast
}
// ML-AGENTS处理-------------------------------------------------------------------------------------------ML-AGENTS
// 观察情报
@@ -428,10 +428,10 @@ public class AgentWithGun : Agent
//List<float> enemyLDisList = RaySensors.enemyLDisList;// All Enemy Lside Distances
//List<float> enemyRDisList = RaySensors.enemyRDisList;// All Enemy Rside Distances
float[] myObserve = { transform.localPosition.x, transform.localPosition.y, transform.localPosition.z, transform.eulerAngles.y/360f };
float[] rayTagResult = rayScript.rayTagResult;// 探测用RayTag结果 float[](raySensorNum,1)
float[] rayTagResultOnehot = rayScript.rayTagResultOneHot.ToArray(); // 探测用RayTagonehot结果 List<int>[](raySensorNum*Tags,1)
float[] rayDisResult = rayScript.rayDisResult; // 探测用RayDis结果 float[](raySensorNum,1)
float[] myObserve = { transform.localPosition.x/raySensors.viewDistance, transform.localPosition.y / raySensors.viewDistance, transform.localPosition.z / raySensors.viewDistance, transform.eulerAngles.y/360f };
float[] rayTagResult = raySensors.rayTagResult;// 探测用RayTag结果 float[](raySensorNum,1)
float[] rayTagResultOnehot = raySensors.rayTagResultOneHot.ToArray(); // 探测用RayTagonehot结果 List<int>[](raySensorNum*Tags,1)
float[] rayDisResult = raySensors.rayDisResult; // 探测用RayDis结果 float[](raySensorNum,1)
float[] targetStates = targetCon.targetState; // (6) targettype, target x,y,z, firebasesAreaDiameter
float remainTime = targetCon.leftTime;
gunReadyToggle = gunReady();
@@ -452,6 +452,11 @@ public class AgentWithGun : Agent
sensor.AddObservation(rayTagResult);
}
sensor.AddObservation(rayDisResult); // 探测用RayDis结果 float[](raySensorNum,1)
/*foreach(float aaa in rayDisResult)
{
Debug.Log(aaa);
}
Debug.LogWarning("------------");*/
//sensor.AddObservation(focusEnemyObserve); // 最近的Enemy情报 float[](3,1) MinEnemyIndex,x,z
//sensor.AddObservation(raySensorNum); // raySensor数量 int
//sensor.AddObservation(remainTime); // RemainTime int
@@ -473,7 +478,7 @@ public class AgentWithGun : Agent
shoot = mouseShoot;
cameraControl(Mouse_X, 0);
moveAgent(vertical, horizontal);
rayScript.updateRayInfo(); // update raycast
raySensors.updateRayInfo(); // update raycast
//判断结束
float sceneReward = 0f;
+7 -5
View File
@@ -63,6 +63,7 @@ public class TargetController : MonoBehaviour
private CharacterController agentCharaCon;
private WorldUIController worldUICon;
private HUDController hudCon;
private RaySensors raySensors;
// Start is called before the first frame update
void Start()
@@ -84,6 +85,7 @@ public class TargetController : MonoBehaviour
paramCon = ParameterContainerObj.GetComponent<ParameterContainer>();
worldUICon = WorldUIObj.GetComponent<WorldUIController>();
hudCon = HUDObj.GetComponent<HUDController>();
raySensors = AgentObj.GetComponent<RaySensors>();
freeProb = 1 - attackProb - gotoProb - defenceProb;
targetNum = (int)Targets.Num;
if (freeProb < 0)
@@ -183,7 +185,7 @@ public class TargetController : MonoBehaviour
}
else
{
Debug.Log("Free");
//Debug.Log("Free");
targetTypeInt = (int)Targets.Free;
enemyCont.destroyAllEnemys();
enemyCont.randomInitEnemys(hudCon.enemyNum);
@@ -207,10 +209,10 @@ public class TargetController : MonoBehaviour
else
{
targetState[0] = targetTypeInt;
targetState[1] = targetPosition.x;
targetState[2] = targetPosition.y;
targetState[3] = targetPosition.z;
targetState[4] = blockCont.thisBlock.firebasesAreaDiameter;
targetState[1] = targetPosition.x / raySensors.viewDistance; // normalization
targetState[2] = targetPosition.y / raySensors.viewDistance;
targetState[3] = targetPosition.z / raySensors.viewDistance;
targetState[4] = blockCont.thisBlock.firebasesAreaDiameter / raySensors.viewDistance;
targetState[5] = blockCont.thisBlock.belongRatio;
}
}