source: trunk/Alps/examples/Abc/AbcBranchBase.cpp @ 277

Last change on this file since 277 was 277, checked in by andreasw, 13 years ago

first working version with autotools

File size: 2.9 KB
Line 
1/*===========================================================================*
2 * This file is part of the Abstract Library for Parallel Search (ALPS).     *
3 *                                                                           *
4 * ALPS is distributed under the Common Public License as part of the        *
5 * COIN-OR repository (http://www.coin-or.org).                              *
6 *                                                                           *
7 * Authors: Yan Xu, SAS Institute Inc.                                       *
8 *          Ted Ralphs, Lehigh University                                    *
9 *          Laszlo Ladanyi, IBM T.J. Watson Research Center                  *
10 *          Matthew Saltzman, Clemson University                             *
11 *                                                                           *
12 *                                                                           *
13 * Copyright (C) 2001-2004, International Business Machines                  *
14 * Corporation, Lehigh University, Yan Xu, Ted Ralphs, Matthew Salzman and   *
15 * others. All Rights Reserved.                                              *
16 *===========================================================================*/
17
18//#############################################################################
19// This file is modified from SbbBranchBase.cpp
20//#############################################################################
21
22#if defined(_MSC_VER)
23// Turn off compiler warning about long names
24#  pragma warning(disable:4786)
25#endif
26#include <cassert>
27#include <cmath>
28#include <cfloat>
29
30#include "AbcBranchBase.h"
31
32//#############################################################################
33//#############################################################################
34
35// Default Constructor
36AbcBranchDecision::AbcBranchDecision ()
37{
38}
39
40AbcBranchDecision::~AbcBranchDecision()
41{
42}
43
44// Compare N branching objects. Return index of best and sets way of
45// branching in chosen object. This routine is used only after strong
46// branching. This is reccommended version as it can be more sophisticated
47int
48AbcBranchDecision::bestBranch ( AbcModel* model,
49                                int* objects, 
50                                int numberObjects,
51                                int numberUnsatisfied,
52                                double * changeUp, 
53                                int * numberInfeasibilitiesUp,
54                                double * changeDown, 
55                                int * numberInfeasibilitiesDown,
56                                double objectiveValue ) 
57{
58    int bestWay = 0;
59    int whichObject = -1;
60    int i;
61   
62    if (numberObjects) {
63        initialize(model); 
64        int bestObject = -1;
65        for (i = 0; i < numberObjects; ++i) {
66            int betterWay = betterBranch(objects[i],
67                                         bestObject,
68                                         changeUp[i],
69                                         numberInfeasibilitiesUp [i],
70                                         changeDown[i],
71                                         numberInfeasibilitiesDown[i]);
72            if (betterWay) {
73                bestObject = objects[i];
74                bestWay = betterWay;
75                whichObject = i;
76            }
77        }
78        // set way in best
79        //bestObject->way(bestWay);
80    }
81    return whichObject;
82}
Note: See TracBrowser for help on using the repository browser.