int resetVisited(Element *e){ if (e->type() == "source"){ Source *s = (Source *)e; s->pin()->visited(false); } else if (e->type() == "ground"){ Ground *g = (Ground *)e; g->pin()->visited(false); } else if (e->type() == "resistor"){ Resistor *r = (Resistor *)e; r->pin("p0")->visited(false); r->pin("p1")->visited(false); } else if (e->type() == "switch"){ Switch *r = (Switch *)e; r->pin("p0")->visited(false); r->pin("p1")->visited(false); r->pin("in")->visited(false); } else if (e->type() == "bridge"){ Bridge *b = (Bridge *)e; b->in()->visited(false); b->out()->visited(false); } else if (e->type() == "meter"){ Meter *g = (Meter *)e; g->pin()->visited(false); } else{ cerr << "Unknown element: "<< e->info()<<endl; } return 0; }
int main() { float f = 3.4f; // f, s, l Meter aa = 3m; // operator""m(3) aa.print(); }
Meter *SimpleGui::addMeter(string name, float &value, float min, float max) { Meter *slider = (Meter*)INSTANTIATE_WITH_ID("meter", name); slider->pointToValue(&value); slider->min = min; slider->max = max; slider->width = SIMPLE_GUI_WIDTH; gui->addChild(slider); return slider; }
void NetworkProjectionTests::NetworkSetupMeters() { Meter* layerMeterOut = new Meter("TestProjectionsLayer1.csv", Storage::CSV); layerMeterOut->AttachPopulation(this->GetLayer(0)); Meter* layerMeterOut2 = new Meter("TestProjectionsLayer2.csv", Storage::CSV); layerMeterOut2->AttachPopulation(this->GetLayer(1)); this->AddMeter(layerMeterOut); this->AddMeter(layerMeterOut2); }
void XMMSSensor::setMaxValue( SensorParams *sp) { Meter *meter; meter = sp->getMeter(); QString f; f = sp->getParam("FORMAT"); if ( f == "%full" ) meter->setMax( 1 ); }
void TestSimple_Exp1_F() { OutputLine( L" -- Test Simple<S<T,1>,F> form. --" ); volatile Scalar s = 0; clock_t const startraw = clock(); for( int x = 0; x < nbloop; ++x ) { volatile Scalar s0; volatile Scalar const s1 = 2.; volatile Scalar const s2 = s1; volatile Scalar const s3 = s1 + s2; volatile Scalar const s4 = s1 * 2.; volatile Scalar const s5 = 1. * 1000.; s0 = 2. * nbloop; s0 += s1; s0 -= s5; s += s0 + s1 + s2 + s3 + s4 + s5; } clock_t const endraw = clock(); Meter m; clock_t const startunit = clock(); for( int y = 0; y < nbloop; ++y ) { Meter m0; Meter const m1( 2. ); Meter const m2 = m1; Meter const m3 = m1 + m2; Meter const m4 = m1 * 2.; Meter const m5 = Kilometer( 1. ); m0 = 2. * nbloop; m0 += m1; m0 -= m5; m += m0 + m1 + m2 + m3 + m4 + m5; } clock_t const endunit = clock(); if( m.GetValue() != s ) { OutputLine( L"Implementation error while processing test." ); } PrintPerformance( endraw - startraw, endunit - startunit ); }
void ControlToolBar::StopPlaying(bool stopStream /* = true*/) { StopScrolling(); AudacityProject *project = GetActiveProject(); if(project) { // Let scrubbing code do some appearance change project->GetScrubber().StopScrubbing(); } if (!CanStopAudioStream()) return; mStop->PushDown(); SetStop(false); if(stopStream) gAudioIO->StopStream(); SetPlay(false); SetRecord(false); #ifdef EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT gAudioIO->AILADisable(); #endif mPause->PopUp(); mPaused=false; //Make sure you tell gAudioIO to unpause gAudioIO->SetPaused(mPaused); ClearCutPreviewTracks(); mBusyProject = NULL; // So that we continue monitoring after playing or recording. // also clean the MeterQueues if( project ) { project->MayStartMonitoring(); Meter *meter = project->GetPlaybackMeter(); if( meter ) { meter->Clear(); } meter = project->GetCaptureMeter(); if( meter ) { meter->Clear(); } } const auto toolbar = project->GetToolManager()->GetToolBar(ScrubbingBarID); toolbar->EnableDisableButtons(); }
void SetNativePopulationValues(ObjectMap& object_map) { for (ObjectMap::iterator<> it = object_map.begin(); it != object_map.end(); ++it) { Meter* meter = it->GetMeter(METER_POPULATION); Meter* targetmax_meter = it->GetMeter(METER_TARGET_POPULATION); // only applies to unowned planets if (meter && targetmax_meter && it->Unowned()) { double r = RandZeroToOne(); double factor = (0.1 < r) ? r : 0.1; meter->SetCurrent(targetmax_meter->Current() * factor); } } }
void DiskSensor::setMaxValue( SensorParams *sp ) { Meter *meter; meter = sp->getMeter(); const TQString mntPt = sp->getParam( "MOUNTPOINT" ); TQString f; f = sp->getParam("FORMAT"); if( f == "%fp" || f == "%up" ) meter->setMax( 100 ); else meter->setMax( getTotalSpace( mntPt ) / 1024 ); }
void TestMathematicalBinaryOperators() { Kilometer const unit_10_kilometer( 10. ); Kilometer const unit_9_kilometer( 9. ); Hectometer const unit_200_hectometer = unit_10_kilometer + unit_10_kilometer; Assert( fequal( unit_200_hectometer.GetValue(), 200. ) ); Hectometer const unit_10_hectometer = unit_10_kilometer - unit_9_kilometer; Assert( fequal( unit_10_hectometer.GetValue(), 10. ) ); Meter const unit_31000_meter = unit_10_kilometer + unit_200_hectometer + unit_10_hectometer; Assert( fequal( unit_31000_meter.GetValue(), 31000. ) ); Scalar const unit_20_ = unit_200_hectometer / unit_10_hectometer; Assert( fequal( unit_20_, 20. ) ); Scalar const unit_2_ = unit_200_hectometer / unit_10_kilometer; Assert( fequal( unit_2_, 2. ) ); }
void ProgramSensor::processExited(TDEProcess *) { int lineNbr; SensorParams *sp; Meter *meter; TQValueVector<TQString> lines; TQStringList stringList = TQStringList::split('\n',sensorResult,true); TQStringList::ConstIterator end( stringList.end() ); for ( TQStringList::ConstIterator it = stringList.begin(); it != end; ++it ) { lines.push_back(*it); } int count = (int) lines.size(); TQObjectListIt it( *objList ); while (it != 0) { sp = (SensorParams*)(*it); meter = sp->getMeter(); if( meter != 0) { lineNbr = (sp->getParam("LINE")).toInt(); if ( lineNbr >= 1 && lineNbr <= (int) count ) { meter->setValue(lines[lineNbr-1]); } if ( -lineNbr >= 1 && -lineNbr <= (int) count ) { meter->setValue(lines[count+lineNbr]); } if (lineNbr == 0) { meter->setValue(sensorResult); } } ++it; } sensorResult = ""; }
void ControlToolBar::StopPlaying(bool stopStream /* = true*/) { mStop->PushDown(); SetStop(false); if(stopStream) gAudioIO->StopStream(); SetPlay(false); SetRecord(false); #ifdef AUTOMATED_INPUT_LEVEL_ADJUSTMENT gAudioIO->AILADisable(); #endif mPause->PopUp(); mPaused=false; //Make sure you tell gAudioIO to unpause gAudioIO->SetPaused(mPaused); ClearCutPreviewTracks(); mBusyProject = NULL; // So that we continue monitoring after playing or recording. // also clean the MeterQueues AudacityProject *project = GetActiveProject(); if( project ) { project->MayStartMonitoring(); Meter *meter = project->GetPlaybackMeter(); if( meter ) { meter->Clear(); } meter = project->GetCaptureMeter(); if( meter ) { meter->Clear(); } } }
Meter* Meter::create(LayerContract * layer) { Meter * meter = new Meter(layer); if (meter && meter->initWithSpriteFrameName("meter.png")) { meter->setRadius(meter->boundingBox().size.height * 0.5f); meter->setPosition(ccp(layer->getScreenSize().width * 0.8375f, layer->getScreenSize().height * 0.075f)); layer->getGameBatchNode()->addChild(meter, kForeground, sprideIdRocket); meter->initSprite(); meter->setVisible(false); return meter; } CC_SAFE_DELETE(meter); return NULL; }
void TestConstructors() { Meter const default_constructor; Assert( fequal( default_constructor.GetValue(), 0. ) ); Meter const explicit_constructor_with_scalar( 2. ); Assert( fequal( explicit_constructor_with_scalar.GetValue(), 2. ) ); Kilometer const one_kilometer( 1. ); Meter unit_1000_meter = one_kilometer; Assert( fequal( unit_1000_meter.GetValue(), 1000. ) ); Foot const one_foot( 1. ); Meter const _dot_3048_meter = (Inch)one_foot; Assert( fequal( _dot_3048_meter.GetValue(), .3048 ) ); Meter const copy_constructor = explicit_constructor_with_scalar; Assert( fequal( copy_constructor.GetValue(), 2. ) ); }
void XMMSSensor::update() { QString format; SensorParams *sp; Meter *meter; QObjectListIt it( *objList ); #ifdef HAVE_XMMS int pos; QString title; int songLength = 0; int currentTime = 0; bool isPlaying = false; bool isRunning = xmms_remote_is_running(0); if( isRunning ) { isPlaying = xmms_remote_is_playing(0); pos = xmms_remote_get_playlist_pos(0); qDebug("unicode start"); title = codec->toUnicode( QCString( xmms_remote_get_playlist_title( 0, pos ) ) ); qDebug("unicode end"); if( title.isEmpty() ) title = "XMMS"; qDebug("Title: %s", title.ascii()); songLength = xmms_remote_get_playlist_time( 0, pos ); currentTime = xmms_remote_get_output_time( 0 ); } #endif // HAVE_XMMS while (it != 0) { sp = (SensorParams*)(*it); meter = sp->getMeter(); #ifdef HAVE_XMMS if( isRunning ) { format = sp->getParam("FORMAT"); if (format.length() == 0 ) { format = "%title %time / %length"; } if( format == "%ms" ) { meter->setMax( songLength ); meter->setValue( currentTime ); } else if ( format == "%full" ) { meter->setValue( 1 ); } else { format.replace( QRegExp("%title", false), title ); format.replace( QRegExp("%length", false), QTime( 0,0,0 ). addMSecs( songLength ) .toString( "h:mm:ss" ) ); format.replace( QRegExp("%time", false), QTime( 0,0,0 ). addMSecs( currentTime ) .toString( "h:mm:ss" ) ); if( isPlaying ) { format.replace( QRegExp("%remain", false), QTime( 0,0,0 ). addMSecs( songLength ) .addMSecs(-currentTime ) .toString( "h:mm:ss" ) ); } else { format.replace( QRegExp("%remain", false), QTime( 0,0,0 ).toString("h:mm:ss" ) ); } meter->setValue(format); } } else #endif // HAVE_XMMS { meter->setValue(""); } ++it; } }
void DiskSensor::processExited(TDEProcess *) { TQStringList stringList = TQStringList::split('\n',sensorResult); sensorResult = ""; TQStringList::Iterator it = stringList.begin(); //TQRegExp rx( "^(/dev/).*(/\\S*)$"); TQRegExp rx( ".*\\s+(/\\S*)$"); while( it != stringList.end()) { rx.search( *it ); if ( !rx.cap(0).isEmpty()) { mntMap[rx.cap(1)] = *it; } it++; } stringList.clear(); TQString format; TQString mntPt; SensorParams *sp; Meter *meter; TQObjectListIt lit( *objList ); while (lit != 0) { sp = (SensorParams*)(*lit); meter = sp->getMeter(); format = sp->getParam("FORMAT"); mntPt = sp->getParam("MOUNTPOINT"); if (mntPt.length() == 0) mntPt="/"; if (format.length() == 0 ) { format = "%u"; } format.replace( TQRegExp("%fp", false),TQString::number(getPercentFree(mntPt))); format.replace( TQRegExp("%fg",false), TQString::number(getFreeSpace(mntPt)/(1024*1024))); format.replace( TQRegExp("%fkb",false), TQString::number(getFreeSpace(mntPt)*8) ); format.replace( TQRegExp("%fk",false), TQString::number(getFreeSpace(mntPt)) ); format.replace( TQRegExp("%f", false),TQString::number(getFreeSpace(mntPt)/1024)); format.replace( TQRegExp("%up", false),TQString::number(getPercentUsed(mntPt))); format.replace( TQRegExp("%ug",false), TQString::number(getUsedSpace(mntPt)/(1024*1024))); format.replace( TQRegExp("%ukb",false), TQString::number(getUsedSpace(mntPt)*8) ); format.replace( TQRegExp("%uk",false), TQString::number(getUsedSpace(mntPt)) ); format.replace( TQRegExp("%u", false),TQString::number(getUsedSpace(mntPt)/1024)); format.replace( TQRegExp("%tg",false), TQString::number(getTotalSpace(mntPt)/(1024*1024))); format.replace( TQRegExp("%tkb",false), TQString::number(getTotalSpace(mntPt)*8)); format.replace( TQRegExp("%tk",false), TQString::number(getTotalSpace(mntPt))); format.replace( TQRegExp("%t", false),TQString::number(getTotalSpace(mntPt)/1024)); meter->setValue(format); ++lit; } if ( init == 1 ) { emit initComplete(); init = 0; } }
void SeeClassDefinition() { OutputLine( L"-- Meter --" ); Femtometer const femtometer; OutputLine( femtometer.GetSuffix() ); Picometer const picometer; OutputLine( picometer.GetSuffix() ); Nanometer const nanometer; OutputLine( nanometer.GetSuffix() ); Micrometer const micrometer; OutputLine( micrometer.GetSuffix() ); Millimeter const millimeter; OutputLine( millimeter.GetSuffix() ); Centimeter const centimeter; OutputLine( centimeter.GetSuffix() ); Decimeter const decimeter; OutputLine( decimeter.GetSuffix() ); Meter const meter; OutputLine( meter.GetSuffix() ); Dekameter const dekameter; OutputLine( dekameter.GetSuffix() ); Hectometer const hectometer; OutputLine( hectometer.GetSuffix() ); Kilometer const kilometer; OutputLine( kilometer.GetSuffix() ); Megameter const megameter; OutputLine( megameter.GetSuffix() ); Gigameter const gigameter; OutputLine( gigameter.GetSuffix() ); Terameter const terameter; OutputLine( terameter.GetSuffix() ); Petameter const petameter; OutputLine( petameter.GetSuffix() ); Mil const mil; OutputLine( Mil::Suffix() ); Assert( mil.GetSuffix() == Mil::Suffix() ); Assert( mil.GetSISuffix() != Mil::Suffix() ); Inch const inch; OutputLine( Inch::Suffix() ); Assert( inch.GetSuffix() == Inch::Suffix() ); Assert( inch.GetSISuffix() != Inch::Suffix() ); Foot const foot; OutputLine( Foot::Suffix() ); Assert( foot.GetSuffix() == Foot::Suffix() ); Assert( foot.GetSISuffix() != Foot::Suffix() ); }
void NoatunSensor::update() { TQString format; SensorParams *sp; Meter *meter; TQObjectListIt it( *objList ); TQString title; int songLength = 0; int currentTime = 0; bool running = isRunning(); if( running ) { title = getTitle(); if( title.isEmpty() ) title = "Noatun"; currentTime = getTime(); if( currentTime == -1 ) currentTime = 0; songLength = getLength(); if( songLength == -1 ) songLength = 0; } while (it != 0) { sp = (SensorParams*)(*it); meter = sp->getMeter(); if( running ) { format = sp->getParam("FORMAT"); if (format.length() == 0 ) { format = "%title %time / %length"; } if( format.lower() == "%ms" ) { meter->setMax( songLength ); meter->setValue( currentTime ); } else if ( format.lower() == "%full" ) { meter->setValue( 1 ); } else { format.replace( TQRegExp("%title", false), title ); format.replace( TQRegExp("%id", false), noatunID ); format.replace( TQRegExp("%length", false), TQTime( 0,0,0 ). addMSecs( songLength ) .toString( "h:mm:ss" ) ); format.replace( TQRegExp("%time", false), TQTime( 0,0,0 ). addMSecs( currentTime ) .toString( "h:mm:ss" ) ); format.replace( TQRegExp("%remain", false), TQTime( 0,0,0 ). addMSecs( songLength ) .addMSecs(-currentTime ) .toString( "h:mm:ss" ) ); meter->setValue(format); } } else { meter->setValue(""); } ++it; } }
/* ** Gets the value of a section variable. Returns true if strValue is set. ** The selector is stripped from strVariable. ** */ bool ConfigParser::GetSectionVariable(std::wstring& strVariable, std::wstring& strValue) { size_t colonPos = strVariable.find_last_of(L':'); if (colonPos == std::wstring::npos) { return false; } const std::wstring selector = strVariable.substr(colonPos + 1); const WCHAR* selectorSz = selector.c_str(); strVariable.resize(colonPos); bool isKeySelector = (!selector.empty() && iswalpha(selectorSz[0])); if (isKeySelector) { // [Meter:X], [Meter:Y], [Meter:W], [Meter:H] Meter* meter = m_Skin->GetMeter(strVariable); if (meter) { WCHAR buffer[32]; if (_wcsicmp(selectorSz, L"X") == 0) { _itow_s(meter->GetX(), buffer, 10); } else if (_wcsicmp(selectorSz, L"Y") == 0) { _itow_s(meter->GetY(), buffer, 10); } else if (_wcsicmp(selectorSz, L"W") == 0) { _itow_s(meter->GetW(), buffer, 10); } else if (_wcsicmp(selectorSz, L"H") == 0) { _itow_s(meter->GetH(), buffer, 10); } else { return false; } strValue = buffer; return true; } } // Number: [Measure:], [Measure:dec] // Percentual: [Measure:%], [Measure:%, dec] // Scale: [Measure:/scale], [Measure:/scale, dec] // Max/Min: [Measure:MaxValue], [Measure:MaxValue:/scale, dec] ('%' cannot be used) // EscapeRegExp: [Measure:EscapeRegExp] (Escapes regular expression syntax, used for 'IfMatch') // EncodeUrl: [Measure:EncodeUrl] (Escapes URL reserved characters) // TimeStamp: [TimeMeasure:TimeStamp] (ONLY for Time measures, returns the Windows timestamp of the measure) enum class ValueType { Raw, Percentual, Max, Min, EscapeRegExp, EncodeUrl, TimeStamp } valueType = ValueType::Raw; if (isKeySelector) { if (_wcsicmp(selectorSz, L"MaxValue") == 0) { valueType = ValueType::Max; } else if (_wcsicmp(selectorSz, L"MinValue") == 0) { valueType = ValueType::Min; } else if (_wcsicmp(selectorSz, L"EscapeRegExp") == 0) { valueType = ValueType::EscapeRegExp; } else if (_wcsicmp(selectorSz, L"EncodeUrl") == 0) { valueType = ValueType::EncodeUrl; } else if (_wcsicmp(selectorSz, L"TimeStamp") == 0) { valueType = ValueType::TimeStamp; } else { return false; } selectorSz = L""; } else { colonPos = strVariable.find_last_of(L':'); if (colonPos != std::wstring::npos) { do { const WCHAR* keySelectorSz = strVariable.c_str() + colonPos + 1; if (_wcsicmp(keySelectorSz, L"MaxValue") == 0) { valueType = ValueType::Max; } else if (_wcsicmp(keySelectorSz, L"MinValue") == 0) { valueType = ValueType::Min; } else { // Section name contains ':' ? break; } strVariable.resize(colonPos); } while (0); } } Measure* measure = m_Skin->GetMeasure(strVariable); if (measure) { if (valueType == ValueType::EscapeRegExp) { strValue = measure->GetStringValue(); StringUtil::EscapeRegExp(strValue); return true; } else if (valueType == ValueType::EncodeUrl) { strValue = measure->GetStringValue(); StringUtil::EncodeUrl(strValue); return true; } else if (measure->GetTypeID() == TypeID<MeasureTime>() && valueType == ValueType::TimeStamp) { MeasureTime* time = (MeasureTime*)measure; strValue = std::to_wstring(time->GetTimeStamp().QuadPart / 10000000); return true; } int scale = 1; const WCHAR* decimalsSz = wcschr(selectorSz, L','); if (decimalsSz) { ++decimalsSz; } if (*selectorSz == L'%') // Percentual { if (valueType == ValueType::Max || valueType == ValueType::Min) { // '%' cannot be used with Max/Min values. return false; } valueType = ValueType::Percentual; } else if (*selectorSz == L'/') // Scale { errno = 0; scale = _wtoi(selectorSz + 1); if (errno == EINVAL || scale == 0) { // Invalid scale value. return false; } } else { if (decimalsSz) { return false; } decimalsSz = selectorSz; } const double value = (valueType == ValueType::Percentual) ? measure->GetRelativeValue() * 100.0 : (valueType == ValueType::Max) ? measure->GetMaxValue() / scale : (valueType == ValueType::Min) ? measure->GetMinValue() / scale : measure->GetValue() / scale; int decimals = 10; if (decimalsSz) { while (iswspace(*decimalsSz)) ++decimalsSz; if (*decimalsSz) { decimals = _wtoi(decimalsSz); decimals = max(0, decimals); decimals = min(32, decimals); } else { decimalsSz = nullptr; } } WCHAR format[32]; WCHAR buffer[128]; _snwprintf_s(format, _TRUNCATE, L"%%.%if", decimals); int bufferLen = _snwprintf_s(buffer, _TRUNCATE, format, value); if (!decimalsSz) { // Remove trailing zeros if decimal count was not specified. measure->RemoveTrailingZero(buffer, bufferLen); bufferLen = (int)wcslen(buffer); } strValue.assign(buffer, bufferLen); return true; } return false; }
// Switching void NetworkTests::NetworkTestSwitching(int mpiRank, int mpiSize) { int nrHypercolumns = 5; int nrRateUnits = 10; int nrItems = 2; DataSources sources; srand(2); vector<vector<float> > data = sources.GetRandomHCs(nrHypercolumns,nrRateUnits,nrItems);//sources.GetRandom(size,0.1,nrItems); // setup recurrent network Network* network = new Network(); network->SetMPIParameters(mpiRank,mpiSize); PopulationColumns* layer1 = new PopulationColumns(network,nrHypercolumns,nrRateUnits,PopulationColumns::Graded); FullConnectivity* full = new FullConnectivity();//FullConnectivity(false,""); layer1->AddPre(layer1,full); network->AddPopulation(layer1); ProjectionModifierBcpnnOnline* eBcpnn = new ProjectionModifierBcpnnOnline(); ProjectionModifierTriesch* eTriesch = new ProjectionModifierTriesch(); ProjectionModifierHebbSimple* eHebb = new ProjectionModifierHebbSimple(); ProjectionModifierBCM* eBCM = new ProjectionModifierBCM(); full->AddProjectionsEvent(eBcpnn); // incl adding transfer fcn //full->AddProjectionsEvent(eTriesch); // incl adding transfer fcn //full->AddProjectionsEvent(eHebb); //full->AddProjectionsEvent(eBCM); PopulationModifierAdaptation2* eAdaptation = new PopulationModifierAdaptation2(); //eAdaptation->SetParameters(0,0); // adaptation off initially eAdaptation->SetParameters(0); // adaptation off initially layer1->AddPopulationModifier(eAdaptation); WTA* wta = new WTA(); layer1->AddPopulationModifier(wta);//wta);//softmax); network->Initialize(); eAdaptation->Initm_Aj(1); // initialize m_Aj vector // set up meters char* name1 = new char[30]; char* name2 = new char[30]; char* name3 = new char[30]; sprintf(name1,"Projections_n%d.csv",mpiRank); sprintf(name2,"Layer1ActivityWTA.csv"); sprintf(name3,"Layer1Activity.csv"); Meter* connMeter = new Meter(name1, Storage::CSV); connMeter->AttachProjection(layer1->GetIncomingProjections()[0],0); network->AddMeter(connMeter); Meter* layerMeter = new Meter(name3, Storage::CSV); layerMeter->AttachPopulation(layer1); network->AddMeter(layerMeter); Meter* eventLayerMeter=new Meter(name2, Storage::CSV); eventLayerMeter->AttachPopulationModifier(eAdaptation); network->AddMeter(eventLayerMeter); int nrIters = 10; int stimuliOn = 10; layer1->SwitchOnOff(false); // fixed input // store patterns for(unsigned int i=0;i<nrIters;i++) { for(unsigned int j=0;j<data.size();j++) { for(unsigned int k=0;k<stimuliOn; k++) { layer1->SetValuesAll(data[j]); network->Simulate(); } } } // random stimulation vector<float> randVec(data[0].size()); for(unsigned int i=0;i<randVec.size();i++) randVec[i] = 0.5f*float(rand()/RAND_MAX); // mixture vector<float> mixVec(data[0].size()); for(unsigned int i=0;i<mixVec.size();i++) mixVec[i] = 1*(data[0][i] + data[1][i]); layer1->SetValuesAll(mixVec);//randVec); // Test without adaptation turned on layer1->SwitchOnOff(true); //eHebb->SetEtaHebb(0.0); eBCM->SwitchOnOff(false); eBcpnn->SwitchOnOff(false); for(int i=0;i<nrIters;i++) { for(unsigned int j=0;j<data.size();j++) { layer1->SetValuesAll(mixVec);//data[j]); for(int k=0;k<stimuliOn; k++) { network->Simulate(); } } } // Turn on adaptation //eAdaptation->SetParameters(10,0.2); eAdaptation->SetParameters(0.2f); for(int i=0;i<nrIters;i++) { for(unsigned int j=0;j<data.size();j++) { layer1->SetValuesAll(mixVec); for(int k=0;k<stimuliOn; k++) { network->Simulate(); } } } network->RecordAll(); // check switching }
/* ** Gets the value of a section variable. Returns true if strValue is set. ** The selector is stripped from strVariable. ** */ bool ConfigParser::GetSectionVariable(std::wstring& strVariable, std::wstring& strValue) { size_t colonPos = strVariable.find_last_of(L':'); if (colonPos == std::wstring::npos) { return false; } const std::wstring selector = strVariable.substr(colonPos + 1); const WCHAR* selectorSz = selector.c_str(); strVariable.resize(colonPos); bool isKeySelector = (!selector.empty() && iswalpha(selectorSz[0])); if (isKeySelector) { // [Meter:X], [Meter:Y], [Meter:W], [Meter:H] Meter* meter = m_MeterWindow->GetMeter(strVariable); if (meter) { WCHAR buffer[32]; if (_wcsicmp(selectorSz, L"X") == 0) { _itow_s(meter->GetX(), buffer, 10); } else if (_wcsicmp(selectorSz, L"Y") == 0) { _itow_s(meter->GetY(), buffer, 10); } else if (_wcsicmp(selectorSz, L"W") == 0) { _itow_s(meter->GetW(), buffer, 10); } else if (_wcsicmp(selectorSz, L"H") == 0) { _itow_s(meter->GetH(), buffer, 10); } else { return false; } strValue = buffer; return true; } } // Number: [Measure:], [Measure:dec] // Percentual: [Measure:%], [Measure:%, dec] // Scale: [Measure:/scale], [Measure:/scale, dec] // Max/Min: [Measure:MaxValue], [Measure:MaxValue:/scale, dec] ('%' cannot be used) enum VALUETYPE { RAW = 0, PERCENTUAL = 1, MAX = 2, MIN = 3 } valueType = RAW; if (isKeySelector) { if (_wcsicmp(selectorSz, L"MaxValue") == 0) { valueType = MAX; } else if (_wcsicmp(selectorSz, L"MinValue") == 0) { valueType = MIN; } else { return false; } selectorSz = L""; } else { colonPos = strVariable.find_last_of(L':'); if (colonPos != std::wstring::npos) { do { const WCHAR* keySelectorSz = strVariable.c_str() + colonPos + 1; if (_wcsicmp(keySelectorSz, L"MaxValue") == 0) { valueType = MAX; } else if (_wcsicmp(keySelectorSz, L"MinValue") == 0) { valueType = MIN; } else { // Section name contains ':' ? break; } strVariable.resize(colonPos); } while (0); } } Measure* measure = m_MeterWindow->GetMeasure(strVariable); if (measure) { int scale = 1; const WCHAR* decimalsSz = wcschr(selectorSz, L','); if (decimalsSz) { ++decimalsSz; } if (*selectorSz == L'%') // Percentual { if (valueType == MAX || valueType == MIN) // '%' cannot be used with MAX/MIN value { return false; } valueType = PERCENTUAL; } else if (*selectorSz == L'/') // Scale { errno = 0; scale = _wtoi(selectorSz + 1); if (errno == EINVAL || scale == 0) // Invalid scale value { return false; } } else { if (decimalsSz) { return false; } decimalsSz = selectorSz; } double value = (valueType == PERCENTUAL) ? measure->GetRelativeValue() * 100.0 : (valueType == MAX) ? measure->GetMaxValue() / scale : (valueType == MIN) ? measure->GetMinValue() / scale : measure->GetValue() / scale; int decimals = 10; if (decimalsSz) { while (iswspace(*decimalsSz)) ++decimalsSz; if (*decimalsSz) { decimals = _wtoi(decimalsSz); decimals = max(0, decimals); decimals = min(32, decimals); } else { decimalsSz = nullptr; } } WCHAR format[32]; WCHAR buffer[128]; _snwprintf_s(format, _TRUNCATE, L"%%.%if", decimals); int bufferLen = _snwprintf_s(buffer, _TRUNCATE, format, value); if (!decimalsSz) { // Remove trailing zeros if decimal count was not specified. measure->RemoveTrailingZero(buffer, bufferLen); bufferLen = (int)wcslen(buffer); } strValue.assign(buffer, bufferLen); return true; } return false; }
void NetworkTests::NetworkTestTrieschAndFoldiak(int mpiRank, int mpiSize) { DataSources dataSources; int sizeX = 5;//10; int sizeY = 5;//10; int nrItems = 2500; bool isTriesch = true; Network* network = new Network(); network->SetMPIParameters(mpiRank,mpiSize); int nrInputHypercolumns = 1; int nrInputRateUnits = sizeX*sizeY; int nrOutputHypercolumns = 2; int nrOutputRateUnits = 5;//sizeX+sizeY; PopulationColumns* layer1 = new PopulationColumns(network,nrInputHypercolumns,nrInputRateUnits,PopulationColumns::GradedThresholded); PopulationColumns* layer2 = new PopulationColumns(network,nrOutputHypercolumns,nrOutputRateUnits,PopulationColumns::GradedThresholded); network->AddPopulation(layer1); network->AddPopulation(layer2); FullConnectivity* full = new FullConnectivity(); FullConnectivity* full2; FullConnectivityNoLocalHypercolumns* full3NoLocal; layer2->AddPre(layer1,full); bool thresholded = true; ProjectionModifierTriesch* eTriesch = new ProjectionModifierTriesch(0.002f,0.2f,0.05f,1.0f/float(nrOutputRateUnits), thresholded);//0.05,0.2,0.005,1.0/(float)nrOutputRateUnits, thresholded); if(isTriesch) full->AddProjectionsEvent(eTriesch); //float eta1 = 3, eta2= 2.4, eta3 = 1.5, alpha = 0.005, beta = 200; float eta1 = 0.5, eta2= 0.02, eta3 = 0.02, alpha = 0.0005, beta = 10;//alpha = 1.0/8.0, beta = 10; bool lateral = false; ProjectionModifierFoldiak* eFoldiak = new ProjectionModifierFoldiak(eta1, eta2, eta3, alpha, beta, lateral); lateral = true; alpha = 0.75; ProjectionModifierFoldiak* eFoldiakLateral = new ProjectionModifierFoldiak(eta1, eta2, eta3, alpha, beta, lateral); //ProjectionModifierBCM* eBCM = new ProjectionModifierBCM(0.1,0.05,20); if(!isTriesch) { full2 = new FullConnectivity(); layer2->AddPre(layer2,full2); full->AddProjectionsEvent(eFoldiak); full2->AddProjectionsEvent(eFoldiakLateral); } else { full3NoLocal = new FullConnectivityNoLocalHypercolumns(); //full3NoLocal->AddProjectionsEvent(eBCM); full3NoLocal->AddProjectionsEvent(eFoldiakLateral); layer2->AddPre(layer2,full3NoLocal); } // implements N here SoftMax* softmax = new SoftMax(SoftMax::WTAThresholded,0.5);//(10.0, SoftMax::ProbWTA); WTA* wta = new WTA(); //layer2->AddPopulationModifier(wta); layer2->AddPopulationModifier(softmax); network->Initialize(); ////////////////////////////// // Meters char* name1 = new char[50]; char* name2 = new char[50]; sprintf(name1,"Projection_triesch_n%d.csv",mpiRank); Meter* connMeter = new Meter(name1, Storage::CSV); connMeter->AttachProjection(layer2->GetIncomingProjections()[0],0); network->AddMeter(connMeter); sprintf(name2,"Layer2Activity_triesch.csv"); Meter* layerMeter = new Meter(name2, Storage::CSV); layerMeter->AttachPopulation(layer2); network->AddMeter(layerMeter); // end Meters ////////////////////////////// vector<vector<float> > trainData = dataSources.GetBars(sizeX,sizeY, nrItems); int iterations = 1; int iterSameStimuli = 100; if(!isTriesch) iterSameStimuli = 10; layer1->SwitchOnOff(false); // fixed during training phase for(int j=0;j<iterations;j++) { for(int i=0;i<trainData.size();i++) { /*if(!isTriesch) { // in order to settle recurrent activity eFoldiak->SwitchOnOff(false); eFoldiakLateral->SwitchOnOff(false); }*/ for(int k=0;k<iterSameStimuli;k++) { /* if(!isTriesch && k==iterSameStimuli-1) { eFoldiak->SwitchOnOff(true); eFoldiakLateral->SwitchOnOff(true); } */ for(int m=0;m<1;m++) { layer1->SetValuesAll(trainData[i]); //for(int n=0;n<3;n++) network->Simulate(); } } // allow units to reset network->Reset(); /*if(i%50 == 0) { network->RecordAll(); if(mpiRank == 0) cout<<"Storing."; }*/ } } network->RecordAll(); }
BoundingBox::BoundingBox(Meter x1, Meter y1, Meter x2, Meter y2) : xMin(x1.min(x2)), xMax(x1.max(x2)), yMin(y1.min(y2)), yMax(y1.max(y2)) { }
BoundingBox::BoundingBox(Meter x1, Meter y1, Meter x2, Meter y2, Meter x3, Meter y3, Meter x4, Meter y4) : xMin(x1.min(x2).min(x3).min(x4)), xMax(x1.max(x2).max(x3).max(x4)), yMin(y1.min(y2).min(y3).min(y4)), yMax(y1.max(y2).max(y3).max(y4)) { }
void TestClassDefinition() { Femtometer const femtometer( 1. ); Assert( fequal( femtometer.GetValue(), 1. ) ); Assert( fequal( femtometer.GetConvertedValue(), 1.e-15 ) ); Assert( fequal( femtometer.GetFactor(), 1.e-15 ) ); Picometer const picometer( 1. ); Assert( fequal( picometer.GetValue(), 1. ) ); Assert( fequal( picometer.GetConvertedValue(), 1.e-12 ) ); Assert( fequal( picometer.GetFactor(), 1.e-12 ) ); Nanometer const nanometer( 1. ); Assert( fequal( nanometer.GetValue(), 1. ) ); Assert( fequal( nanometer.GetConvertedValue(), 1.e-9 ) ); Assert( fequal( nanometer.GetFactor(), 1.e-9 ) ); Micrometer const micrometer( 1. ); Assert( fequal( micrometer.GetValue(), 1. ) ); Assert( fequal( micrometer.GetConvertedValue(), 1.e-6 ) ); Assert( fequal( micrometer.GetFactor(), 1.e-6 ) ); Millimeter const millimeter( 1. ); Assert( fequal( millimeter.GetValue(), 1. ) ); Assert( fequal( millimeter.GetConvertedValue(), .001 ) ); Assert( fequal( millimeter.GetFactor(), .001 ) ); Centimeter const centimeter( 1. ); Assert( fequal( centimeter.GetValue(), 1. ) ); Assert( fequal( centimeter.GetConvertedValue(), .01 ) ); Assert( fequal( centimeter.GetFactor(), .01 ) ); Decimeter const decimeter( 1. ); Assert( fequal( decimeter.GetValue(), 1. ) ); Assert( fequal( decimeter.GetConvertedValue(), .1 ) ); Assert( fequal( decimeter.GetFactor(), .1 ) ); Meter const meter( 1. ); Assert( fequal( meter.GetValue(), 1. ) ); Assert( fequal( meter.GetConvertedValue(), 1. ) ); Assert( fequal( meter.GetFactor(), 1. ) ); long const l = sizeof( Meter ); long const l2 = sizeof( Kilometer ); long const l3 = sizeof( meter ); Assert( l == l2 && l == l3 ); Dekameter const dekameter( 1. ); Assert( fequal( dekameter.GetValue(), 1. ) ); Assert( fequal( dekameter.GetConvertedValue(), 10. ) ); Assert( fequal( dekameter.GetFactor(), 10. ) ); Hectometer const hectometer( 1. ); Assert( fequal( hectometer.GetValue(), 1. ) ); Assert( fequal( hectometer.GetConvertedValue(), 100. ) ); Assert( fequal( hectometer.GetFactor(), 100. ) ); Kilometer const kilometer( 1. ); Assert( fequal( kilometer.GetValue(), 1. ) ); Assert( fequal( kilometer.GetConvertedValue(), 1000. ) ); Assert( fequal( kilometer.GetFactor(), 1000. ) ); Megameter const megameter( 1. ); Assert( fequal( megameter.GetValue(), 1. ) ); Assert( fequal( megameter.GetConvertedValue(), 1.e6 ) ); Assert( fequal( megameter.GetFactor(), 1.e6 ) ); Gigameter const gigameter( 1. ); Assert( fequal( gigameter.GetValue(), 1. ) ); Assert( fequal( gigameter.GetConvertedValue(), 1.e9 ) ); Assert( fequal( gigameter.GetFactor(), 1.e9 ) ); Terameter const terameter( 1. ); Assert( fequal( terameter.GetValue(), 1. ) ); Assert( fequal( terameter.GetConvertedValue(), 1.e12 ) ); Assert( fequal( terameter.GetFactor(), 1.e12 ) ); Petameter const petameter( 1. ); Assert( fequal( petameter.GetValue(), 1. ) ); Assert( fequal( petameter.GetConvertedValue(), 1.e15 ) ); Assert( fequal( petameter.GetFactor(), 1.e15 ) ); Mil const mil( 1. ); Assert( fequal( mil.GetValue(), 1. ) ); Assert( fequal( mil.GetConvertedValue(), .0000254 ) ); Assert( fequal( mil.GetFactor(), .0000254 ) ); Inch const inch( 1. ); Assert( fequal( inch.GetValue(), 1. ) ); Assert( fequal( inch.GetConvertedValue(), .0254 ) ); Assert( fequal( inch.GetFactor(), .0254 ) ); Foot const foot( 1. ); Assert( fequal( foot.GetValue(), 1. ) ); Assert( fequal( foot.GetConvertedValue(), .3048 ) ); Assert( fequal( foot.GetFactor(), .3048 ) ); }
boost::optional<IdfObject> ForwardTranslator::translateMeter( Meter & modelObject ) { boost::optional<IdfObject> idfObject; QString name = toQString(modelObject.name()).replace(QString("FuelOil_"), QString("FuelOil#")); if (modelObject.meterFileOnly() && modelObject.cumulative()) { idfObject = IdfObject (openstudio::IddObjectType::Output_Meter_Cumulative_MeterFileOnly); m_idfObjects.push_back(*idfObject); idfObject->setString(Output_Meter_Cumulative_MeterFileOnlyFields::Name, toString(name)); if (!modelObject.isReportingFrequencyDefaulted()) { idfObject->setString(Output_Meter_Cumulative_MeterFileOnlyFields::ReportingFrequency, modelObject.reportingFrequency()); } } else if (modelObject.meterFileOnly()) { idfObject = IdfObject (openstudio::IddObjectType::Output_Meter_MeterFileOnly); m_idfObjects.push_back(*idfObject); idfObject->setString(Output_Meter_MeterFileOnlyFields::Name, toString(name)); if (!modelObject.isReportingFrequencyDefaulted()) { idfObject->setString(Output_Meter_MeterFileOnlyFields::ReportingFrequency, modelObject.reportingFrequency()); } } else if (modelObject.cumulative()) { idfObject = IdfObject (openstudio::IddObjectType::Output_Meter_Cumulative); m_idfObjects.push_back(*idfObject); idfObject->setString(Output_Meter_CumulativeFields::Name, toString(name)); if (!modelObject.isReportingFrequencyDefaulted()) { idfObject->setString(Output_Meter_CumulativeFields::ReportingFrequency, modelObject.reportingFrequency()); } } else { idfObject = IdfObject (openstudio::IddObjectType::Output_Meter); m_idfObjects.push_back(*idfObject); idfObject->setString(Output_MeterFields::Name, toString(name)); if (!modelObject.isReportingFrequencyDefaulted()) { idfObject->setString(Output_MeterFields::ReportingFrequency, modelObject.reportingFrequency()); } } return idfObject; }