private void bStart_Click(object sender, EventArgs e) { bStart.Enabled = false; bStop.Enabled = true; bStart.Refresh(); bStop.Refresh(); logWriter = new StreamWriter("simulais_log.txt"); logWriter.WriteLine(DateTime.Now); wsnSimulator = new WsnSimulatorApp(); wsnSimulator.Initializing += new EventHandler <ProgressEventArgs>(simulator_OnProgress); wsnSimulator.LogEvent += new EventHandler <LogEventArgs>(simulator_LogEvent); wsnSimulator.SimulationFinished += new EventHandler <EventArgs>(simulator_SimulationFinished); Scheduler.Dispatching += new Handler(Scheduler_Dispatching); progressFrm = new ProgressFrm(); progressFrm.Show(); var blockLen = 3; try { wsnSimulator.InitFromTrace( "../../../NSTraces/Traces-2009-12-23/ntr_ex5.tr", "../../../NSTraces/nm/ex6_nm4.tr", blockLen, 1, 1, 1, int.Parse(tbNumOfAPCs.Text), int.Parse(tbNumOfTCells.Text), true); // initialize the simulator /*wsnSimulator.Init( * "../../../NSTraces/Traces-2009-12-23/ntr_ex5R.tr", // self trace path * "../../../NSTraces/Traces-2009-12-23/ntr_ex6R.tr", // test trace path * blockLen, // block duration * 1, 1, 1, int.Parse(tbNumOfAPCs.Text), int.Parse(tbNumOfTCells.Text), true); */ } catch (Exception ex) { MessageBox.Show("Simulator initialization failed:\n\n" + ex.Message + "\n\n" + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); progressFrm.Close(); bStart.Enabled = true; bStop.Enabled = false; return; } lymphNode = wsnSimulator.LymphNodes[0]; localTissue = wsnSimulator.LocalTissues[0]; progressFrm.Close(); Refresh(); // start the simulation wsnSimulator.Run(); }
private void Init(List <MolecularPattern> selfPatterns, List <SimulatorInitEvent> initEvents, SimulatorInitArgs args, bool registerLogger) { // create and start local agents // number of local tissue must be equal to the number of NS nodes LocalTissues = new List <LocalTissue>(new LocalTissue[args.NumLocals]); for (int i = 0; i < args.NumLocals; i++) { var lt = new LocalTissue(); LocalTissues[i] = lt; lt.Start(); } // create, train and start thymus agents Thymuses = new List <Thymus>(new Thymus[args.NumThymuses]); for (int i = 0; i < args.NumThymuses; i++) { var thymus = new Thymus(args.NumTCells, args.PeptideLen); thymus.Train(selfPatterns); // train the thymus by self patterns Thymuses[i] = thymus; thymus.Start(); } // create and start bone marrow agents BoneMarrows = new List <BoneMarrow <T> >(new BoneMarrow <T> [args.NumBoneMarrows]); for (int i = 0; i < args.NumBoneMarrows; i++) { var bm = new BoneMarrow <T>(args.NumAPCs, OnProcessSpamp, OnProcessSdamp, OnProcessAntigen); BoneMarrows[i] = bm; bm.Start(); } // create and start lymph node agents LymphNodes = new List <LymphNode>(new LymphNode[args.NumLymphNodes]); for (int i = 0; i < args.NumLymphNodes; i++) { var ln = new LymphNode(); LymphNodes[i] = ln; ln.Start(); } if (registerLogger) { // register logger event foreach (var tissue in Tissues) { tissue.LogEvent += new EventHandler <LogEventArgs>(OnLog); } } // schedule all initial events foreach (var pair in initEvents.Where(e => e.LocalNodeId < LocalTissues.Count)) { if (pair.Signal == null) { throw new Exception("Event signal cannot be null."); } if (pair.LocalNodeId > args.NumLocals) { throw new Exception("Event refers to an invalid local node ID. Check number of local nodes and localNodeId of event."); } Scheduler.Schedule(LocalTissues[pair.LocalNodeId].HandleSignal, pair.Time, pair.Signal); } Initialized = true; }