Skip to content

Commit

Permalink
Get correct primal for MIP problems (#23)
Browse files Browse the repository at this point in the history
* Get correct primal for MIP problems

* Review fixes
  • Loading branch information
cdiener authored and KristianJensen committed Feb 22, 2017
1 parent 2190dee commit e7f9459
Showing 1 changed file with 31 additions and 13 deletions.
44 changes: 31 additions & 13 deletions swiglpk/glpk.i
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,19 @@ PyObject* get_col_primals(glp_prob *P) {
int n = glp_get_num_cols(P);
PyObject* list = PyList_New(n);
double prim = 0.0;
int i=0;
for(i=1; i<=n; i++){
prim = glp_get_col_prim(P, i);
PyList_SetItem(list, i-1, PyFloat_FromDouble(prim));
int n_int = glp_get_num_int(P);
int i = 0;

if (n_int == 0) {
for(i=1; i<=n; i++) {
prim = glp_get_col_prim(P, i);
PyList_SetItem(list, i-1, PyFloat_FromDouble(prim));
}
} else {
for(i=1; i<=n; i++) {
prim = glp_mip_col_val(P, i);
PyList_SetItem(list, i-1, PyFloat_FromDouble(prim));
}
}

return list;
Expand All @@ -85,8 +94,8 @@ PyObject* get_col_duals(glp_prob *P) {
int n = glp_get_num_cols(P);
PyObject* list = PyList_New(n);
double dual = 0.0;
int i=0;
for(i=1; i<=n; i++){
int i = 0;
for(i=1; i<=n; i++) {
dual = glp_get_col_dual(P, i);
PyList_SetItem(list, i-1, PyFloat_FromDouble(dual));
}
Expand All @@ -98,10 +107,19 @@ PyObject* get_row_primals(glp_prob *P) {
int n = glp_get_num_rows(P);
PyObject* list = PyList_New(n);
double prim = 0.0;
int i=0;
for(i=1; i<=n; i++){
prim = glp_get_row_prim(P, i);
PyList_SetItem(list, i-1, PyFloat_FromDouble(prim));
int n_int = glp_get_num_int(P);
int i = 0;

if (n_int == 0) {
for(i=1; i<=n; i++) {
prim = glp_get_row_prim(P, i);
PyList_SetItem(list, i-1, PyFloat_FromDouble(prim));
}
} else {
for(i=1; i<=n; i++) {
prim = glp_mip_row_val(P, i);
PyList_SetItem(list, i-1, PyFloat_FromDouble(prim));
}
}

return list;
Expand All @@ -111,7 +129,7 @@ PyObject* get_row_duals(glp_prob *P) {
int n = glp_get_num_rows(P);
PyObject* list = PyList_New(n);
double dual = 0.0;
int i=0;
int i = 0;
for(i=1; i<=n; i++){
dual = glp_get_row_dual(P, i);
PyList_SetItem(list, i-1, PyFloat_FromDouble(dual));
Expand All @@ -125,7 +143,7 @@ intArray* as_intArray(PyObject *list) {
if (PyList_Check(list)) {
int size = PyList_Size(list);
int *int_arr = (int *) malloc((size+1) * sizeof(int));
int i=0;
int i = 0;
for (i=0; i<size; i++) {
PyObject *o = PyList_GetItem(list, i);
if (PyInt_Check(o))
Expand All @@ -147,7 +165,7 @@ doubleArray* as_doubleArray(PyObject *list) {
if (PyList_Check(list)) {
int size = PyList_Size(list);
double *double_arr = (double *) malloc((size+1) * sizeof(double));
int i=0;
int i = 0;
for (i=0; i<size; i++) {
PyObject *o = PyList_GetItem(list, i);
if (PyFloat_Check(o))
Expand Down

0 comments on commit e7f9459

Please sign in to comment.