00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __freSVNonLinearVNLOptimizerControllerBase_txx
00023 #define __freSVNonLinearVNLOptimizerControllerBase_txx
00024
00025 #include "freSVNonLinearVNLOptimizerControllerBase.h"
00026
00027 namespace FREE
00028 {
00029
00030 template <class TControlledVNLOptimizer>
00031 SVNonLinearVNLOptimizerControllerBase<TControlledVNLOptimizer>::
00032 SVNonLinearVNLOptimizerControllerBase()
00033 {
00034 this->UpdateControllerID(ControllerID::SVNonLinearVNLOptimizerControllerBase);
00035 this->m_Description = "Base controller for vnl optimizers.";
00036 };
00037
00038 template <class TControlledVNLOptimizer>
00039 SVNonLinearVNLOptimizerControllerBase<TControlledVNLOptimizer>::
00040 ~SVNonLinearVNLOptimizerControllerBase()
00041 {
00042 };
00043
00044 template <class TControlledVNLOptimizer>
00045 void
00046 SVNonLinearVNLOptimizerControllerBase<TControlledVNLOptimizer>::
00047 SetStatisticEntryMainComponent(StatisticEntry& rStatisticEntry,
00048 ComponentType* pMainComponent,
00049 SessionComponentCache* pMainComponentCache,
00050 SessionInfo* pSessionInfo,
00051 StatisticDictionary& rDictionary) const
00052 {
00053 ParameterArrayType parameters = pMainComponent->GetCachedCurrentPosition();
00054 std::string sName = "Position #";
00055 std::string sIDPath = pMainComponentCache->GetIDPath();
00056 std::string sCommment = "Optimizer position. Meaning depends on chosen transformation";
00057 StatisticValueDefinition* pEntry = rDictionary.GetValueDefinitionByName(sIDPath,sName+"0");
00058
00059 if (!pEntry)
00060 {
00061 pEntry = rDictionary.AddValueDefinition(sIDPath,sName+"0", sCommment);
00062 for (unsigned int i = 1; i<parameters.Size(); i++)
00063 {
00064 rDictionary.AddValueDefinition(sIDPath,sName+Convert::ToStr(i),sCommment);
00065 }
00066 rDictionary.AddValueDefinition(sIDPath,"OptimizerValue", "Value of the optimizer");
00067 }
00068
00069 for (unsigned int i = 0; i<parameters.Size(); i++)
00070 {
00071 rStatisticEntry.AddValue(Convert::ToStr(parameters.GetElement(i)),pEntry->GetRefID()+i);
00072 }
00073
00074 rStatisticEntry.AddValue(Convert::ToStr(pMainComponent->GetCachedValue()),pEntry->GetRefID()+parameters.Size());
00075 };
00076
00077 template <class TControlledVNLOptimizer>
00078 typename SVNonLinearVNLOptimizerControllerBase<TControlledVNLOptimizer>::ParametersType
00079 SVNonLinearVNLOptimizerControllerBase<TControlledVNLOptimizer>::
00080 GetCurrentPosition(TControlledVNLOptimizer* pOptimizer) const
00081 {
00082 return pOptimizer->GetCachedCurrentPosition();
00083 };
00084
00085 template <class TControlledVNLOptimizer>
00086 typename SVNonLinearVNLOptimizerControllerBase<TControlledVNLOptimizer>::MeasuresType
00087 SVNonLinearVNLOptimizerControllerBase<TControlledVNLOptimizer>::
00088 GetCurrentValue(TControlledVNLOptimizer* pOptimizer) const
00089 {
00090 MeasuresType values(1);
00091 values.Fill(pOptimizer->GetCachedValue());
00092 return values;
00093 };
00094
00095 }
00096
00097 #endif