Skip to content

Commit ae77adf

Browse files
Make On Demand Decision the default (#3243)
* Added a simple Decision Requester * Modified the prefabs * Fixing the tests and removing fields from Agent parameters * Migrating.md * addressing comments * addressing comments
1 parent dd2bd36 commit ae77adf

25 files changed

+34087
-31106
lines changed

UnitySDK/Assets/ML-Agents/Editor/AgentEditor.cs

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,36 +15,13 @@ public override void OnInspectorGUI()
1515
var serializedAgent = serializedObject;
1616
serializedAgent.Update();
1717

18-
var actionsPerDecision = serializedAgent.FindProperty(
19-
"agentParameters.numberOfActionsBetweenDecisions");
2018
var maxSteps = serializedAgent.FindProperty(
2119
"agentParameters.maxStep");
22-
var isResetOnDone = serializedAgent.FindProperty(
23-
"agentParameters.resetOnDone");
24-
var isOdd = serializedAgent.FindProperty(
25-
"agentParameters.onDemandDecision");
26-
27-
2820

2921
EditorGUILayout.PropertyField(
3022
maxSteps,
3123
new GUIContent(
3224
"Max Step", "The per-agent maximum number of steps."));
33-
EditorGUILayout.PropertyField(
34-
isOdd,
35-
new GUIContent(
36-
"On Demand Decisions",
37-
"If checked, you must manually request decisions."));
38-
if (!isOdd.boolValue)
39-
{
40-
EditorGUILayout.PropertyField(
41-
actionsPerDecision,
42-
new GUIContent(
43-
"Decision Interval",
44-
"The agent will automatically request a decision every X" +
45-
" steps and perform an action at every step."));
46-
actionsPerDecision.intValue = Mathf.Max(1, actionsPerDecision.intValue);
47-
}
4825

4926
serializedAgent.ApplyModifiedProperties();
5027

UnitySDK/Assets/ML-Agents/Editor/Tests/MLAgentsEditModeTest.cs

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -266,11 +266,10 @@ public void TestAgent()
266266

267267
agent1.agentParameters = new AgentParameters();
268268
agent2.agentParameters = new AgentParameters();
269-
// We use event based so the agent will now try to send anything to the brain
270-
agent1.agentParameters.onDemandDecision = false;
271-
agent1.agentParameters.numberOfActionsBetweenDecisions = 2;
269+
var decisionRequester = agent1.gameObject.AddComponent<DecisionRequester>();
270+
decisionRequester.DecisionPeriod = 2;
271+
decisionRequester.Awake();
272272
// agent1 will take an action at every step and request a decision every 2 steps
273-
agent2.agentParameters.onDemandDecision = true;
274273
// agent2 will request decisions only when RequestDecision is called
275274

276275
agentEnableMethod?.Invoke(agent1, new object[] { });
@@ -374,11 +373,8 @@ public void TestAgent()
374373

375374
agent1.agentParameters = new AgentParameters();
376375
agent2.agentParameters = new AgentParameters();
377-
// We use event based so the agent will now try to send anything to the brain
378-
agent1.agentParameters.onDemandDecision = false;
379-
agent1.agentParameters.numberOfActionsBetweenDecisions = 2;
380-
// agent1 will take an action at every step and request a decision every 2 steps
381-
agent2.agentParameters.onDemandDecision = true;
376+
var decisionRequester = agent1.gameObject.AddComponent<DecisionRequester>();
377+
decisionRequester.DecisionPeriod = 2;
382378

383379
agentEnableMethod?.Invoke(agent2, new object[] { });
384380

@@ -479,12 +475,11 @@ public void TestCumulativeReward()
479475
"OnEnableHelper", BindingFlags.Instance | BindingFlags.NonPublic);
480476
agent1.agentParameters = new AgentParameters();
481477
agent2.agentParameters = new AgentParameters();
482-
// We use event based so the agent will now try to send anything to the brain
483-
agent1.agentParameters.onDemandDecision = false;
484-
agent1.agentParameters.numberOfActionsBetweenDecisions = 3;
485-
// agent1 will take an action at every step and request a decision every 2 steps
486-
agent2.agentParameters.onDemandDecision = true;
487-
// agent2 will request decisions only when RequestDecision is called
478+
479+
var decisionRequester = agent1.gameObject.AddComponent<DecisionRequester>();
480+
decisionRequester.DecisionPeriod = 2;
481+
decisionRequester.Awake();
482+
488483
agent1.agentParameters.maxStep = 20;
489484

490485
agentEnableMethod?.Invoke(agent2, new object[] { });

0 commit comments

Comments
 (0)