Beispiel #1
0
    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;
    }
Beispiel #2
0
    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.");
    }
Beispiel #3
0
    // 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();
    }