Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members

ClpMessage.cpp

00001 // Copyright (C) 2000, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 
00004 #include "CoinPragma.hpp"
00005 #include "ClpMessage.hpp"
00006 
00007 typedef struct {
00008   CLP_Message internalNumber;
00009   int externalNumber; // or continuation
00010   char detail;
00011   const char * message;
00012 } Clp_message;
00013 static Clp_message us_english[]=
00014 {
00015   {CLP_SIMPLEX_FINISHED,0,1,"Optimal - objective value %g"},
00016   {CLP_SIMPLEX_INFEASIBLE,1,1,"Primal infeasible - objective value %g"},
00017   {CLP_SIMPLEX_UNBOUNDED,2,1,"Dual infeasible - objective value %g"},
00018   {CLP_SIMPLEX_STOPPED,3,1,"Stopped - objective value %g"},
00019   {CLP_SIMPLEX_ERROR,4,1,"Stopped due to errors - objective value %g"},
00020   //{CLP_SIMPLEX_STATUS,5,1,"%d  Objective %g%? Primal infeas %g (%d)%? Dual infeas %g (%d)%? without free dual infeas (%d)"},
00021   {CLP_SIMPLEX_STATUS,5,1,"%d  Obj %g%? Primal inf %g (%d)%? Dual inf %g (%d)%? w.o. free dual inf (%d)"},
00022   {CLP_DUAL_BOUNDS,25,3,"Looking optimal checking bounds with %g"},
00023   {CLP_SIMPLEX_ACCURACY,6,3,"Primal error %g, dual error %g"},
00024   {CLP_SIMPLEX_BADFACTOR,7,2,"Singular factorization of basis - status %d"},
00025   {CLP_SIMPLEX_BOUNDTIGHTEN,8,3,"Bounds were tightened %d times"},
00026   {CLP_SIMPLEX_INFEASIBILITIES,9,1,"%d infeasibilities"},
00027   {CLP_SIMPLEX_FLAG,10,3,"Flagging variable %c%d"},
00028   {CLP_SIMPLEX_GIVINGUP,11,2,"Stopping as close enough"},
00029   {CLP_DUAL_CHECKB,12,2,"New dual bound of %g"},
00030   {CLP_DUAL_ORIGINAL,13,3,"Going back to original objective"},
00031   {CLP_SIMPLEX_PERTURB,14,1,"Perturbing problem by %g %% of %g - largest nonzero change %g (%% %g) - largest zero change %g"},
00032   {CLP_PRIMAL_ORIGINAL,15,2,"Going back to original tolerance"},
00033   {CLP_PRIMAL_WEIGHT,16,2,"New infeasibility weight of %g"},
00034   {CLP_PRIMAL_OPTIMAL,17,2,"Looking optimal with tolerance of %g"},
00035   {CLP_SINGULARITIES,18,2,"%d total structurals rejected in initial factorization"},
00036   {CLP_MODIFIEDBOUNDS,19,1,"%d variables/rows fixed as scaled bounds too close"},
00037   {CLP_RIMSTATISTICS1,20,2,"Absolute values of scaled objective range from %g to %g"},
00038   {CLP_RIMSTATISTICS2,21,2,"Absolute values of scaled bounds range from %g to %g, minimum gap %g"},
00039   {CLP_RIMSTATISTICS3,22,2,"Absolute values of scaled rhs range from %g to %g, minimum gap %g"},
00040   {CLP_POSSIBLELOOP,23,2,"Possible loop - %d matches (%x) after %d checks"},
00041   {CLP_SMALLELEMENTS,24,1,"Matrix will be packed to eliminate %d small elements"},
00042   {CLP_SIMPLEX_HOUSE1,101,32,"dirOut %d, dirIn %d, theta %g, out %g, dj %g, alpha %g"},
00043   {CLP_SIMPLEX_HOUSE2,102,4,"%d %g In: %c%d Out: %c%d%? dj ratio %g distance %g%? dj %g distance %g"},
00044   {CLP_SIMPLEX_NONLINEAR,103,4,"Primal nonlinear change %g (%d)"},
00045   {CLP_SIMPLEX_FREEIN,104,32,"Free column in %d"},
00046   {CLP_SIMPLEX_PIVOTROW,105,32,"Pivot row %d"},
00047   {CLP_DUAL_CHECK,106,4,"Btran alpha %g, ftran alpha %g"},
00048   {CLP_PRIMAL_DJ,107,4,"Btran dj %g, ftran dj %g"},
00049   {CLP_PACKEDSCALE_INITIAL,1001,2,"Initial range of elements is %g to %g"},
00050   {CLP_PACKEDSCALE_WHILE,1002,3,"Range of elements is %g to %g"},
00051   {CLP_PACKEDSCALE_FINAL,1003,2,"Final range of elements is %g to %g"},
00052   {CLP_PACKEDSCALE_FORGET,1004,2,"Not bothering to scale as good enough"},
00053   {CLP_INITIALIZE_STEEP,1005,3,"Initializing steepest edge weights - old %g, new %g"},
00054   {CLP_UNABLE_OPEN,6001,0,"Unable to open file %s for reading"},
00055   {CLP_BAD_BOUNDS,6002,0,"%d bad bound pairs or bad objectives were found - first at %c%d"},
00056   {CLP_BAD_MATRIX,6003,0,"Matrix has %d large values, first at column %d, row %d is %g"},
00057   {CLP_LOOP,6004,0,"Can't get out of loop - stopping"},
00058   {CLP_DUPLICATEELEMENTS,26,1,"Matrix will be packed to eliminate %d duplicate elements"},
00059   {CLP_IMPORT_RESULT,27,1,"Model was imported from %s in %g seconds"},
00060   {CLP_IMPORT_ERRORS,3001,1," There were %d errors when importing model from %s"},
00061   {CLP_EMPTY_PROBLEM,3002,0,"Not solving empty problem - %d rows, %d columns and %d elements"},
00062   {CLP_CRASH,28,1,"Crash put %d variables in basis, %d dual infeasibilities"},
00063   {CLP_END_VALUES_PASS,29,1,"End of values pass after %d iterations"},
00064   {CLP_QUADRATIC_BOTH,108,32,"%s %d (%g) and %d (%g) both basic"},
00065   {CLP_QUADRATIC_PRIMAL_DETAILS,109,32,"coeff %g, %g, %g - dj %g - deriv zero at %g, sj at %g"},
00066   {CLP_IDIOT_ITERATION,30,1,"%d infeas %g, obj %g - mu %g, its %d, %d interior"}, 
00067   {CLP_INFEASIBLE,3003,1,"Analysis indicates model infeasible or unbounded"}, 
00068   {CLP_MATRIX_CHANGE,31,2,"Matrix can not be converted into %s"}, 
00069   {CLP_TIMING,32,1,"%s objective %.10g - %d iterations time %.2f2%?, Presolve %.2f%?, Idiot %.2f%?"}, 
00070   {CLP_INTERVAL_TIMING,33,2,"%s took %.2f seconds (total %.2f)"}, 
00071   {CLP_SPRINT,34,1,"Pass %d took %d iterations, objective %g, dual infeasibilities %g( %d)"},
00072   {CLP_BARRIER_ITERATION,35,1,"%d Primal %g Dual %g Complementarity %g - %d fixed, rank %d"}, 
00073   {CLP_BARRIER_OBJECTIVE_GAP,36,3,"Feasible - objective gap %g"}, 
00074   {CLP_BARRIER_GONE_INFEASIBLE,37,2,"Gone infeasible"}, 
00075   {CLP_BARRIER_CLOSE_TO_OPTIMAL,38,2,"Close to optimal after %d iterations with complementarity %g"}, 
00076   {CLP_BARRIER_COMPLEMENTARITY,39,2,"Complementarity %g - %s"}, 
00077   {CLP_BARRIER_EXIT2,40,1,"Exiting - using solution from iteration %d"}, 
00078   {CLP_BARRIER_STOPPING,41,1,"Exiting on iterations"}, 
00079   {CLP_BARRIER_EXIT,42,1,"Optimal %s"}, 
00080   {CLP_BARRIER_SCALING,43,3,"Scaling %s by %g"}, 
00081   {CLP_BARRIER_MU,44,3,"Changing mu from %g to %g"}, 
00082   {CLP_BARRIER_INFO,45,3,"Detail - %s"}, 
00083   {CLP_BARRIER_END,46,1,"At end primal/dual infeasibilities %g/%g, complementarity gap %g, objective %g"}, 
00084   {CLP_BARRIER_ACCURACY,47,2,"Relative error in phase %d, refinement %d is %g"}, 
00085   {CLP_BARRIER_SAFE,48,3,"Initial safe primal value %g, objective norm %g"}, 
00086   {CLP_BARRIER_NEGATIVE_GAPS,49,3,"%d negative gaps summing to %g"}, 
00087   {CLP_BARRIER_REDUCING,50,2,"Reducing %s step from %g to %g"}, 
00088   {CLP_BARRIER_DIAGONAL,51,3,"Range of diagonal values is %g to %g"}, 
00089   {CLP_BARRIER_SLACKS,52,3,"%d slacks increased, %d decreased this iteration"}, 
00090   {CLP_BARRIER_DUALINF,53,3,"Maximum dual infeasibility on fixed is %g"}, 
00091   {CLP_BARRIER_KILLED,54,3,"%d variables killed this iteration"}, 
00092   {CLP_BARRIER_ABS_DROPPED,55,2,"Absolute error on dropped rows is %g"}, 
00093   {CLP_BARRIER_ABS_ERROR,56,2,"Primal error is %g and dual error is %g"}, 
00094   {CLP_BARRIER_FEASIBLE,57,2,"Infeasibilities - bound %g , primal %g ,dual %g"}, 
00095   {CLP_BARRIER_STEP,58,2,"Steps - primal %g ,dual %g , mu %g"}, 
00096   {CLP_DUMMY_END,999999,0,""}
00097 };
00098 static Clp_message uk_english[]=
00099 {
00100   {CLP_SIMPLEX_FINISHED,0,1,"Optimal - objective value %g,\
00101  okay CLP can solve some LPs but you really need Xpress from Dash Associates :-)"},
00102   {CLP_DUMMY_END,999999,0,""}
00103 };
00104 /* Constructor */
00105 ClpMessage::ClpMessage(Language language) :
00106   CoinMessages(sizeof(us_english)/sizeof(Clp_message))
00107 {
00108   language_=language;
00109   strcpy(source_,"Clp");
00110   Clp_message * message = us_english;
00111 
00112   while (message->internalNumber!=CLP_DUMMY_END) {
00113      CoinOneMessage oneMessage(message->externalNumber,message->detail,
00114                                message->message);
00115      addMessage(message->internalNumber,oneMessage);
00116      message ++;
00117 }
00118 
00119   // now override any language ones
00120 
00121   switch (language) {
00122   case uk_en:
00123     message = uk_english;
00124     break;
00125 
00126   default:
00127     message=NULL;
00128     break;
00129   }
00130 
00131   // replace if any found
00132   if (message) {
00133     while (message->internalNumber!=CLP_DUMMY_END) {
00134       replaceMessage(message->internalNumber,message->message);
00135       message ++;
00136     }
00137   }
00138 }

Generated on Wed Dec 3 14:37:26 2003 for CLP by doxygen 1.3.5