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 _CG_U_H
16 #define _CG_U_H
17 
18 #include "sym_types.h"
19 
20 int cg_add_explicit_cut PROTO((int nzcnt, int *indices, double *values,
21 			       double rhs, double range, char sense,
22 			       char send_to_cp, int *num_cuts, int *alloc_cuts,
23 			       cut_data ***cuts));
24 int cg_add_user_cut PROTO((cut_data *new_cut, int *num_cuts, int *alloc_cuts,
25 			   cut_data ***cuts));
26 int cg_send_cut PROTO((cut_data *new_cut, int *num_cuts, int *alloc_cuts,
27 		       cut_data ***cuts));
28 
29 /*===========================================================================*/
30 /*======================= User supplied functions ===========================*/
31 /*===========================================================================*/
32 
33 int user_receive_cg_data PROTO((void **user, int dg_id));
34 int user_free_cg PROTO((void **user));
35 int user_find_cuts PROTO((void *user, int varnum, int iter_num, int level,
36 			  int index, double objval, int *indices,
37 			  double *values, double ub, double lpetol,
38 			  int *num_cuts, int *alloc_cuts, cut_data ***cuts));
39 int user_receive_lp_solution_cg PROTO((void *user));
40 #ifdef CHECK_CUT_VALIDITY
41 int user_check_validity_of_cut PROTO((void *user, cut_data *new_cut));
42 #endif
43 
44 #endif
45