コード例 #1
0
        public async Task Verify(FileInfo kplModelFile, FileInfo outputFile, SimulatorSettings settings, ISimulatorProgressMonitor monitor)
        {
            this.settings = settings;
            this.monitor  = monitor;
            await Task.Run(() =>
            {
                try
                {
                    monitor.Start(5, string.Format("Simulates the {0} model using the FLAME simulator...", kplModelFile.Name));

                    monitor.LogProgress(0, "Translate in the correspoding FLAME model...");
                    FileInfo tempFolder;
                    TranslateModel(kplModelFile, outputFile, out tempFolder);

                    monitor.LogProgress(2, "Generating the FLAME model...");
                    GenerateModel(new FileInfo(tempFolder + modelGeneratedFile));

                    monitor.LogProgress(3, "Compiling the FLAME model...");
                    CompileModel(tempFolder);

                    Clean(tempFolder);

                    monitor.LogProgress(4, "Simulate the FLAME model...");
                    Simulate(outputFile);


                    monitor.Done("Finished the simulation process");
                }
                catch (Exception e)
                {
                    monitor.Terminate("Simulation failed: " + e.Message);
                }
            });
        }
コード例 #2
0
        public async Task Verify(FileInfo kplModelFile, FileInfo outputFile, SimulatorSettings settings, ISimulatorProgressMonitor monitor)
        {
            this.settings = settings;
            await Task.Run(() =>
            {
                try
                {
                    monitor.Start(1, string.Format("Simulating the {0} model using the kPWorkbench simulator...", kplModelFile.Name));

                    monitor.LogProgress(0, "Performing simulation...");
                    Execute(kplModelFile, outputFile);

                    monitor.Done("Finished the simulation process");
                }
                catch (Exception e)
                {
                    monitor.Terminate("Simulation failed: " + e.Message);
                }
            });
        }
コード例 #3
0
        private void TranslateModel(FileInfo kplFileName, FileInfo outputPathName, out FileInfo tempFolder)
        {
            KpModel kpModel = null;

            try
            {
                kpModel = KP.FromKpl(kplFileName.FullName);
            }
            catch (KplParseException kplException)
            {
                new Exception(string.Format("Failed to parse input file {0}. Reason: {1}", kplFileName, kplException.Message));
            }

            KPsystemXMLWriter kPsystemXML = new KPsystemXMLWriter(kpModel.KPsystem);

            try
            {
                Directory.CreateDirectory(outputPathName + "ite");
            }
            catch (KplParseException kplException)
            {
                new Exception(string.Format("Failed to parse create directory {0}. Reason: {1}", kplFileName, kplException.Message));
            }
            using (StreamWriter writer = new StreamWriter(outputPathName + modelGeneratedFile))
            {
                writer.Write(kPsystemXML.ToXML());
            }
            kPsystemXML.SaveCFiles(outputPathName.FullName);
            int  i = 0;
            bool b;

            do
            {
                tempFolder = new FileInfo(i == 0 ? outputPathName + "tmp" : outputPathName + "tmp" + i);
                i++;
                b = Directory.Exists(tempFolder.FullName);
            } while (b);
            try
            {
                Directory.CreateDirectory(tempFolder.FullName);
                tempFolder = new FileInfo(tempFolder + @"/");
            }
            catch (KplParseException kplException)
            {
                new Exception(string.Format("Failed to parse create directory {0}. Reason: {1}", kplFileName, kplException.Message));
            }
            using (StreamWriter writer = new StreamWriter(tempFolder + modelGeneratedFile))
            {
                writer.Write(kPsystemXML.ToXML());
            }
            kPsystemXML.SaveCFiles(tempFolder.FullName);
            using (StreamWriter writer = new StreamWriter(outputPathName + @"ite/0.xml"))
            {
                writer.Write(kPsystemXML.ToAgentsInitialConfiguration());
            }
            using (StreamWriter writer = new StreamWriter(outputPathName + @"ite/map.txt"))
            {
                writer.Write(kPsystemXML.MapObjectIds);
            }
            monitor.LogProgress(2, "KP model translated FLAME model successfully.");
        }