import glpk.glpkpi as glpk # PROBLEM prob = glpk.glp_create_prob() glpk.glp_set_prob_name(prob, "mip") # VARIABLES glpk.glp_add_cols(prob, 3) # 0 <= x <= 4, continuous glpk.glp_set_col_name(prob, 1, "x") glpk.glp_set_col_bnds(prob, 1, glpk.GLP_DB, 0.0, 4.0) # -1 <= y <= 1, continuous glpk.glp_set_col_name(prob, 2, "y") glpk.glp_set_col_bnds(prob, 2, glpk.GLP_DB, -1.0, 1.0) # 0 <= z, integer glpk.glp_set_col_name(prob, 3, "z") glpk.glp_set_col_bnds(prob, 3, glpk.GLP_LO, 0.0, 0.0) glpk.glp_set_col_kind(prob, 3, glpk.GLP_IV) # OBJECTIVE glpk.glp_set_obj_coef(prob, 1, 1.0) glpk.glp_set_obj_coef(prob, 2, 4.0) glpk.glp_set_obj_coef(prob, 3, 9.0) # CONSTRAINTS glpk.glp_add_rows(prob, 3) # c1: x + y <= 5 l = 2 ind = glpk.intArray(l + 1) val = glpk.doubleArray(l + 1) ind[1] = 1; ind[2] = 2; val[1] = 1.0; val[2] = 1.0; glpk.glp_set_mat_row(prob, 1, l, ind, val) glpk.glp_set_row_bnds(prob, 1, glpk.GLP_UP, 0.0, 5.0) glpk.glp_set_row_name(prob, 1, "c1") # c2: x + z >= 10 l = 2 ind = glpk.intArray(l + 1) val = glpk.doubleArray(l + 1) ind[1] = 1; ind[2] = 3; val[1] = 1.0; val[2] = 1.0; glpk.glp_set_mat_row(prob, 2, l, ind, val) glpk.glp_set_row_bnds(prob, 2, glpk.GLP_LO, 10.0, 0.0) glpk.glp_set_row_name(prob, 2, "c2") # c3: -y + z == 7.5 l = 2 ind = glpk.intArray(l + 1) val = glpk.doubleArray(l + 1) ind[1] = 2; ind[2] = 3; val[1] = -1.0; val[2] = 1.0; glpk.glp_set_mat_row(prob, 3, l, ind, val) glpk.glp_set_row_bnds(prob, 3, glpk.GLP_FX, 7.5, 7.5) glpk.glp_set_row_name(prob, 3, "c3") #write problem glpk.glp_write_lp(prob, None, "obtained.lp") # delete it del prob