123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132openCtypesmoduleT=Lp_glpk_types.MmoduleM(F:Ctypes.FOREIGN)=structopenFletset_term_out=foreign"glp_term_out"(T.BoolInt.t@->returningvoid)typeprob=unitptrletprob:probtyp=ptrvoidletcreate_prob=foreign"glp_create_prob"(void@->returningprob)letdelete_prob=foreign"glp_delete_prob"(prob@->returningvoid)letset_prob_name=foreign"glp_set_prob_name"(prob@->string@->returningvoid)letget_prob_name=foreign"glp_get_prob_name"(prob@->returningstring)letset_obj_dir=foreign"glp_set_obj_dir"(prob@->T.Dir.t@->returningvoid)letget_obj_dir=foreign"glp_get_obj_dir"(prob@->returningT.Dir.t)letadd_rows=foreign"glp_add_rows"(prob@->int@->returningint)letadd_cols=foreign"glp_add_cols"(prob@->int@->returningint)letset_row_name=foreign"glp_set_row_name"(prob@->int@->string@->returningvoid)letget_row_name=foreign"glp_get_row_name"(prob@->int@->returningstring)letset_col_name=foreign"glp_set_col_name"(prob@->int@->string@->returningvoid)letget_col_name=foreign"glp_get_col_name"(prob@->int@->returningstring)(** set_row_bnds [prob] [i] [bnd] [lb] [ub] sets bounds of i-th row (constraint).
If the row is not lower (upper) bounded, lb (ub) is just ignored.
If the row is equality constraint (Bnd.FX),
only [lb] is used and [ub] is ignored.
*)letset_row_bnds=foreign"glp_set_row_bnds"(prob@->int@->T.Bnd.t@->double@->double@->returningvoid)(** set_col_bnds [prob] [j] [bnd] [lb] [ub] sets bounds of j-th col (variable).
If the col is not lower (upper) bounded, lb (ub) is just ignored.
If the col is equality constraint (Bnd.FX),
only [lb] is used and [ub] is ignored.
*)letset_col_bnds=foreign"glp_set_col_bnds"(prob@->int@->T.Bnd.t@->double@->double@->returningvoid)(** set_obj_coef [prob] [j] sets the objective coefficient at j-th col (variable) *)letset_obj_coef=foreign"glp_set_obj_coef"(prob@->int@->double@->returningvoid)(** set_mat_row [prob] [i] [len] [indices] [vals] sets the i-th row of constraint matrix. *)letset_mat_row=foreign"glp_set_mat_row"(prob@->int@->int@->ptrvoid@->ptrvoid@->returningvoid)(** set_mat_col [prob] [j] [len] [indices] [vals] sets the j-th column of constraint matrix. *)letset_mat_col=foreign"glp_set_mat_col"(prob@->int@->int@->ptrvoid@->ptrvoid@->returningvoid)(** load_matrix [prob] [ne] [ia] [ja] [ar] sets the constraint matrix.
The matrix is represented as an sparce matrix.
for k=1 .. [ne], value [ar][k] is set at ([ia][k], [ja][k]) element.
*)letload_matrix=foreign"glp_load_matrix"(prob@->int@->ptrvoid@->ptrvoid@->ptrvoid@->returningvoid)letset_col_kind=foreign"glp_set_col_kind"(prob@->int@->T.Vt.t@->returningvoid)letget_col_kind=foreign"glp_get_col_kind"(prob@->int@->returningT.Vt.t)letget_num_rows=foreign"glp_get_num_rows"(prob@->returningint)letget_num_cols=foreign"glp_get_num_cols"(prob@->returningint)letget_num_nz=foreign"glp_get_num_nz"(prob@->returningint)letget_num_int=foreign"glp_get_num_int"(prob@->returningint)letget_num_bin=foreign"glp_get_num_bin"(prob@->returningint)letinit_smcp=foreign"glp_init_smcp"(ptrT.Smcp.t@->returningvoid)letinit_iocp=foreign"glp_init_iocp"(ptrT.Iocp.t@->returningvoid)letsimplex=foreign"glp_simplex"(prob@->ptrT.Smcp.t@->returningT.SimplexReturn.t)letintopt=foreign"glp_intopt"(prob@->ptrT.Iocp.t@->returningT.IntoptReturn.t)letget_status=foreign"glp_get_status"(prob@->returningT.Stat.t)letmip_status=foreign"glp_mip_status"(prob@->returningT.Stat.t)letget_obj_val=foreign"glp_get_obj_val"(prob@->returningdouble)letmip_obj_val=foreign"glp_mip_obj_val"(prob@->returningdouble)letget_row_prim=foreign"glp_get_row_prim"(prob@->int@->returningdouble)letget_row_dual=foreign"glp_get_row_dual"(prob@->int@->returningdouble)letmip_row_val=foreign"glp_mip_row_val"(prob@->int@->returningdouble)letget_col_prim=foreign"glp_get_col_prim"(prob@->int@->returningdouble)letget_col_dual=foreign"glp_get_col_dual"(prob@->int@->returningdouble)letmip_col_val=foreign"glp_mip_col_val"(prob@->int@->returningdouble)end