glpk-hs-0.0.0: glpk/glpk.c
#include <glpk.h>
// #include <stdio.h>
// #include <stdlib.h>
glp_prob *c_glp_create_prob(){
glp_prob *lp;
lp = glp_create_prob();
return lp;
}
void c_glp_set_obj_name(glp_prob *lp, const char *name){
glp_set_obj_name(lp, name);
}
void c_glp_set_obj_dir(glp_prob *lp, int dir){
glp_set_obj_dir(lp, dir ? GLP_MAX : GLP_MIN);
}
int c_glp_add_rows(glp_prob *lp, int nrows){
return glp_add_rows(lp, nrows);
}
int c_glp_add_cols(glp_prob *lp, int ncols){
return glp_add_cols(lp, ncols);
}
void c_glp_set_obj_coef(glp_prob *lp, int j, double coef){
glp_set_obj_coef(lp, j, coef);
}
void c_glp_set_row_name(glp_prob *lp, int i, const char * name){
glp_set_row_name(lp, i, name);
}
void c_glp_set_col_name(glp_prob *lp, int i, const char * name){
glp_set_col_name(lp, i, name);
}
void c_glp_set_row_bnds(glp_prob *lp, int i, int type, double lb, double ub){
glp_set_row_bnds(lp, i, type, lb, ub);
}
void c_glp_set_col_bnds(glp_prob *lp, int i, int type, double lb, double ub){
glp_set_col_bnds(lp, i, type, lb, ub);
}
void c_glp_set_mat_row(glp_prob *lp, int i, int len, const int ind[], const double val[]){
glp_set_mat_row(lp, i, len, ind, val);
}
void c_glp_delete_prob(glp_prob *lp){
glp_delete_prob(lp);
}
void c_glp_create_index(glp_prob *lp){
glp_create_index(lp);
}
int c_glp_find_row(glp_prob *lp, const char *name){
return glp_find_row(lp, name);
}
int c_glp_find_col(glp_prob *lp, const char *name){
return glp_find_col(lp, name);
}
int c_glp_solve_simplex(glp_prob *lp, int msg_lev, int tm_lim, int presolve){
glp_smcp smcp;
glp_init_smcp (&smcp);
smcp.msg_lev = msg_lev;
smcp.tm_lim = tm_lim;
smcp.presolve = presolve ? GLP_ON : GLP_OFF;
glp_adv_basis(lp, 0);
return glp_simplex(lp, &smcp);
}
double c_glp_get_obj_val(glp_prob *lp){
return glp_get_obj_val(lp);
}
double c_glp_get_row_prim(glp_prob *lp, int i){
return glp_get_row_prim(lp, i);
}
double c_glp_get_col_prim(glp_prob *lp, int i){
return glp_get_col_prim(lp, i);
}
void c_glp_set_col_kind(glp_prob *lp, int j, int kind){
glp_set_col_kind(lp, j, kind);
}
int c_glp_mip_solve(glp_prob *lp, int msg_lev, int br_tech, int bt_tech, int pp_tech,
int fp_heur, int tm_lim, int cuts, double mip_gap, int presolve){
glp_iocp iocp;
// printf ("%d %d %d time\n", msg_lev, br_tech, tm_lim);
glp_init_iocp(&iocp);
iocp.msg_lev = msg_lev;
iocp.br_tech = br_tech;
iocp.bt_tech = bt_tech;
iocp.pp_tech = pp_tech;
iocp.fp_heur = fp_heur;
iocp.gmi_cuts = cuts & 1 ? GLP_ON : GLP_OFF;
iocp.mir_cuts = cuts & 2 ? GLP_ON : GLP_OFF;
iocp.cov_cuts = cuts & 4 ? GLP_ON : GLP_OFF;
iocp.clq_cuts = cuts & 8 ? GLP_ON : GLP_OFF;
iocp.mip_gap = mip_gap;
iocp.tm_lim = tm_lim;
// printf ("%d %d %d time\n", msg_lev, br_tech, tm_lim);
iocp.presolve = presolve ? GLP_ON : GLP_OFF;
return glp_intopt(lp, &iocp);
}
double c_glp_mip_obj_val (glp_prob *mip){
return glp_mip_obj_val(mip);
}
double c_glp_mip_row_val (glp_prob *mip, int i){
return glp_mip_row_val(mip, i);
}
double c_glp_mip_col_val (glp_prob *mip, int j){
return glp_mip_col_val(mip, j);
}