public void デシリアライズ後Restoreされたものは経験を引き継ぐ() { // Init parent var parentDecisionMaker = new ReinforcementDecisionMaker(); var actions = new List <IAction>(); for (int i = 0; i < 100; i++) { actions.Add(LocomotionAction.GoStraight(i.ToString())); } parentDecisionMaker.Init(actions); parentDecisionMaker.DecideAction(_dummyStates[0], forceRandom: false, forceMax: true); parentDecisionMaker.Feedback(new List <float>() { 3f }); parentDecisionMaker.DecideAction(_dummyStates[0], forceRandom: false, forceMax: true); var saveDataClone = EditorTestExtensions.DeepCloneByMsgPack(parentDecisionMaker.Save()); var decisionMakerClone = saveDataClone.Instantiate() as ReinforcementDecisionMaker; var originalTrainer = TestHelper.GetFieldValue(parentDecisionMaker, "_trainer") as TemporalDifferenceQTrainer; var cloneTrainer = TestHelper.GetFieldValue(decisionMakerClone, "_trainer") as TemporalDifferenceQTrainer; // Assertion Assert.AreEqual(originalTrainer.GetHistorySaveData().Count, 1); Assert.AreEqual(cloneTrainer.GetHistorySaveData().Count, 1); Assert.AreEqual(originalTrainer.GetHistorySaveData()[0].Instantiate().State, cloneTrainer.GetHistorySaveData()[0].Instantiate().State); }