[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
## [Help-glpk] Re: How to solve a simple MIP problem ?

**From**: |
Andrew Makhorin |

**Subject**: |
[Help-glpk] Re: How to solve a simple MIP problem ? |

**Date**: |
Tue, 12 Aug 2003 02:56:47 +0400 |

>*I want to solve a simple problem MIP (I guess) using GLPK API, but*
>* I couldn't find some samples to help me.*
>*My problem is:*
>
>* Minimize: x0*
>
>*Where:*
>* x0 -p + b >= 0*
>* x0 -p -f >= -1*
>* b = 1*
>* f = 1*
>
>*x0, b, f and p are all binary variables.*
>
>*I've tried to change te code that cames with manual but didn't work...*
>*More I change, more problems show up.*
>*Someone could send me a simple C code that solve it?*
Here is an example below.
#include "glpk.h"
#define row_1 1
#define row_2 2
#define col_x0 1
#define col_p 2
#define col_b 3
#define col_f 4
int main(void)
{ LPX *prob;
int ndx[1000];
double val[1000];
prob = lpx_create_prob();
lpx_set_class(prob, LPX_MIP);
lpx_add_rows(prob, 3);
lpx_add_cols(prob, 4);
/* x0 - p + b >= 0 */
ndx[1] = col_x0, val[1] = 1;
ndx[2] = col_p, val[2] = -1;
ndx[3] = col_b, val[3] = 1;
lpx_set_mat_row(prob, row_1, 3, ndx, val);
lpx_set_row_bnds(prob, row_1, LPX_LO, 0, 0);
/* x0 - p - f >= -1 */
ndx[1] = col_x0, val[1] = 1;
ndx[2] = col_p, val[2] = -1;
ndx[3] = col_f, val[3] = -1;
lpx_set_mat_row(prob, row_2, 3, ndx, val);
lpx_set_row_bnds(prob, row_2, LPX_LO, -1, 0);
/* all variables are binary */
lpx_set_col_bnds(prob, col_x0, LPX_DB, 0, 1);
lpx_set_col_kind(prob, col_x0, LPX_IV);
lpx_set_col_bnds(prob, col_p, LPX_DB, 0, 1);
lpx_set_col_kind(prob, col_p, LPX_IV);
lpx_set_col_bnds(prob, col_b, LPX_DB, 0, 1);
lpx_set_col_kind(prob, col_b, LPX_IV);
lpx_set_col_bnds(prob, col_f, LPX_DB, 0, 1);
lpx_set_col_kind(prob, col_f, LPX_IV);
/* minimize x0 */
lpx_set_obj_dir(prob, LPX_MIN);
lpx_set_col_coef(prob, col_x0, 1);
/* solve lp relaxation */
lpx_simplex(prob);
/* solve mip */
lpx_integer(prob);
/* print mip solution */
lpx_print_mip(prob, "sol.txt");
lpx_delete_prob(prob);
return 0;
}

[Prev in Thread] |
**Current Thread** |
[Next in Thread] |

**[Help-glpk] Re: How to solve a simple MIP problem ?**,
*Andrew Makhorin* **<=**