MoochoPack_MeritFunc_ModifiedL1LargerSteps_AddedStepSetOptions.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 <assert.h>
00030 #include <math.h>
00031 
00032 #include "../std/MoochoPack_MeritFunc_ModifiedL1LargerSteps_AddedStepSetOptions.hpp"
00033 #include "OptionsFromStreamPack_StringToBool.hpp"
00034 
00035 // Define the options
00036 namespace {
00037 
00038   const int local_num_options = 5;
00039 
00040   const char options_group_name[] = "MeritFuncModifiedL1LargerSteps";
00041 
00042   enum local_EOptions {
00043     AFTER_K_ITER,
00044     OBJ_INCREASE_THRESHOLD,
00045     MAX_POS_PENALTY_INCREASE,
00046     POS_TO_NEG_PENALTY_INCREASE,
00047     INCR_MULT_FACTOR
00048   };
00049 
00050   const char* local_SOptions[local_num_options] = {
00051     "after_k_iter",
00052     "obj_increase_threshold",
00053     "max_pos_penalty_increase",
00054     "pos_to_neg_penalty_increase",
00055     "incr_mult_factor"
00056   };
00057 
00058 }
00059 
00060 namespace MoochoPack {
00061 
00062 MeritFunc_ModifiedL1LargerSteps_AddedStepSetOptions::MeritFunc_ModifiedL1LargerSteps_AddedStepSetOptions(
00063       MeritFunc_ModifiedL1LargerSteps_AddedStep* target )
00064   : OptionsFromStreamPack::SetOptionsFromStreamNode(
00065         options_group_name, local_num_options, local_SOptions )
00066     , OptionsFromStreamPack::SetOptionsToTargetBase<
00067       MeritFunc_ModifiedL1LargerSteps_AddedStep >( target )
00068 {}
00069 
00070 void MeritFunc_ModifiedL1LargerSteps_AddedStepSetOptions::setOption(
00071   int option_num, const std::string& option_value )
00072 {
00073   switch( (local_EOptions)option_num ) {
00074     case AFTER_K_ITER: {
00075       target().after_k_iter( ::atoi( option_value.c_str() ) );
00076       break;
00077     }
00078     case OBJ_INCREASE_THRESHOLD: {
00079       target().obj_increase_threshold( ::atof( option_value.c_str() ) );
00080       break;
00081     }
00082     case MAX_POS_PENALTY_INCREASE: {
00083       target().max_pos_penalty_increase( ::fabs( ::atof( option_value.c_str() ) ) );
00084       break;
00085     }
00086     case POS_TO_NEG_PENALTY_INCREASE: {
00087       target().pos_to_neg_penalty_increase( ::fabs( ::atof( option_value.c_str() ) ) );
00088       break;
00089     }
00090     case INCR_MULT_FACTOR: {
00091       target().incr_mult_factor( ::fabs( ::atof( option_value.c_str() ) ) );
00092       break;
00093     }
00094     default:
00095       TEST_FOR_EXCEPT(true);  // Local error only?
00096   }
00097 }
00098 
00099 } // end namespace MoochoPack 

Generated on Thu Sep 18 12:35:17 2008 for MOOCHO (Single Doxygen Collection) by doxygen 1.3.9.1