Example #1
0
	void e161122(int dim, int trials, char* path)
	{
		LTQ ltq;
		ltq.SetDimension(dim);

		Results r;
		r.Add("SR");
		r.Add("SR-C");
		r.Add("SR-C2");

		for (int i = 1; i <= trials; i++)
		{
			printf_s("\r%5d/%5d", i, trials);
			for (int faultRatio = 0; faultRatio < 10; faultRatio++)
			{
				ltq.GenerateFaults(faultRatio * 10);	// 故障を発生させる

				uint32_t node1, node2;		// 出発ノードと目的ノード
				do
				{
					node1 = ltq.GetNodeRandom();
					node2 = ltq.GetConnectedNodeRandom(node1);
				} while (node2 == node1);	// 連結な候補が見つかるまでループ

				r.Update(0, faultRatio, ltq.Routing_Simple(node1, node2));

				Score* c = ltq.CalcCapability();
				r.Update(1, faultRatio, ltq.Routing_SimpleCapability(node1, node2, c));
				delete c;

				c = ltq.CalcCapability2();
				r.Update(2, faultRatio, ltq.Routing_SimpleCapability2(node1, node2, c));
				delete c;
			}
		}
		r.Save(path, trials);
	}