/* solve LP problem coefficients are given in this program */ #include #include "opt.h" /* max x0 + x1 + x2 + 100 s.t. -x0 + 2 x1 = 3 x1 + x2 = 4 x0, x1, x2 >= 0 solution : max = 109 at (x0,x1,x2)=(5,4,0) */ #define NumEqs 2 #define NumVars 3 main() { int m = NumEqs; int n = NumVars; double a[NumEqs][NumVars] = {{-1.00, 2.00, 0.00}, { 0.00, 1.00, 1.00}}; double b[NumEqs] = {3.00, 4.00}; double c[NumVars] = {1.00, 1.00, 1.00}; double d = 100.00; double eps = 1e-4; double ox[NumVars], opt; status st; matrixfprint(stdout, m, n, a); matrixfprint(stdout, m, 1, b); matrixfprint(stdout, 1, n, c); fprintf(stdout, "%lf\n\n", d); st = TwoPhasemethod(m, n, a, b, c, &d, eps, ox, &opt); if (st == success) { puts("--- converge ---"); printf("optimal solution\n"); matrixfprint(stdout, n, 1, ox); printf("optimal value = %lf\n", opt); } else if (st == failure) { puts("--- diverge ---"); } else { puts("--- no feasible solution ---"); } }