Changeset 1954 for trunk/Cbc/src


Ignore:
Timestamp:
Aug 6, 2013 3:19:32 PM (6 years ago)
Author:
forrest
Message:

new event plus flexible output format

Location:
trunk/Cbc/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Cbc/src/CbcEventHandler.hpp

    r1943 r1954  
    101101        /*! On entry to small branch and bound. */
    102102        smallBranchAndBound,
     103        /*! After a pass of heuristic. */
     104        heuristicPass,
    103105        /*! End of search. */
    104106        endSearch
  • trunk/Cbc/src/CbcHeuristicFPump.cpp

    r1945 r1954  
    16521652                << pumpPrint
    16531653                << CoinMessageEol;
     1654                CbcEventHandler *eventHandler = model_->getEventHandler() ;
     1655                if (eventHandler) {
     1656                  typedef struct {
     1657                    double newSumInfeas;
     1658                    double trueSolutionValue;
     1659                    double spareDouble[2];
     1660                    OsiSolverInterface * solver;
     1661                    void * sparePointer[2];
     1662                    int numberPasses;
     1663                    int totalNumberPasses;
     1664                    int numberInfeas;
     1665                    int numberIterations;
     1666                    int spareInt[3];
     1667                  } HeurPass;
     1668                  HeurPass temp;
     1669                  temp.solver=solver;
     1670                  temp.newSumInfeas = newSumInfeas;
     1671                  temp.trueSolutionValue = newTrueSolutionValue;
     1672                  temp.numberPasses=numberPasses;
     1673                  temp.totalNumberPasses=totalNumberPasses;
     1674                  temp.numberInfeas=newNumberInfeas;
     1675                  temp.numberIterations=numberIterations;
     1676                  CbcEventHandler::CbcAction status =
     1677                    eventHandler->event(CbcEventHandler::heuristicPass,
     1678                                        &temp);
     1679                  if (status==CbcEventHandler::killSolution) {
     1680                    exitAll = true;
     1681                    break;
     1682                  }
     1683                }
    16541684                if (closestSolution && solver->getObjValue() < closestObjectiveValue) {
    16551685                    int i;
  • trunk/Cbc/src/CbcSolver.cpp

    r1945 r1954  
    5050#include "OsiAuxInfo.hpp"
    5151#include "CbcMipStartIO.hpp"
     52// for printing
     53#ifndef CLP_OUTPUT_FORMAT
     54#define CLP_OUTPUT_FORMAT %15.8g
     55#endif
     56#define CLP_QUOTE(s) CLP_STRING(s)
     57#define CLP_STRING(s) #s
    5258
    5359#include "CbcSolverHeuristics.hpp"
     
    89048910                                  break;
    89058911                                }
     8912                                char printFormat[50];
     8913                                sprintf(printFormat," %s         %s\n",
     8914                                        CLP_QUOTE(CLP_OUTPUT_FORMAT),
     8915                                        CLP_QUOTE(CLP_OUTPUT_FORMAT));
    89068916                                if (printMode > 2 && printMode < 5) {
    89078917                                    for (iRow = 0; iRow < numberRows; iRow++) {
     
    89298939                                                    fprintf(fp, " ");
    89308940                                            }
    8931                                             fprintf(fp, " %15.8g        %15.8g\n", primalRowSolution[iRow],
     8941                                            fprintf(fp, printFormat, primalRowSolution[iRow],
    89328942                                                    dualRowSolution[iRow]);
    89338943                                        }
     
    89808990                                                        fprintf(fp, " ");
    89818991                                                }
    8982                                                 fprintf(fp, " %15.8g        %15.8g\n",
     8992                                                fprintf(fp, printFormat,
    89838993                                                        primalColumnSolution[iColumn],
    89848994                                                        dualColumnSolution[iColumn]);
Note: See TracChangeset for help on using the changeset viewer.