int main(){ int converge = 0; int k = 0; while(!converge){ printf("Value Iteration %d ...", k++); converge = 1; for(unsigned i = 0; i < STATE_SPACE; i++){ state_t state; state.key = i; if(!validate_state(state)) continue; value_update(state, k); if(vnext[state.key] - v[state.key] > error_tolerance || vnext[state.key] - v[state.key] < -error_tolerance) converge = 0; } printf("\b\b\b\n"); memcpy(v, vnext, sizeof(v)); } FILE* f = fopen("output.txt", "wb"); const char* action_name[] = { "wait", "bt ", "rb ", "ws ", }; for(unsigned k = 0; k < STATE_SPACE; k++){ state_t state; state.key = k; if(!validate_state(state)) continue; if(!state.state.gcd) fprintf(f, "RBST %d, BSST %d, ERRM %d, BTCD %d, RAGE %d - %s %.3f\r\n", state.state.rb_st, state.state.bs_st, state.state.er_rm, state.state.bt_cd, state.state.rage, action_name[pi[state.key]], v[state.key]); } demo(); }
int main( int argc, char **argv) { dm_sessid_t sid = DM_NO_SESSION; dm_token_t token = DM_NO_TOKEN; #if 0 char buffer[500]; #endif void *hanp; size_t hlen; dm_stat_t dmstat; char *pathname_obj; int a_flag = 0; char *name; int opt; int validate = 0; Progname = strrchr(argv[0], '/'); if (Progname) { Progname++; } else { Progname = argv[0]; } opterr = 0; while ((opt = getopt(argc, argv, "Aas:t:v")) != EOF) { switch (opt) { case 'A': a_flag = 2; break; case 'a': a_flag = 1; break; case 's': sid = atol(optarg); break; case 't': token = atol(optarg); break; case 'v': validate = 1; break; case '?': usage(); } } if (optind + 1 != argc) { usage(); } pathname_obj = argv[optind]; if (dm_init_service(&name) == -1) { fprintf(stderr, "Can't initialize the DMAPI\n"); exit(1); } if (sid == DM_NO_SESSION) find_test_session(&sid); /* Get the file's handle or convert the external handle. */ if (opaque_to_handle(pathname_obj, &hanp, &hlen)) { fprintf(stderr, "can't get handle for %s\n", pathname_obj); exit(1); } if (!a_flag) { fprintf(stdout, "path/handle %s\n", pathname_obj); /* Get the file's state, print it, then verify it against what is in the file's stat block. */ if (dm_get_fileattr(sid, hanp, hlen, token, DM_AT_EMASK|DM_AT_PMANR|DM_AT_PATTR|DM_AT_DTIME|DM_AT_CFLAG|DM_AT_STAT, &dmstat)) { fprintf(stderr, "dm_get_fileattr failed, %s\n", strerror(errno)); exit(1); } print_state(&dmstat); if(validate) (void)validate_state(&dmstat, pathname_obj, 1); #if 0 } else { if ((rc = filesys_bulkscan_init(pathname, &scanp)) != 0) { fprintf(stderr, "filesys_bulkscan failed, %s\n", fileio_err_image(rc)); exit(1); } for (;;) { rc = filesys_bulkscan_read(scanp, &fhandle, &fullstat); if (rc != FILEIO_NOERROR) break; (void)fhandle_to_buffer(&fhandle, buffer, sizeof(buffer)); if (a_flag == 1) { fprintf(stdout, "handle %s\n", buffer); print_state(&fullstat); fprintf(stdout, "--------------------------\n"); } else { fprintf(stdout, "%s|", buffer); print_line(&fullstat); } } if (rc != FILEIO_ENDOFSCAN) { fprintf(stderr, "filesys_bulkscan_read failed, %s\n", fileio_err_image(rc)); exit(1); } if ((rc = filesys_bulkscan_close(&scanp)) != 0) { fprintf(stderr, "filesys_bulkscan_close failed, %s\n", fileio_err_image(rc)); exit(1); } #endif } exit(0); }