Exemple #1
0
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;
}
Exemple #2
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;
}