示例#1
0
        public static IRecorder GetRecorder(RecorderType recorderType)
        {
            IRecorder recorder;

            switch (recorderType)
            {
            case RecorderType.File:
                recorder = new FileRecorder();
                break;

            case RecorderType.Console:
                recorder = new ConsoleRecorder();
                break;

            case RecorderType.Remote:
                recorder = new RemoteRecorder();
                break;

            default:
                recorder = null;
                break;
            }

            return(recorder);
        }
        public void SaveMetrics(string path)
        {
            ComputeAlgorithmMetrics();
            var    searchTimeDict   = MetricsDictionary.ElementAt(0);
            string csvFormatMessage = "Algorithm, SearchTime, CustomerNumber";

            foreach (var metrics in searchTimeDict.Value)//writes base csv format message
            {
                var metricName = metrics.Key;
                csvFormatMessage += ", " + metricName;
            }
            var recorder   = new FileRecorder(path, csvFormatMessage);
            var fileLogger = new Logger.Logger(recorder);

            foreach (var currentMetricDictionary in MetricsDictionary)
            {
                string csvMessage = currentMetricDictionary.Key.Item1 + ", " + currentMetricDictionary.Key.Item2 + ", " +
                                    currentMetricDictionary.Key.Item3;
                foreach (var metric in currentMetricDictionary.Value)
                {
                    var metricValue = metric.Value;
                    csvMessage += ", " + metricValue;
                }
                fileLogger.Log(csvMessage);
            }
        }
        public void SaveStats(string path)
        {
            IRecorder fileRecorder =
                new FileRecorder(path);
            var myFileLogger       = new Logger.Logger(fileRecorder);
            var statsPrintableList = GetStatsPrintableList();

            myFileLogger.Log(statsPrintableList);
        }
示例#4
0
        private void LoadRecords()
        {
            FileRecorder fileRecorder = new FileRecorder();

            foreach (Record record in fileRecorder.RecordList)
            {
                AddRecord(record, false);
                foreach (SubRecord subRecord in record.SubRecords)
                {
                    AddSubRecord(record.ID, subRecord, false);
                }
            }
        }
示例#5
0
        public override void OnSimulationStart()
        {
            IRecorder fileRecorder = new FileRecorder(Path.Combine(Params.CurrentSimulationLoggerPath, @"event_logs.txt"));

            EventLogger = new Logger.Logger(fileRecorder);
            IRecorder validationsRecorder = new FileRecorder(Path.Combine(Params.CurrentSimulationLoggerPath, @"validations.txt"), "ValidationId,CustomerId,Category,OperationSuccess,VehicleId,RouteId,TripId,ServiceStartTime,StopId,Time");

            ValidationsLogger = new Logger.Logger(validationsRecorder);
            if (Params.NumberDynamicRequestsPerHour > 0)
            {
                AddAllDynamicRequestEvents();
            }
            Params.VehicleNumber = Context.VehicleFleet.Count;
            Params.PrintParams();
            var paramsPath = Path.Combine(Params.CurrentSimulationLoggerPath, @"params.txt");

            Params.SaveParams(paramsPath);
            Stats = new SimulationStats(this);//initializes Stats
            SortEvents();
        }
 public void TestFixtureTearDown()
 {
     _fileRecorder.Clear();
     _fileRecorder = null;
 }
 public void TestFixtureSetup()
 {
     _fileRecorder = new PaloAltoUrlUnifiedRecorder();
     _context = new FileLineRecorderContext(_base);
 }
示例#8
0
        public void StructureFile(string path)
        {
            FileDataReader fdr = new FileDataReader();
            var            unstructuredData = fdr.ImportData(path, ',', false);
            var            algorithmCounter = 0;
            var            datasetId        = 1;
            var            algorithmsList   = new List <string>();
            var            dataSetList      = new List <string[]>();
            var            dataList         = new List <string[]>();

            string[] currentDataset = null;
            foreach (var data in unstructuredData)
            {
                if (algorithmCounter == 0)
                {
                    string[] dataSet = new string[data.Length + 1];
                    dataSet[0] = datasetId++.ToString();
                    for (int i = 0; i < data.Length; i++)
                    {
                        dataSet[i + 1] = data[i];
                    }
                    Console.WriteLine("Dataset " + dataSet[0] + "- Customer Number: " + dataSet[1] + "; Vehicle number: " + dataSet[2] + " ; MaxRideTime: " + dataSet[3] + " ; MaxAllowedUpperBound: " + dataSet[4]);
                    dataSetList.Add(dataSet);
                    currentDataset = dataSet;
                }
                else
                {
                    var algorithmStats = data;
                    Console.WriteLine(algorithmStats[0]);
                    if (!algorithmsList.Contains(algorithmStats[0]))
                    {
                        algorithmsList.Add(algorithmStats[0]);
                    }

                    string[] algData = new string[algorithmStats.Length + 1];
                    algData[0] = algorithmsList.FindIndex(a => a == algorithmStats[0]).ToString();
                    for (int i = 1; i < algorithmStats.Length; i++)
                    {
                        algData[i] = algorithmStats[i];
                    }

                    algData[algorithmStats.Length] = dataSetList.FindIndex(d => d == currentDataset).ToString();
                    dataList.Add(algData);
                    Console.WriteLine("Alg: " + algData[0] + " ; AllowdropNodes:" + algData[1] + " ; Feasible: " +
                                      algData[2] + " ; SearchTime: " + algData[3] + " ; ComputationTime:" +
                                      algData[4] + " ; ObjValue: " + algData[5] + " ; MaximumAllowedDeliveryDelay: " +
                                      algData[6] + " ; TotalServedRequests: " + algData[7] + " ; TotalDistance: " +
                                      algData[8] + " ; TotalTime: " + algData[9] + " ; VehiclesUsed: " +
                                      algData[10] + " ; Dataset: " + algData[11]);
                }

                algorithmCounter++;
                if (algorithmCounter == 8)
                {
                    algorithmCounter = 0;
                }
            }
            IRecorder algorithmStructRecorder = new FileRecorder(Path.Combine(@Path.Combine(Environment.CurrentDirectory, @"Logger", @"AlgorithmsStruct.csv")));
            IRecorder datasetRecorder         = new FileRecorder(Path.Combine(@Path.Combine(Environment.CurrentDirectory, @"Logger", @"Dataset.csv")));

            for (int j = 0; j < 2; j++)
            {
                IRecorder       recorder;
                List <string[]> dataToBeRecorded = null;
                if (j == 0)
                {
                    dataToBeRecorded = dataList;
                    recorder         = algorithmStructRecorder;
                    string firstLine = "AlgId, AllowdropNodes,Feasible,SearchTime,ComputationTime,ObjValue,MaximumAllowedDeliveryDelay,TotalServedRequests,TotalDistance,TotalTime, VehiclesUsed, DatasetId";
                    recorder.Record(firstLine);
                }
                else
                {
                    dataToBeRecorded = dataSetList;
                    recorder         = datasetRecorder;
                    string firstLine = "DatasetId,CustomerNumber, Vehicle number,MaxRideTime,MaxAllowedUpperBound";
                    recorder.Record(firstLine);
                }

                foreach (var data in dataToBeRecorded)
                {
                    var toBeRecorded = "";
                    var splitter     = ',';
                    for (int i = 0; i < data.Length; i++)
                    {
                        if (i != data.Length - 1)
                        {
                            toBeRecorded += data[i] + splitter;
                        }
                        else
                        {
                            toBeRecorded += data[i];
                        }
                    }

                    recorder.Record(toBeRecorded);
                }
            }
        }