int main(int argc, char **argv) { CellMap ref_des_lst; char *ref_des_fname; char *ref_des; CellMap cust_pn_lst; char *cust_fname; char *cust_pn; CellMap mcg_pn_lst; char *mcg_fname; char *mcg_pn; const char *prgname; int i; int max; FILE *refdes; int arg_list = 9; prgname = esetprogname("ref2mcg"); if (argc < arg_list) eprintf("too few arguments\n%s", usage()); else if (argc > arg_list) eprintf("too many arguments\n%s", usage()); ref_des_fname = argv[1]; ref_des_col = ord(*argv[2]); cust_fname = argv[3]; cust_pn_col = ord(*argv[4]); cust_ref_des_col= ord(*argv[5]); mcg_fname = argv[6]; mcg_pn_col = ord(*argv[7]); mcg_cust_pn_col = ord(*argv[8]); csv_get_col(&ref_des_lst, ref_des_fname, -1, ref_des_col); csv_get_col(&cust_pn_lst, cust_fname, cust_ref_des_col, cust_pn_col); csv_get_col(&mcg_pn_lst, mcg_fname, mcg_cust_pn_col, mcg_pn_col); max = ref_des_lst.ncells; refdes = fopen(ref_des_fname, "rb"); for (i = 0; i < max; i++) { ref_des = ref_des_lst.cells[i].return_field; cust_pn = find_pn(ref_des, &cust_pn_lst); mcg_pn = find_pn(cust_pn, &mcg_pn_lst); print_result(refdes, ref_des, cust_pn, mcg_pn); } fclose(refdes); free_cellmap(&ref_des_lst); free_cellmap(&cust_pn_lst); free_cellmap(&mcg_pn_lst); free((void *)prgname); return 0; }
int main(int argc, char *argv[]) { // Local variable declaration double t0 = 0; // Intial time , mostly 0 double x0 = 0; // Initial mean number of customers at time t0 double h = 1; double x1 = 0; int i, opt, stable_cnt = 0, n, pflag = 0; if (argc != 9 && argc != 11) { printf("argc %d\n", argc); usage(argv[0]); return 1; } while ((opt = getopt(argc, argv, ":h:x:l:u:p:")) != -1) { //printf("opt %c optarg %s\n", opt, optarg); switch (opt) { case 'h': h = strtod(optarg, NULL); //printf("optarg %s h = %lf\n", optarg, h); break; case 'x': x0 = strtod(optarg, NULL); //printf("optarg %s x0 = %lf\n", optarg, x0); //printf("val = %lf\n", strtod(optarg, NULL)); break; case 'l': lambda = strtod(optarg, NULL); //printf("optarg %s lambda = %f\n", optarg, lambda); //printf("val = %lf\n", strtod(optarg, NULL)); break; case 'u': mu = strtod(optarg, NULL); //printf("optarg %s mu = %f\n", optarg, mu); //printf("val = %lf\n", strtod(optarg, NULL)); break; case 'p': pflag = 1; n = atoi(optarg); break; default: usage(argv[0]); return 1; } } //lambda = 0.8; mu = 1.0; x0 = 0; h = 0.1; printf("# Average number of pkts in the system as a function of time t\n"); printf("# Parameters for this plot\n"); printf("# lambda = %lf mu = %f h = %f x0 = %f\n", lambda, mu, h, x0) ; printf("#\n"); if (pflag) { printf("# time \t\tAvg-number-of-pkts\t\t P(n=%d)\n", n); } else { printf("# time \t\tAvg-number-of-pkts\n"); } if (pflag) { printf("%lf\t\t%.7f\t\t%lf\n", t0, x0, find_pn(x0, n)); } else { printf("%lf\t\t%.7f\n", t0, x0); } /* * This loop continues to calculate until the value of x stays stable for * STABLE_CNT_MAX iterations or upto MAX_ITR iterations. */ for(i = 0; i < MAX_ITR; i++) { x1 = calc_next_value(t0, x0, h); if (pflag) { printf("%lf\t\t%.7f\t\t%lf\n", t0, x1, find_pn(x1, n)); } else { printf("%lf\t\t%.7f\n", t0, x1); } //printf("iter %d x0 = %f x1 = %f stable_cnt = %d\n", i, x0, x1, stable_cnt); if (roundit(x0) == roundit(x1)) { stable_cnt++; if (stable_cnt >= STABLE_CNT_MAX) { printf("Breaking early...\n"); break; } } else { /* * The value of x has not yet stabilized hence we reset the count. */ stable_cnt = 0; } x0 = x1; t0 = t0 + h; } return 0; }