⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 obs_sink.em.c

📁 实验室前辈用OPNET做的光突发交换网络的仿真实验
💻 C
📖 第 1 页 / 共 3 页
字号:
		"op_pk_destroy (pktr);",
		"",
		"",
		"",
		"/*",
		"if(jj==0)",
		"{	",
		"printf(\"strm index in num = %d\\n\",op_strm_max_index_in());",
		"printf(\"strm index out num = %d\\n\",op_strm_max_index_out());",
		"jj=1;",
		"}",
		"*/",
		PRGC_NIL);

	Ema_Object_Attr_Set (model_id, obj [17], 
		"name",                 COMP_CONTENTS, "arrival",
		"Enter Execs",          COMP_CONTENTS, prg_lptr [16],
		"status",               COMP_TOGGLE,   EMAC_ENABLED,
		"position",             COMP_CONTENTS, obj [18],
		"initial",              COMP_TOGGLE,   EMAC_DISABLED,
		EMAC_EOL);


	/* assign attrs for object 'obj [19]' */
	/* create and init prg list 'prg_lptr [18]' */
	prg_lptr [18] = (Prg_List *)prg_list_create ();
	prg_list_strings_append (prg_lptr [18], 
		"printf(\"total_successed_burst_length_related_hop = %f, count=%d\\n\",total_successed_burst_length_related_hop,total_successed_burst_count);",
		"",
		"self_objid = op_id_self ();",
		"node_objid = op_topo_parent (self_objid);",
		"subnet_objid = op_topo_parent (node_objid);",
		"op_ima_obj_attr_get(node_objid, \"user id\", &userid);",
		"",
		"if(userid == 14)",
		"{",
		"",
		"	op_ima_obj_attr_get(self_objid, \"file name\", &file_name);",
		"	op_ima_obj_attr_get(self_objid, \"sim_time\", &sim_time);",
		"",
		"	loss = 0.0;",
		"	fis_loss = 0;",
		"",
		"	total_average_hop = 0.0;",
		"	b_total_average_hop = 0.0;",
		"	",
		"	total_average_delay = 0.0;",
		"	b_total_average_delay = 0.0;",
		"	",
		"	total_gen_bcp = 0;",
		"	total_all_succ = 0;",
		"	utilization = 0.0;",
		"	backup_count = 0;",
		"",
		"	s_bcp = 0;",
		"	f_bcp = 0;",
		"	/////////////////////////////// loss rate hop delay ////////////////////////////",
		"	",
		"	for(i=1;i<NODE_NUM;i++)",
		"	{",
		"		for(j=1;j<NODE_NUM;j++)",
		"		{",
		"			if(i != j)",
		"			{",
		"				",
		"				",
		"				fail[i][j] = fail[i][j] + fis_fail[i][j];",
		"				",
		"				s_bcp = s_bcp + succ[i][j];",
		"				f_bcp = f_bcp + fail[i][j];",
		"				",
		"				if(fail[i][j] == 0) loss_rate[i][j] = 0;",
		"				else loss_rate[i][j] = (double)fail[i][j] / ((double)succ[i][j]+(double)fail[i][j]);",
		"				loss = loss + loss_rate[i][j];",
		"",
		"				fis_loss = fis_loss + fis_fail[i][j];",
		"				",
		"				if(sum_hop[i][j] == 0) average_hop[i][j] = 0;",
		"				else average_hop[i][j] = (double)sum_hop[i][j] / (double)succ[i][j];",
		"				",
		"				if(b_sum_hop[i][j] == 0) b_average_hop[i][j] = 0;",
		"				else ",
		"				{	",
		"					b_average_hop[i][j] = (double)b_sum_hop[i][j] / (double)b_succ[i][j];",
		"					backup_count++;",
		"				}	",
		"				",
		"				total_average_hop = (double)(total_average_hop + average_hop[i][j]);",
		"				b_total_average_hop = (double)(b_total_average_hop+b_average_hop[i][j]);",
		"				",
		"				if(sum_delay == 0) average_delay[i][j] = 0;",
		"				else average_delay[i][j] = (double)sum_delay[i][j] / (double)succ[i][j];",
		"",
		"				if(b_sum_delay[i][j] == 0) b_average_delay[i][j] = 0;",
		"				else b_average_delay[i][j] = (double)b_sum_delay[i][j] / (double)b_succ[i][j];",
		"				",
		"				total_average_delay = total_average_delay + average_delay[i][j];",
		"				b_total_average_delay = b_total_average_delay + b_average_delay[i][j];",
		"				utilization = utilization + burst_time[i][j];",
		"				",
		"				",
		"/*				printf(\"fail = %d\\n\", fail[i][j]);",
		"				printf(\"succ = %d\\n\", succ[i][j]);",
		"				printf(\"loss_rate = %f\\n\", loss_rate[i][j]);",
		"				printf(\"loss = %f\\n\", loss);",
		"				printf(\"sum_hop = %d\\n\", sum_hop[i][j]);",
		"				printf(\"b_sum_hop = %d\\n\", b_sum_hop[i][j]);",
		"				printf(\"average_hop = %f\\n\", average_hop[i][j]);",
		"				printf(\"b_average_hop = %f\\n\", b_average_hop[i][j]);",
		"				printf(\"sum_delay = %f\\n\", sum_delay[i][j]);",
		"				printf(\"b_sum_delay =%f\\n\", b_sum_delay[i][j]);",
		"				printf(\"average_delay = %f\\n\", average_delay[i][j]);",
		"				printf(\"b_average_delay = %f\\n\", b_average_delay[i][j]);",
		"				if(burst_time[i][j] !=0) printf(\"burst_time = %f\\n\", burst_time[i][j]);",
		"*/",
		"			}",
		"		}",
		"		total_gen_bcp = total_gen_bcp + gen_bcp[i];",
		"		total_all_succ = total_all_succ + all_succ[i];",
		"//		printf(\"gen = %d succ = %d\\n\", gen_bcp[i], all_succ[i]);",
		"//		printf(\"succ = %d fail = %d\\n\", s_bcp, f_bcp);",
		"//		getchar();",
		"",
		"	}",
		"",
		"	loss = (double) loss / 16;",
		"	total_average_hop = (double) total_average_hop /16;",
		PRGC_NIL);

	prg_list_strings_append (prg_lptr [18], 
		"	b_total_average_hop = (double) b_total_average_hop / backup_count;",
		"	total_average_delay = (double) total_average_delay / 16;",
		"	b_total_average_delay = (double) b_total_average_delay / backup_count;",
		"	",
		"	utilization = (double) utilization / (4*WAVE_NUM*sim_time);",
		"	throughput = (double) total_all_succ / total_gen_bcp;",
		"	",
		"	back_average_delay = (double) back_sum_delay/back_succ;",
		"	back_average_hop = (double) back_sum_hop/back_succ;",
		"	back_throughput = (double) back_succ/gen_backup_bcp;",
		"	back_loss = (double) (back_fail+back_fis_fail)/(gen_backup_bcp+back_fis_fail);",
		"	back_utilization = (double) back_burst_time/(back_average_hop*WAVE_NUM*1);",
		"	",
		"	/*",
		"	printf(\"back_average_delay = %f\\n\", back_average_delay);",
		"	printf(\"back_average_hop = %f\\n\", back_average_hop);",
		"	printf(\"back_succ = %d\\n\", back_succ);",
		"	printf(\"back_fail = %d\\n\", back_fail);",
		"	printf(\"back_fis_fail = %d\\n\", back_fis_fail);",
		"	printf(\"gen_backup_bcp = %d\\n\", gen_backup_bcp);",
		"	printf(\"back_throughput = %f\\n\", back_throughput);",
		"	printf(\"back_loss = %f\\n\", back_loss);",
		"	printf(\"back_burst_time = %f\\n\", back_burst_time);",
		"	printf(\"back_utilization = %f\\n\", back_utilization);",
		"	",
		"	//getchar();",
		"	",
		"	",
		"	printf(\"LOSS = %f\\n\", loss);",
		"	printf(\"FIS_LOSS = %d\\n\", fis_loss);",
		"	printf(\"TOTAL_AVERAGE_HOP = %f\\n\", total_average_hop);",
		"	printf(\"B_TOTAL_AVERAGE_HOP = %f\\n\", b_total_average_hop);",
		"	printf(\"TOTAL_AVERAGE_DELAY = %f\\n\", total_average_delay);",
		"	printf(\"B_TOTAL_AVERAGE_DELAY = %f\\n\", b_total_average_delay);",
		"	printf(\"utilization = %f\\n\", utilization);",
		"	printf(\"throughput = %f\\n\", throughput);",
		"	*/",
		"	//***************************************************************************",
		"	strcpy(f_name,\"d:/data/bak-\");",
		"	strcat(f_name, file_name);",
		"		   ",
		"	if((fp = fopen(f_name, \"w\")) == NULL)",
		"		{",
		"		printf(\"cannot open file \\n\");",
		"		exit(1);",
		"		}",
		"	fprintf(fp, \"%s\\t\", f_name);",
		"	fprintf(fp, \"b_average_hop:\\t %f\\t\", back_average_hop);",
		"	fprintf(fp, \"b_average delay:\\t%f\\t\", back_average_delay);",
		"	fprintf(fp, \"b_loss:\\t%f\\t\", back_loss);",
		"	fprintf(fp, \"b_throughput:\\t%f\\t\", back_throughput);",
		"	fprintf(fp, \"all_utilization:\\t%f\\t\", utilization);",
		"	fprintf(fp, \"b_utilization:\\t%f\\t\", back_utilization);",
		"	fprintf(fp, \"back_succ:\\t%d\\t\", back_succ);",
		"	fprintf(fp, \"back_fail:\\t%d\\t\", back_fail);",
		"	fprintf(fp, \"back_fis_fail:\\t%d\\t\", back_fis_fail);",
		"	fprintf(fp, \"gen_backup_bcp:\\t%d\\n\", gen_backup_bcp);",
		"",
		"	",
		"	fclose(fp);",
		"	",
		"	",
		"	//***************************************************************************",
		"	strcpy(f_name,\"d:/data/all-\");",
		"	strcat(f_name, file_name);",
		"		   ",
		"	if((fp = fopen(f_name, \"w\")) == NULL)",
		"		{",
		"		printf(\"cannot open file \\n\");",
		"		exit(1);",
		"		}",
		"	fprintf(fp, \"%s\\t\", f_name);",
		"	fprintf(fp, \"fail:\\t%d\\t\", f_bcp);",
		"	fprintf(fp, \"succ:\\t%d\\t\", s_bcp);",
		"	fprintf(fp, \"fis loss rate:\\t%d\\t\", fis_loss);",
		"	fprintf(fp, \"average_hop:\\t%f\\t\", total_average_hop);",
		"	fprintf(fp, \"b_average_hop:\\t %f\\t\", b_total_average_hop);",
		"	fprintf(fp, \"average delay:\\t %f\\t\", total_average_delay);",
		"	fprintf(fp, \"b_average delay:\\t%f\\t\", b_total_average_delay);",
		"	fprintf(fp, \"utilization:\\t%f\\t\", utilization);",
		"	fprintf(fp, \"loss rate:\\t%f\\t\", loss);",
		"	fprintf(fp, \"throughput:\\t%f\\n\", throughput);",
		"	",
		"	for(i=1;i<NODE_NUM;i++)",
		"	{",
		"		for(j=1;j<NODE_NUM;j++)",
		"		{",
		"			if(i != j)",
		"			{",
		"",
		"				if((fail[i][j] > 0) || (succ[i][j] > 0)) ",
		"					{",
		"					fprintf(fp,\"fail[%d][%d] = %d\\n\", i, j, fail[i][j]);",
		"					fprintf(fp,\"succ[%d][%d] = %d\\n\", i, j, succ[i][j]);",
		"					fprintf(fp,\"loss_rate[%d][%d] = %f\\n\", i,j,loss_rate[i][j]);",
		"					}",
		"			}",
		"		}",
		"	}	",
		"	",
		PRGC_NIL);

	prg_list_strings_append (prg_lptr [18], 
		"	fclose(fp);",
		"	",
		"	}",
		"",
		PRGC_NIL);

	/* create and init prg list 'prg_lptr [19]' */
	prg_lptr [19] = (Prg_List *)prg_list_create ();
	Ema_Object_Attr_Set (model_id, obj [19], 
		"name",                 COMP_CONTENTS, "end",
		"Enter Execs",          COMP_CONTENTS, prg_lptr [18],
		"Exit Execs",           COMP_CONTENTS, prg_lptr [19],
		"status",               COMP_TOGGLE,   EMAC_DISABLED,
		"position",             COMP_CONTENTS, obj [20],
		"initial",              COMP_TOGGLE,   EMAC_DISABLED,
		EMAC_EOL);


	/* assign attrs for object 'obj [21]' */
	Ema_Object_Attr_Set (model_id, obj [21], 
		"name",                 COMP_CONTENTS, "tr_77",
		"name",                 COMP_INTENDED, EMAC_DISABLED,
		"condition",            COMP_CONTENTS, "",
		"condition",            COMP_INTENDED, EMAC_DISABLED,
		"executive",            COMP_CONTENTS, "",
		"executive",            COMP_INTENDED, EMAC_DISABLED,
		"dest state",           COMP_CONTENTS, obj [15],
		"src state",            COMP_CONTENTS, obj [17],
		"color",                COMP_CONTENTS, 0,
		"color",                COMP_INTENDED, EMAC_DISABLED,
		"path",                 COMP_ARRAY_CONTENTS (0), obj [22],
		"path",                 COMP_ARRAY_CONTENTS (1), obj [23],
		"label pos",            COMP_CONTENTS, obj [24],
		EMAC_EOL);


	/* assign attrs for object 'obj [25]' */
	Ema_Object_Attr_Set (model_id, obj [25], 
		"name",                 COMP_CONTENTS, "tr_83",
		"name",                 COMP_INTENDED, EMAC_DISABLED,
		"condition",            COMP_CONTENTS, "ARRIVAL",
		"executive",            COMP_CONTENTS, "",
		"executive",            COMP_INTENDED, EMAC_DISABLED,
		"dest state",           COMP_CONTENTS, obj [17],
		"src state",            COMP_CONTENTS, obj [15],
		"color",                COMP_CONTENTS, 0,
		"color",                COMP_INTENDED, EMAC_DISABLED,
		"path",                 COMP_ARRAY_CONTENTS (0), obj [26],
		"path",                 COMP_ARRAY_CONTENTS (1), obj [27],
		"label pos",            COMP_CONTENTS, obj [28],
		EMAC_EOL);


	/* assign attrs for object 'obj [29]' */
	Ema_Object_Attr_Set (model_id, obj [29], 
		"name",                 COMP_CONTENTS, "tr_85",
		"name",                 COMP_INTENDED, EMAC_DISABLED,
		"condition",            COMP_CONTENTS, "END_SIM",
		"executive",            COMP_CONTENTS, "",
		"executive",            COMP_INTENDED, EMAC_DISABLED,
		"dest state",           COMP_CONTENTS, obj [19],
		"src state",            COMP_CONTENTS, obj [17],
		"color",                COMP_CONTENTS, 0,
		"color",                COMP_INTENDED, EMAC_DISABLED,
		"path",                 COMP_ARRAY_CONTENTS (0), obj [30],
		"path",                 COMP_ARRAY_CONTENTS (1), obj [31],
		"label pos",            COMP_CONTENTS, obj [32],
		EMAC_EOL);


	/* assign attrs for object 'obj [33]' */
	Ema_Object_Attr_Set (model_id, obj [33], 
		"name",                 COMP_CONTENTS, "tr_87",
		"name",                 COMP_INTENDED, EMAC_DISABLED,
		"condition",            COMP_CONTENTS, "END_SIM",
		"executive",            COMP_CONTENTS, "",
		"executive",            COMP_INTENDED, EMAC_DISABLED,
		"dest state",           COMP_CONTENTS, obj [19],
		"src state",            COMP_CONTENTS, obj [15],
		"color",                COMP_CONTENTS, 0,
		"color",                COMP_INTENDED, EMAC_DISABLED,
		"path",                 COMP_ARRAY_CONTENTS (0), obj [34],
		"path",                 COMP_ARRAY_CONTENTS (1), obj [35],
		"label pos",            COMP_CONTENTS, obj [36],
		EMAC_EOL);


	/* assign attrs for object 'obj [37]' */
	Ema_Object_Attr_Set (model_id, obj [37], 
		"name",                 COMP_CONTENTS, "tr_89",
		"name",                 COMP_INTENDED, EMAC_DISABLED,
		"condition",            COMP_CONTENTS, "BEG_SIM",
		"executive",            COMP_CONTENTS, "",
		"executive",            COMP_INTENDED, EMAC_DISABLED,
		"dest state",           COMP_CONTENTS, obj [15],
		"src state",            COMP_CONTENTS, obj [13],
		"color",                COMP_CONTENTS, 0,
		"color",                COMP_INTENDED, EMAC_DISABLED,
		"path",                 COMP_ARRAY_CONTENTS (0), obj [38],
		"path",                 COMP_ARRAY_CONTENTS (1), obj [39],
		"label pos",            COMP_CONTENTS, obj [40],
		EMAC_EOL);


	/* assign attrs for object 'obj [41]' */
	Ema_Object_Attr_Set (model_id, obj [41], 
		"name",                 COMP_CONTENTS, "tr_91",
		"name",                 COMP_INTENDED, EMAC_DISABLED,
		"condition",            COMP_CONTENTS, "default",
		"executive",            COMP_CONTENTS, "",
		"executive",            COMP_INTENDED, EMAC_DISABLED,
		"dest state",           COMP_CONTENTS, obj [15],
		"src state",            COMP_CONTENTS, obj [15],
		"color",                COMP_CONTENTS, 0,
		"color",                COMP_INTENDED, EMAC_DISABLED,
		"path",                 COMP_ARRAY_CONTENTS (0), obj [42],
		"path",                 COMP_ARRAY_CONTENTS (1), obj [43],
		"path",                 COMP_ARRAY_CONTENTS (2), obj [44],
		"path",                 COMP_ARRAY_CONTENTS (3), obj [45],
		"label pos",            COMP_CONTENTS, obj [46],
		EMAC_EOL);


	/* assign attrs for object 'obj [14]' */
	Ema_Object_Attr_Set (model_id, obj [14], 
		"x",                    COMP_CONTENTS, (double) 90,
		"y",                    COMP_CONTENTS, (double) 90,
		EMAC_EOL);


	/* assign attrs for object 'obj [16]' */
	Ema_Object_Attr_Set (model_id, obj [16], 
		"x",                    COMP_CONTENTS, (double) 330,
		"y",                    COMP_CONTENTS, (double) 90,
		EMAC_EOL);


	/* assign attrs for object 'obj [18]' */
	Ema_Object_Attr_Set (model_id, obj [18], 
		"x",                    COMP_CONTENTS, (double) 330,
		"y",                    COMP_CONTENTS, (double) 270,
		EMAC_EOL);


	/* assign attrs for object 'obj [20]' */
	Ema_Object_Attr_Set (model_id, obj [20], 
		"x",                    COMP_CONTENTS, (double) 90,
		"y",                    COMP_CONTENTS, (double) 270,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -