private IEnumerator SimulationCoroutine(float lambda, float pReturnFirst) { Debug.Log(lambda + " Start."); var userModel = new VRInterfaceModel(); userModel.Lambda = lambda; userModel.dataSet = dataSet; userModel.allNodeCount = allNodeCount; userModel.goalCount = goalNodeCount; userModel.meanDegree = meanDegree; // userModel.distanceFtoG = distanceFtoG; // 始点ノードに戻る確率 userModel.pReturnFirst = pReturnFirst; for (int i = 0; i < maxEpoc; i++) { progress = (float)i / (float)maxEpoc; userModel.Simulate(); yield return(null); } SimDataWriter.WriteData(userModel.Records, dataSet, "lambda_" + lambda.ToString("F1").Replace(".", "_") + ".csv", userModel); Debug.Log(lambda + " Done."); yield break; }
private void Simulate(float lambda, float pReturnFirst) { Debug.Log(lambda + " Start."); var userModel = new VRInterfaceModel(); userModel.Lambda = lambda; userModel.dataSet = dataSet; userModel.allNodeCount = allNodeCount; userModel.goalCount = goalNodeCount; userModel.meanDegree = meanDegree; // userModel.distanceFtoG = distanceFtoG; userModel.pSelectVisibleGoal = selectVisibleGoal; // 始点ノードに戻る確率 userModel.pReturnFirst = pReturnFirst; for (int i = 0; i < maxEpoc; i++) { progress = (float)i / (float)maxEpoc; var success = false; while (!success) { success = userModel.Simulate(); } Thread.Sleep(16); } SimDataWriter.WriteData(userModel.Records, dataSet, "lambda_" + lambda.ToString("F1").Replace(".", "_") + ".csv", userModel); Debug.Log(lambda + " Done."); }
// graphModelParams[0] is nodeCount // graphModelParams[1] is meanDegree public static void WriteData(SimRecord[] simRecords, SimRecord.DataSet dataSet, string fileName, VRInterfaceModel model) { // var fileDir = Application.dataPath + "/Data/Simulation/" + dataSet.ToString(); var fileDir = "/media/GDrive/ToyamaLab/VRInterface/Assets" + "/Data/Simulation/SelectVisibleGoal" + (model.pSelectVisibleGoal * 100) + "/" + dataSet.ToString(); switch (dataSet) { case SimRecord.DataSet.BarabasiAlbert: fileDir += "_m" + (model.meanDegree / 2).ToString("F0"); fileDir += "_n" + (model.allNodeCount).ToString("F0"); break; case SimRecord.DataSet.WattsStrogatz: fileDir += "_k" + (model.meanDegree).ToString("F0"); fileDir += "_n" + (model.allNodeCount).ToString("F0"); break; } Directory.CreateDirectory(fileDir); var filePath = fileDir + "/" + fileName; StreamWriter sw = new StreamWriter(filePath, false, Encoding.GetEncoding("Shift_JIS")); sw.WriteLine("DataSet,NodeCount,GoalCount,GraphDensity,UserModel(lambda),Distance,ProbSelectUnknown,ProbReturnFirst,ProbSelectVisibleGoal,OperationCount"); foreach (var record in simRecords) { var str = record.dataSet.ToString(); str += "," + record.nodeCount; str += "," + record.goalCount; str += "," + record.graphDensity.ToString("F5"); str += "," + record.lambda.ToString("F1"); str += "," + record.distance; str += "," + record.pSelectUnknown; str += "," + record.pReturnFirst; str += "," + record.pSelectVisibleGoal; str += "," + record.opCount; sw.WriteLine(str); } sw.Close(); }