1 /*===========================================================================*/ 2 /* */ 3 /* This file is part of the SYMPHONY MILP Solver Framework. */ 4 /* */ 5 /* SYMPHONY was jointly developed by Ted Ralphs (ted@lehigh.edu) and */ 6 /* Laci Ladanyi (ladanyi@us.ibm.com). */ 7 /* */ 8 /* (c) Copyright 2005 Ted Ralphs. All Rights Reserved. */ 9 /* */ 10 /* This software is licensed under the Eclipse Public License. Please see */ 11 /* accompanying file for terms. */ 12 /* */ 13 /*===========================================================================*/ 14 15 #ifndef _API_H 16 #define _API_H 17 18 #define COMPILING_FOR_MASTER 19 20 #include "sym_proto.h" 21 #include "sym_master.h" 22 #include "sym_messages.h" 23 24 /*===========================================================================*/ 25 /*===================== Interface functions (master.c) ======================*/ 26 /*===========================================================================*/ 27 28 sym_environment *sym_open_environment PROTO((void)); 29 int sym_set_defaults PROTO((sym_environment *env)); 30 int sym_parse_command_line PROTO((sym_environment *env, int argc, 31 char **argv)); 32 int sym_set_user_data PROTO((sym_environment *env, void *user)); 33 int sym_get_user_data PROTO((sym_environment *env, void **user)); 34 int sym_read_mps PROTO((sym_environment *env, char *infile)); 35 int sym_read_gmpl PROTO((sym_environment *env, char *modelfile, 36 char *datafile)); 37 int sym_load_problem PROTO((sym_environment *env)); 38 int sym_find_initial_bounds PROTO((sym_environment *env)); 39 40 int sym_solve PROTO((sym_environment *env)); 41 int sym_warm_solve PROTO((sym_environment *env)); 42 int sym_mc_solve PROTO((sym_environment *env)); 43 44 int sym_create_permanent_cut_pools PROTO((sym_environment *env, int *cp_num)); 45 int sym_close_environment PROTO((sym_environment *env)); 46 int sym_explicit_load_problem PROTO((sym_environment *env, int numcols, 47 int numrows, int *start, int *index, 48 double *value, double *collb, 49 double *colub, char *is_int, double *obj, 50 double *obj2, char *rowsen, 51 double *rowrhs, double *rowrng, 52 char make_copy)); 53 54 int sym_is_abandoned PROTO((sym_environment *env)); 55 int sym_is_proven_optimal PROTO((sym_environment *env)); 56 int sym_is_proven_primal_infeasible PROTO((sym_environment *env)); 57 int sym_is_iteration_limit_reached PROTO((sym_environment *env)); 58 int sym_is_time_limit_reached PROTO((sym_environment *env)); 59 int sym_is_target_gap_achieved PROTO((sym_environment *env)); 60 61 int sym_get_status PROTO((sym_environment *env)); 62 int sym_get_num_cols PROTO((sym_environment *env, int *numcols)); 63 int sym_get_num_rows PROTO((sym_environment *env, int *numrows)); 64 int sym_get_num_elements PROTO((sym_environment *env, int *numelems)); 65 int sym_get_col_lower PROTO((sym_environment *env, double *collb)); 66 int sym_get_col_upper PROTO((sym_environment *env, double *colub)); 67 int sym_get_row_sense PROTO((sym_environment *env, char *rowsen)); 68 int sym_get_rhs PROTO((sym_environment *env, double *rowrhs)); 69 int sym_get_matrix PROTO((sym_environment *env, int *nz, int *matbeg, 70 int *matind, double *matval)); 71 int sym_get_row_range PROTO((sym_environment *env, double *rowrng)); 72 int sym_get_row_lower PROTO((sym_environment *env, double *rowlb)); 73 int sym_get_row_upper PROTO((sym_environment *env, double *rowub)); 74 int sym_get_obj_coeff PROTO((sym_environment *env, double *obj)); 75 int sym_get_obj2_coeff PROTO((sym_environment *env, double *obj2)); 76 int sym_get_obj_sense PROTO((sym_environment *env, int *sense)); 77 78 int sym_is_continuous PROTO((sym_environment *env, int index, int *value)); 79 int sym_is_binary PROTO((sym_environment *env, int index, int *value)); 80 int sym_is_integer PROTO((sym_environment *env, int index, int *value)); 81 82 double sym_get_infinity PROTO(()); 83 84 int sym_get_col_solution PROTO((sym_environment *env, double *colsol)); 85 int sym_get_row_activity PROTO((sym_environment *env, double *rowact)); 86 int sym_get_obj_val PROTO((sym_environment *env, double *objval)); 87 int sym_get_primal_bound PROTO((sym_environment *env, double *ub)); 88 int sym_get_iteration_count PROTO((sym_environment *env, int *numnodes)); 89 90 int sym_set_obj_coeff PROTO((sym_environment *env, int index, double value)); 91 int sym_set_obj2_coeff PROTO((sym_environment *env, int index, double value)); 92 int sym_set_col_lower PROTO((sym_environment *env, int index, double value)); 93 int sym_set_col_upper PROTO((sym_environment *env, int index, double value)); 94 int sym_set_row_lower PROTO((sym_environment *env, int index, double value)); 95 int sym_set_row_upper PROTO((sym_environment *env, int index, double value)); 96 int sym_set_row_type PROTO((sym_environment *env, int index, char rowsense, 97 double rowrhs, double rowrng)); 98 int sym_set_obj_sense PROTO((sym_environment *env, int sense)); 99 int sym_set_col_solution PROTO((sym_environment *env, double * colsol)); 100 int sym_set_primal_bound PROTO((sym_environment *env, double bound)); 101 int sym_set_continuous PROTO((sym_environment *env, int index)); 102 int sym_set_integer PROTO((sym_environment *env, int index)); 103 int sym_set_col_names PROTO((sym_environment *env, char **colname)); 104 int sym_add_col PROTO((sym_environment *env, int numelems, int *indices, 105 double *elements, double collb, double colub, 106 double obj, char is_int, char *name)); 107 int sym_add_row PROTO((sym_environment *env, int numelems, int *indices, 108 double *elements, char rowsen, double rowrhs, 109 double rowrng)); 110 int sym_delete_cols PROTO((sym_environment *env, int num, int * indices)); 111 int sym_delete_rows PROTO((sym_environment *env, int num, int * indices)); 112 113 int sym_write_warm_start_desc PROTO((warm_start_desc *ws, char *file)); 114 warm_start_desc *sym_read_warm_start PROTO((char *file)); 115 116 void sym_delete_warm_start PROTO((warm_start_desc *ws)); 117 warm_start_desc *sym_get_warm_start PROTO((sym_environment *env, 118 int copy_warm_start)); 119 120 int sym_set_warm_start PROTO((sym_environment *env, warm_start_desc *ws)); 121 122 int sym_set_int_param PROTO((sym_environment *env, const char *key, int value)); 123 int sym_set_dbl_param PROTO((sym_environment *env, const char *key, double value)); 124 int sym_set_str_param PROTO((sym_environment *env, const char *key, const char *value)); 125 126 int sym_get_int_param PROTO((sym_environment *env, const char *key, int *value)); 127 int sym_get_dbl_param PROTO((sym_environment *env, const char *key, double *value)); 128 int sym_get_str_param PROTO((sym_environment *env, const char *key, char **value)); 129 130 int sym_get_lb_for_new_rhs PROTO((sym_environment *env, int cnt, 131 int *new_rhs_ind, double *new_rhs_val, 132 double *lb_for_new_rhs)); 133 int sym_get_ub_for_new_rhs PROTO((sym_environment *env, int cnt, 134 int *new_rhs_ind, double *new_rhs_val, 135 double *ub_for_new_rhs)); 136 #if 0 137 int sym_get_lb_for_new_obj PROTO((sym_environment *env, int cnt, 138 int *new_obj_ind, double *new_obj_val, 139 double *lb_for_new_obj)); 140 #endif 141 int sym_get_ub_for_new_obj PROTO((sym_environment *env, int cnt, 142 int *new_obj_ind, double *new_obj_val, 143 double *ub_for_new_obj)); 144 145 warm_start_desc *sym_create_copy_warm_start PROTO((warm_start_desc * ws)); 146 MIPdesc *sym_create_copy_mip_desc PROTO((sym_environment *env)); 147 sym_environment * sym_create_copy_environment PROTO((sym_environment *env)); 148 149 int sym_test PROTO((sym_environment *env)); 150 151 #endif 152