社会力模型以牛顿动力学为基础,由各个力的表达式来体现行人不同的动机和影响。
个体的实际行为受个体的主观意识、个体之间以及障碍物这三方面因素的影响,
均可将其等效为力在个体上的作用。
步骤如下:
foreach(Agent agent in Agents)
{
if (agent.IsActivity == true)
{
Vector2 self_Force = Get_Self_Force(agent);
Vector2 other_Force = Get_OtherAgents_Force(agent);
Vector2 obstacle_Force = Get_Obstacle_Force(agent);
Vector2 Sum = self_Force + other_Force + obstacle_Force;
Vector2 Dex_speed = Sum / agent.Mass * Paramaters._ε;
agent.Real_speed += Dex_speed * Paramaters._Scale;
agent.Real_speed = GetRealSpeed(agent);
agent.Position = new PointF(agent.Position.X + (agent.Real_speed.X * Paramaters.TimeStep),
agent.Position.Y + (agent.Real_speed.Y * Paramaters.TimeStep));
agent.Self = new RectangleF((agent.Position.X - agent.Radius), (agent.Position.Y - agent.Radius), agent.Radius * 2f, agent.Radius * 2f);
}
}
参考文献:
Dirk Helbing, Illés Farkas, Tamás Vicsek. Simulating dynamical features of escape panic. 2000, 407(6803):487-490.