/home/coin/SVN-release/CoinAll-1.1.0/SYMPHONY/include/sym_lp_u.h

Go to the documentation of this file.
00001 /*===========================================================================*/
00002 /*                                                                           */
00003 /* This file is part of the SYMPHONY MILP Solver Framework.                  */
00004 /*                                                                           */
00005 /* SYMPHONY was jointly developed by Ted Ralphs (tkralphs@lehigh.edu) and    */
00006 /* Laci Ladanyi (ladanyi@us.ibm.com).                                        */
00007 /*                                                                           */
00008 /* (c) Copyright 2000-2008 Ted Ralphs. All Rights Reserved.                  */
00009 /*                                                                           */
00010 /* This software is licensed under the Common Public License. Please see     */
00011 /* accompanying file for terms.                                              */
00012 /*                                                                           */
00013 /*===========================================================================*/
00014 
00015 #ifndef LP_U_H
00016 #define LP_U_H
00017 
00018 #include "sym_proto.h"
00019 #include "sym_types.h"
00020 #include "sym_lp_solver.h"
00021 
00022 /*----------- Generic selection rules to be used by the user ----------------*/
00023 
00024 void branch_close_to_half PROTO((int max_cand_num, int *cand_num,
00025                                  branch_obj ***candidates));
00026 void branch_close_to_half_and_expensive PROTO((int max_cand_num, int *cand_num,
00027                                                branch_obj ***candidates));
00028 void branch_close_to_one_and_cheap PROTO((int max_cand_num, int *cand_num,
00029                                           branch_obj ***candidates));
00030 
00031 /*===========================================================================*/
00032 /*========================= User supplied functions =========================*/
00033 /*===========================================================================*/
00034 
00035 int user_receive_lp_data PROTO((void **user));
00036 int user_free_lp PROTO((void **user));
00037 int user_create_subproblem PROTO((void *user, int *indices, MIPdesc *mip, 
00038                                   int *maxn, int *maxm, int *maxnz));
00039 int user_is_feasible PROTO((void *user, double lpetol, int varnum,
00040                             int *indices, double *values, int *feasible,
00041                             double *true_objval, char branching,
00042                             double *heur_solution));
00043 int user_send_feasible_solution PROTO((void *user, double lpetol, int varnum,
00044                                        int *indices, double *values));
00045 int user_display_lp_solution PROTO((void *user, int which_sol, int varnum,
00046                                     int *indices, double *values));
00047 int user_shall_we_branch PROTO((void *user, double lpetol, int cutnum,
00048                                 int slacks_in_matrix_num,
00049                                 cut_data **slacks_im_matrix, int slack_cut_num,
00050                                 cut_data **slack_cuts, int varnum,
00051                                 var_desc **vars, double *x, char *status,
00052                                 int *cand_num, branch_obj ***candidates,
00053                                 int *action));
00054 int user_select_candidates PROTO((void *user, double lpetol, int cutnum,
00055                                   int slacks_in_matrix_num,
00056                                   cut_data **slacks_im_matrix,
00057                                   int slack_cut_num, cut_data **slack_cuts,
00058                                   int varnum, var_desc **vars, double *x,
00059                                   char *status, int *cand_num,
00060                                   branch_obj ***candidates, int *action,
00061                                   int bc_level));
00062 int user_compare_candidates PROTO((void *user, branch_obj *can1,
00063                                    branch_obj *can2, double ub,
00064                                    double granularity, int *which_is_better));
00065 int user_select_child PROTO((void *user, double ub, branch_obj *can,
00066                              char *action));
00067 int user_print_branch_stat PROTO((void *user, branch_obj *can, cut_data *cut,
00068                                   int varnum, var_desc **vars, char *action));
00069 int user_add_to_desc PROTO((void *user, int *desc_size, char **desc));
00070 int user_same_cuts PROTO((void *user, cut_data *cut1, cut_data *cut2,
00071                           int *same_cuts));
00072 int user_unpack_cuts PROTO((void *user, int from, int type, int varnum,
00073                             var_desc **vars, int cutnum, cut_data **cuts,
00074                             int *new_row_num, waiting_row ***new_rows));
00075 int user_send_lp_solution PROTO((void *user, int varnum, var_desc **vars,
00076                                  double *x, int where));
00077 int user_logical_fixing PROTO((void *user, int varnum, var_desc **vars,
00078                                double *x, char *status, int *fixed_num));
00079 int user_generate_column PROTO((void *user, int generate_what, int cutnum,
00080                                 cut_data **cuts, int prevind, int nextind,
00081                                 int *real_nextind, double *colval, int *colind,
00082                                 int *collen, double *obj, double *lb,
00083                                 double *ub));
00084 int user_generate_cuts_in_lp PROTO((void *user, LPdata *lp_data, int varnum,
00085                                     var_desc **vars,double *x,int *new_cut_num,
00086                                     cut_data ***new_cuts));
00087 int user_print_stat_on_cuts_added PROTO((void *user, int rownum,
00088                                          waiting_row **rows));
00089 int user_purge_waiting_rows PROTO((void *user, int rownum,
00090                                    waiting_row **rows, char *deleten));
00091 
00092 #endif

Generated on Sun Nov 14 14:06:42 2010 for Coin-All by  doxygen 1.4.7