source: trunk/Cbc/src/CbcMessage.cpp @ 1514

Last change on this file since 1514 was 1432, checked in by bjarni, 10 years ago

Added extra return at end of each source file where needed, to remove possible linefeed conflicts (NightlyBuild? errors)

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.7 KB
Line 
1/* $Id: CbcMessage.cpp 1432 2010-02-07 19:33:53Z forrest $ */
2// Copyright (C) 2002, International Business Machines
3// Corporation and others.  All Rights Reserved.
4#if defined(_MSC_VER)
5// Turn off compiler warning about long names
6#  pragma warning(disable:4786)
7#endif
8
9#include "CbcMessage.hpp"
10#include <cstring>
11
12typedef struct {
13    CBC_Message internalNumber;
14    int externalNumber; // or continuation
15    char detail;
16    const char * message;
17} Cbc_message;
18static Cbc_message us_english[] = {
19    {CBC_END_GOOD, 1, 1, "Search completed - best objective %.16g, took %d iterations and %d nodes (%.2f seconds)"},
20    {CBC_MAXNODES, 3, 1, "Exiting on maximum nodes"},
21    {CBC_SOLUTION, 4, 1, "Integer solution of %g found after %d iterations and %d nodes (%.2f seconds)"},
22    {CBC_END, 5, 1, "Partial search - best objective %g (best possible %g), took %d iterations and %d nodes (%.2f seconds)"},
23    {CBC_INFEAS, 6, 1, "The LP relaxation is infeasible or too expensive"},
24    {CBC_STRONG, 7, 3, "Strong branching on %d (%d), down %g (%d) up %g (%d) value %g"},
25    {CBC_SOLINDIVIDUAL, 8, 2, "%d has value %g"},
26    {CBC_INTEGERINCREMENT, 9, 1, "Objective coefficients multiple of %g"},
27    {CBC_STATUS, 10, 1, "After %d nodes, %d on tree, %g best solution, best possible %g (%.2f seconds)"},
28    {CBC_GAP, 11, 1, "Exiting as integer gap of %g less than %g or %g%%"},
29    {CBC_ROUNDING, 12, 1, "Integer solution of %g found by %s after %d iterations and %d nodes (%.2f seconds)"},
30    {CBC_ROOT, 13, 1, "At root node, %d cuts changed objective from %g to %g in %d passes"},
31    {CBC_GENERATOR, 14, 1, "Cut generator %d (%s) - %d row cuts average %.1f elements, %d column cuts (%d active) %? in %.3f seconds - new frequency is %d"},
32    {CBC_BRANCH, 15, 2, "Node %d Obj %g Unsat %d depth %d"},
33    {CBC_STRONGSOL, 16, 1, "Integer solution of %g found by strong branching after %d iterations and %d nodes (%.2f seconds)"},
34    {CBC_VUB_PASS, 17, 1, "%d solved, %d variables fixed, %d tightened"},
35    {CBC_VUB_END, 18, 1, "After tightenVubs, %d variables fixed, %d tightened"},
36    {CBC_MAXSOLS, 19, 1, "Exiting on maximum solutions"},
37    {CBC_MAXTIME, 20, 1, "Exiting on maximum time"},
38    {CBC_NOTFEAS1, 21, 2, "On closer inspection node is infeasible"},
39    {CBC_NOTFEAS2, 22, 2, "On closer inspection objective value of %g above cutoff of %g"},
40    {CBC_NOTFEAS3, 23, 2, "Allowing solution, even though largest row infeasibility is %g"},
41    {CBC_TREE_SOL, 24, 1, "Integer solution of %g found by subtree after %d iterations and %d nodes (%.2f seconds)"},
42    {CBC_ITERATE_STRONG, 25, 3, "%d cleanup iterations before strong branching"},
43    {CBC_PRIORITY, 26, 1, "Setting priorities for objects %d to %d inclusive (out of %d)"},
44    {CBC_EVENT, 27, 1, "Exiting on user event"},
45    {CBC_START_SUB, 28, 1, "Starting sub-tree for %s - maximum nodes %d"},
46    {CBC_END_SUB, 29, 1, "Ending sub-tree for %s"},
47    {CBC_THREAD_STATS, 30, 1, "%s%? %d used %d times,  waiting to start %g, %?%g cpu time,%? %g waiting for threads, %? %d locks, %g locked, %g waiting for locks"},
48    {CBC_CUTS_STATS, 31, 1, "%d added rows had average density of %g"},
49    {CBC_STRONG_STATS, 32, 1, "Strong branching done %d times (%d iterations), fathomed %d nodes and fixed %d variables"},
50    {CBC_SOLUTION2, 33, 1, "Integer solution of %g found (by alternate solver) after %d iterations and %d nodes (%.2f seconds)"},
51    {CBC_UNBOUNDED, 34, 1, "The LP relaxation is unbounded!"},
52    {CBC_OTHER_STATS, 35, 1, "Maximum depth %d, %g variables fixed on reduced cost"},
53    {CBC_HEURISTICS_OFF, 36, 1, "Heuristics switched off as %d branching objects are of wrong type"},
54    {CBC_STATUS2, 37, 1, "%d nodes, %d on tree, best %g - possible %g depth %d unsat %d its %d (%.2f seconds)"},
55    {CBC_FPUMP1, 38, 1, "%s"},
56    {CBC_FPUMP2, 39, 2, "%s"},
57    {CBC_STATUS3, 40, 1, "%d nodes (+%d), %d on tree, best %g - possible %g depth %d unsat %d its %d (+%d) (%.2f seconds)"},
58    {CBC_OTHER_STATS2, 41, 1, "Maximum depth %d, %g variables fixed on reduced cost (%d nodes in complete fathoming taking %d iterations)"},
59    {CBC_RELAXED1, 42, 1, "Possible objective of %.18g but variable %d is %g from integer value, integer tolerance %g"},
60    {CBC_RELAXED2, 43, 2, "Possible objective of %.18g but had to fudge solution with tolerance of %g - check scaling of problem?"},
61    {CBC_RESTART, 44, 1, "Reduced cost fixing - %d rows, %d columns - restarting search"},
62    {CBC_GENERAL, 45, 1, "%s"},
63    {CBC_ROOT_DETAIL, 46, 2, "Root node pass %d, %d rows, %d total tight cuts  -  objective %g"},
64    {CBC_CUTOFF_WARNING1, 47, 1, "Cutoff set to %g - equivalent to best solution of %g"},
65    {CBC_END_SOLUTION, 48, 2, "Final check on integer solution of %g found after %d iterations and %d nodes (%.2f seconds)"},
66    {CBC_NOINT, 3007, 1, "No integer variables - nothing to do"},
67    {CBC_WARNING_STRONG, 3008, 1, "Strong branching is fixing too many variables, too expensively!"},
68    {CBC_DUMMY_END, 999999, 0, ""}
69};
70/* Constructor */
71CbcMessage::CbcMessage(Language language) :
72        CoinMessages(sizeof(us_english) / sizeof(Cbc_message))
73{
74    language_ = language;
75    strcpy(source_, "Cbc");
76    class_ = 0; // branch and bound
77    Cbc_message * message = us_english;
78
79    while (message->internalNumber != CBC_DUMMY_END) {
80        CoinOneMessage oneMessage(message->externalNumber, message->detail,
81                                  message->message);
82        addMessage(message->internalNumber, oneMessage);
83        message ++;
84    }
85    // Put into compact form
86    toCompact();
87
88    // now override any language ones
89
90    //switch (language) {
91
92    //default:
93    message = NULL;
94    //  break;
95    //}
96
97    // replace if any found
98    if (message) {
99        while (message->internalNumber != CBC_DUMMY_END) {
100            replaceMessage(message->internalNumber, message->message);
101            message ++;
102        }
103    }
104}
105
Note: See TracBrowser for help on using the repository browser.