source: trunk/Cbc/src/CbcMessage.cpp

Last change on this file was 2465, checked in by unxusr, 5 months ago

script to format sources

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