45 #ifndef __FDMODIFIER_MODIFIER_H__
46 #define __FDMODIFIER_MODIFIER_H__
53 #include "mengeCommon.h"
55 using namespace Menge;
65 class FDModifierFactory;
73 class FDMODIFIER_API
FDModifier :
public BFSM::VelModifier {
91 FDModifier( FloatGenerator * buffer, FloatGenerator * factor,
float sigmaAgent,
float sigmaObstacle );
96 BFSM::VelModifier* copy()
const;
104 void adaptPrefVelocity(
const Agents::BaseAgent * agent, Agents::PrefVelocity & pVel );
111 void setBuffer( FloatGenerator * buffer) {
if ( _bufferGen )
delete _bufferGen; _bufferGen = buffer; }
118 void setFactor( FloatGenerator * factor ) {
if ( _factorGen )
delete _factorGen; _factorGen = factor; }
145 FDParam() : _strideConst(1.f), _speedConst(1.f) {}
154 _strideConst = 0.5f * ( 1.f + buffer ) / factor ;
155 _speedConst = 1.f / ( _strideConst * _strideConst );
223 virtual const char *
name()
const {
return "fundamental_diagram"; }
233 return "Adjusts the agent's preferred speed to adhere to the fundamental diagram ";
267 virtual bool setFromXML( BFSM::VelModifier * modifier, TiXmlElement * node,
const std::string & behaveFldr )
const;
290 #endif // __FDMODIFIER_MODIFIER_H__
FDParam()
Default constructor.
Definition: FundamentalDiagramModifier.h:145
HASH_MAP< size_t, FDParam > _strideParams
The per-agent parameters.
Definition: FundamentalDiagramModifier.h:180
void setBuffer(FloatGenerator *buffer)
Sets the stride buffer.
Definition: FundamentalDiagramModifier.h:111
float _speedConst
The second of two derived constants for fundamental diagram compliance. This is a function of the str...
Definition: FundamentalDiagramModifier.h:168
FloatGenerator * _factorGen
The Stride factor value generator.
Definition: FundamentalDiagramModifier.h:190
Configures the shared library aspect of the includes.
The factory for the FDModifier class.
Definition: FundamentalDiagramModifier.h:208
BFSM::VelModifier * instance() const
Create an instance of this class's modifier.
Definition: FundamentalDiagramModifier.h:247
virtual const char * name() const
The name of the modifier.
Definition: FundamentalDiagramModifier.h:223
size_t _factorID
The identifier for the "stride_factor" float attribute.
Definition: FundamentalDiagramModifier.h:277
void setFactor(FloatGenerator *factor)
Sets the stride factor.
Definition: FundamentalDiagramModifier.h:118
float _sigmaObstacle
Sigma for obstacle density estimation.
Definition: FundamentalDiagramModifier.h:200
void setSigmaObstacle(float sigma)
Sets the agent sigma.
Definition: FundamentalDiagramModifier.h:132
FloatGenerator * _bufferGen
The Stride buffer value generator.
Definition: FundamentalDiagramModifier.h:185
SimpleLock _paramLock
The readers-writer lock to preserve thread-safety on _strideParams.
Definition: FundamentalDiagramModifier.h:175
Defines the parameters which define the density-aware behavior.
Definition: FundamentalDiagramModifier.h:141
float _sigmaAgent
Agent sigma for density calculation.
Definition: FundamentalDiagramModifier.h:195
void setSigmaAgent(float sigma)
Sets the agent sigma.
Definition: FundamentalDiagramModifier.h:125
size_t _sigmaAgentID
The identifier for the "sigma_agent" float attribute.
Definition: FundamentalDiagramModifier.h:282
float _strideConst
One of two derived constants for fundamental diagram compliance. This is a function of the stride fac...
Definition: FundamentalDiagramModifier.h:162
size_t _sigmaObstacleID
The identifier for the "sigma_obstacle" float attribute.
Definition: FundamentalDiagramModifier.h:287
FDParam(float factor, float buffer)
Constructor.
Definition: FundamentalDiagramModifier.h:153
The name space for the Fundamental Diagram adherence model.
Definition: FundamentalDiagramModifier.cpp:46
size_t _bufferID
The identifier for the "stride_buffer" float attribute.
Definition: FundamentalDiagramModifier.h:272
virtual const char * description() const
A description of the modifier.
Definition: FundamentalDiagramModifier.h:232