prob = 0;
}
-#define PRINTF if (!doprint) ; else printf /* bodgy */
+#define PRINTF(...) if (!doprint) ; else fprintf(stderr, __VA_ARGS__) /* bodgy */
PRINTF("%2d ", maxhamweight);
best_adjmatrix = xalloc_adjmatrix();
memcpy(best_adjmatrix, adjmatrix, sizeof(*adjmatrix)*n);
- printf(" BEST \n");
+ PRINTF(" BEST \n");
return;
}
out:
if (prob)
glp_delete_prob(prob);
- if (doprint) { printf(" \r"); fflush(stdout); }
+ if (doprint) { PRINTF(" \r"); fflush(stdout); }
}
static void iterate_recurse(int i, AdjWord min) {
m = atoi(argv[2]);
prep();
iterate();
- printf("\n");
- if (best_prob)
- glp_print_sol(best_prob,"/dev/stdout");
+ fprintf(stderr, "\n");
+ if (best_prob) {
+ double min = glp_get_obj_val(best_prob);
+ double a[n][m];
+ int i, j, cols;
+ for (i = 0; i < n; i++)
+ for (j = 0; j < m; j++)
+ a[i][j] = 0;
+ cols = glp_get_num_cols(best_prob);
+ for (i = 1; i <= cols; i++) {
+ int x, y;
+ if (2 != sscanf(glp_get_col_name(best_prob, i), "mf %d,%d", &x, &y))
+ continue;
+ a[x][y] = min + glp_get_col_prim(best_prob, i);
+ }
+ printf("%d into %d: min fragment %g\n", n, m, min);
+ for (i = 0; i < n; i++) {
+ for (j = 0; j < m; j++) {
+ if (a[i][j])
+ printf(" %9.3f", a[i][j]);
+ else
+ printf(" ");
+ }
+ printf("\n");
+ }
+ }
if (ferror(stdout) || fclose(stdout)) { perror("stdout"); exit(-1); }
return 0;
}