Dip  0.92.4
sym_lp_u.h
Go to the documentation of this file.
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 2000-2019 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 LP_U_H
16 #define LP_U_H
17 
18 #include "sym_proto.h"
19 #include "sym_types.h"
20 #include "sym_lp_solver.h"
21 
22 /*----------- Generic selection rules to be used by the user ----------------*/
23 
24 void branch_close_to_half PROTO((int max_cand_num, int *cand_num,
25  branch_obj ***candidates));
26 void branch_close_to_half_and_expensive PROTO((int max_cand_num, int *cand_num,
27  branch_obj ***candidates));
28 void branch_close_to_one_and_cheap PROTO((int max_cand_num, int *cand_num,
29  branch_obj ***candidates));
30 
31 /*===========================================================================*/
32 /*========================= User supplied functions =========================*/
33 /*===========================================================================*/
34 
35 int user_receive_lp_data PROTO((void **user));
36 int user_free_lp PROTO((void **user));
37 int user_create_subproblem PROTO((void *user, int *indices, MIPdesc *mip,
38  int *maxn, int *maxm, int *maxnz));
39 int user_is_feasible PROTO((void *user, double lpetol, int varnum,
40  int *indices, double *values, int *feasible,
41  double *true_objval, char branching,
42  double *heur_solution));
43 int user_send_feasible_solution PROTO((void *user, double lpetol, int varnum,
44  int *indices, double *values));
45 int user_display_lp_solution PROTO((void *user, int which_sol, int varnum,
46  int *indices, double *values));
47 int user_shall_we_branch PROTO((void *user, double lpetol, int cutnum,
48  int slacks_in_matrix_num,
49  cut_data **slacks_im_matrix, int slack_cut_num,
50  cut_data **slack_cuts, int varnum,
51  var_desc **vars, double *x, char *status,
52  int *cand_num, branch_obj ***candidates,
53  int *action));
54 int user_select_candidates PROTO((void *user, double lpetol, int cutnum,
55  int slacks_in_matrix_num,
56  cut_data **slacks_im_matrix,
57  int slack_cut_num, cut_data **slack_cuts,
58  int varnum, var_desc **vars, double *x,
59  char *status, int *cand_num,
60  branch_obj ***candidates, int *action,
61  int bc_level));
62 int user_compare_candidates PROTO((void *user, branch_obj *can1,
63  branch_obj *can2, double ub,
64  double granularity, int *which_is_better));
65 int user_select_child PROTO((void *user, double ub, branch_obj *can,
66  char *action));
67 int user_print_branch_stat PROTO((void *user, branch_obj *can, cut_data *cut,
68  int varnum, var_desc **vars, char *action));
69 int user_add_to_desc PROTO((void *user, int *desc_size, char **desc));
70 int user_same_cuts PROTO((void *user, cut_data *cut1, cut_data *cut2,
71  int *same_cuts));
72 int user_unpack_cuts PROTO((void *user, int from, int type, int varnum,
73  var_desc **vars, int cutnum, cut_data **cuts,
74  int *new_row_num, waiting_row ***new_rows));
75 int user_send_lp_solution PROTO((void *user, int varnum, var_desc **vars,
76  double *x, int where));
77 int user_logical_fixing PROTO((void *user, int varnum, var_desc **vars,
78  double *x, char *status, int *fixed_num));
79 int user_generate_column PROTO((void *user, int generate_what, int cutnum,
80  cut_data **cuts, int prevind, int nextind,
81  int *real_nextind, double *colval, int *colind,
82  int *collen, double *obj, double *lb,
83  double *ub));
84 int user_generate_cuts_in_lp PROTO((void *user, LPdata *lp_data, int varnum,
85  var_desc **vars,double *x,int *new_cut_num,
86  cut_data ***new_cuts));
87 int user_print_stat_on_cuts_added PROTO((void *user, int rownum,
88  waiting_row **rows));
89 int user_purge_waiting_rows PROTO((void *user, int rownum,
90  waiting_row **rows, char *deleten));
91 
92 #endif
#define PROTO(x)
Definition: sym_proto.h:27