public static bool Calc(SensorGroup gp, IList <SensorAcqResult> acqs) { var alv = gp.GetVirtualItems(); if (alv.Any()) { foreach (var groupItem in alv) { if (groupItem.VirtualGroup.GroupType == GroupType.VirtualSensor) { AlgorithmFactory.CreateAlgorithm(groupItem.VirtualGroup).CalcData(acqs); groupItem.Value = (from acq in acqs where acq.Sensor.SensorID == groupItem.VirtualGroup.VirtualSensor.SensorID select acq).FirstOrDefault(); } } return(AlgorithmFactory.CreateAlgorithm(gp).CalcData(acqs)); } else { return(AlgorithmFactory.CreateAlgorithm(gp).CalcData(acqs)); } }
public void InitAlgorithm(string algoName, double h_trg) { //アルゴリズムをセット if (env != null && env.Network != null && env.Network.Nodes != null && env.Network.Nodes.Count() > 0) { //foreach (AATBasedAgentIO aat in env.Network.Nodes) foreach (AgentIO aat in env.Network.Nodes) { aat.Algorithm = (AlgorithmFactory.CreateAlgorithm(algoName, h_trg)); } } }
private void CheckDevices(Configuration configuration, FOI foi) { AlgorithmFactory algorithmFactory = AlgorithmFactory.GetFactory(configuration.Algorithm); Algorithm algorithm = algorithmFactory.CreateAlgorithm(foi); new Thread(() => { Thread.CurrentThread.IsBackground = false; for (int i = 0; i < configuration.NumberOfThreadCycles; i++) { algorithm.Run(configuration.ThreadCycleDuration ?? 1); } ShowStatistics(foi); Console.WriteLine("Program je završio. Pritisnite tipku za izlaz."); Console.ReadKey(); }).Start(); }
/// <summary> /// 执行计算 /// </summary> public IEnumerable <SensorAcqResult> DoCalc() { var sensordatum = new List <SensorAcqResult>(); AlgorithmFactory.CreateAlgorithm(this._calcGroup).CalcData(sensordatum); if (this._calcGroup.GroupType != GroupType.VirtualSensor) { foreach (var groupItem in this._calcGroup.Items) { if (groupItem.Paramters.ContainsKey("value")) { var sar = (SensorAcqResult)groupItem.Paramters["value"]; if (sar.IsOK) { sensordatum.Add(sar); } } } } _calcGroup.ClearParams(); return(sensordatum); }
static void DoExperiment( int EXP_ID, string algoStr, string netStr, int size, double h_trg, int expd, int envSeed, //環境のシード int linkNum, double cluster, //クラスタ係数 string dirname ) { //ディレクトリを作成 L.gDirectory(dirname); //出力するファイルを宣言 L.gDefine("roundacc,aveacc"); //条件を表示 { L.g("all").WriteLine(""); L.g("all").Write("envSeed: " + envSeed); L.g("all").Write(" EXP_ID: " + EXP_ID); //実験IDを L.g("all").Write(" Algo: " + algoStr); //アルゴリズムの名前を表示 L.g("all").Write(" agentnum: " + size); L.g("all").Write(" linkNum: " + linkNum); L.g("all").Write(" cluster: " + cluster);//クラスタ係数 L.g("all").Write(" h_trg: " + h_trg); L.g("all").Write(" expd: " + expd); L.g("roundacc").WriteLine(""); } { //実験一回し Experiment exp = new Experiment(150, 2000); //150ラウンド,2000ステップの実験 exp.SetEnvsetSeed(envSeed); exp.SetFactSeed(0); NetworkGenerator generator = null; //環境を作る if (netStr == "WS") { generator = new WSmodelNetworkGenerator(size, expd, 0.12); } else if (netStr == "BA") { generator = new BAModelNetworkGenerator(size, 4, 2); } else if (netStr == "Random") { generator = new RandomNetworkGenerator(size, 16); } //リーダーネットワークの導入 2014_0707追加 else if (netStr == "Leader") { generator = new LeaderNetworkGenerator(size, expd, 0.12, linkNum); } //シェルを作る generator.NodeCreate += () => new AgentIO(); //generateしてくれる。 OSEnvironment env = new OSEnvironment(generator, (int)(size * 0.05)); //エージェントに脳みそをいれてやる foreach (AgentIO agentIO in env.Network.Nodes) { agentIO.Algorithm = (AlgorithmFactory.CreateAlgorithm(algoStr, h_trg)); } //ファイルにネットワークの情報を表示 L.g("env").WriteLine("" + env); L.g("env").Flush(); exp.Environment = env; //実験を実行 var expResult = exp.Run(); } //ファイルに書き込み L.Flush(); }