IterationPack_AlgorithmTrackTesting.cpp

Go to the documentation of this file.
00001 // @HEADER
00002 // ***********************************************************************
00003 // 
00004 // Moocho: Multi-functional Object-Oriented arCHitecture for Optimization
00005 //                  Copyright (2003) Sandia Corporation
00006 // 
00007 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00008 // license for use of this work by or on behalf of the U.S. Government.
00009 // 
00010 // This library is free software; you can redistribute it and/or modify
00011 // it under the terms of the GNU Lesser General Public License as
00012 // published by the Free Software Foundation; either version 2.1 of the
00013 // License, or (at your option) any later version.
00014 //  
00015 // This library is distributed in the hope that it will be useful, but
00016 // WITHOUT ANY WARRANTY; without even the implied warranty of
00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 // Lesser General Public License for more details.
00019 //  
00020 // You should have received a copy of the GNU Lesser General Public
00021 // License along with this library; if not, write to the Free Software
00022 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00023 // USA
00024 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov) 
00025 // 
00026 // ***********************************************************************
00027 // @HEADER
00028 
00029 #include <iomanip>
00030 
00031 #include "IterationPack_AlgorithmTrackTesting.hpp"
00032 #include "IterationPack_Algorithm.hpp"
00033 
00034 namespace IterationPack {
00035 
00036 void AlgorithmTrackTesting::output_iteration(const Algorithm& algo) const {
00037   std::ostream &o = journal_out();
00038   o
00039     << "\ntrack.output_iteration(algo) called for the iteration k = "
00040     << algo.state().k() << std::endl;
00041   o
00042     << "\nStep times for the current iteration (in seconds):\n";
00043   const int n = algo.num_steps();
00044   std::vector<double> step_times(n+1);
00045   algo.get_step_times_k(0,&step_times[0]);
00046   o << "  step_id:time = ";
00047   for( int l = 0; l < n+1; ++l )
00048     o << " " << (l+1) << ":" << step_times[l];
00049   o << "\n  total time = " << step_times[n] << std::endl;
00050   
00051 }
00052 
00053 void AlgorithmTrackTesting::output_final(const Algorithm& algo, EAlgoReturn algo_return) const {
00054   char algo_return_name[6][50] =
00055     {
00056       "TERMINATE_TRUE"
00057       ,"TERMINATE_FALSE"
00058       ,"MAX_ITER_EXCEEDED"
00059       ,"MAX_RUN_TIME_EXCEEDED"
00060       ,"INTERRUPTED_TERMINATE_TRUE"
00061       ,"INTERRUPTED_TERMINATE_FALSE"
00062     };
00063   std::ostream &o = journal_out();
00064   o << "\ntrack.output_final(algo,algo_return) called for the iteration k = "
00065     << algo.state().k() << " and algo_return = " << algo_return_name[algo_return]
00066     << std::endl;
00067   o << "Timing (in seconds) statistics for step 0 : ";
00068   double total, average, min, max, percent;
00069   algo.get_final_step_stats(0,&total,&average,&min,&max,&percent);
00070   o << "total = " << total << ", average = " << average << ", min = " << min
00071     << ", max = " << max << ", percent = " << percent << std::endl;
00072 }
00073 
00074 } // end namespace IterationPack 

Generated on Tue Oct 20 12:51:46 2009 for MOOCHO (Single Doxygen Collection) by doxygen 1.4.7