Netlogo中的离散系统模型

Netlogo中的离散系统模型,netlogo,multi-agent,Netlogo,Multi Agent,我想模拟n辆车。每辆车由第一个离散模型表示: p_i[k+1]=p_i[k]+T*v_i[k] 而p_i[k+1],p_i[k]分别表示车辆i在采样时间(k+1)T和kT的位置 T是采样时间 v_i[k]是采样时间kT时车辆i的速度 车辆之间的关系如下式所示: p_i[k+1]=T*(p_(i+1)[k+1]+p_(i-1)[k]-2*p_i[k]) 我不知道如何在这里表示采样时间t有点不清楚“采样时间”是什么意思。然而,根据你的符号,我想你的意思是T是当前时间,你是在根据当前位置和速度计算下一

我想模拟n辆车。每辆车由第一个离散模型表示:

p_i[k+1]=p_i[k]+T*v_i[k]

而p_i[k+1],p_i[k]分别表示车辆i在采样时间(k+1)T和kT的位置

T是采样时间

v_i[k]是采样时间kT时车辆i的速度

车辆之间的关系如下式所示:

p_i[k+1]=T*(p_(i+1)[k+1]+p_(i-1)[k]-2*p_i[k])


我不知道如何在这里表示采样时间t

有点不清楚“采样时间”是什么意思。然而,根据你的符号,我想你的意思是T是当前时间,你是在根据当前位置和速度计算下一个时间点的位置。在这种情况下,您不需要显式地表示时间,只需要在时间中前进。在NetLogo中,
tick
是向前移动一个时间步的命令(而
ticks
是到目前为止所用时间步数的报告器,但我相信您不需要它)

根据评论更新:

我想我们的谈话是有矛盾的。采样的目的是找到连续函数或函数集的离散近似值。一旦你处于离散时间,你可以使用记号作为你的时间标记。每个勾号都可以计算状态。您只需要记住,如果采样时间为0.5秒,则需要(例如)做20次滴答来查找10秒时的状态

以下是一个例子:

globals [ticks-per-sec]
turtles-own [velocity]

to setup
  clear-all
  set ticks-per-sec 2
  create-turtles 10
  [ setxy random-xcor random-ycor
    set velocity (1 + random 4) / ticks-per-sec
    set heading 90
  ]
  reset-ticks
end

to go
  ask turtles
  [ forward velocity
    set velocity 0.9 * velocity + 0.1 * mean [velocity] of other turtles
  ]
  tick
end

我把所有的海龟都安排在同一个方向上,这样你就可以看到它们的速度收敛。您的方程式具有恒定速度,但本示例旨在向您展示如何在车辆之间进行交互。

您所说的“采样时间”有点不清楚。然而,根据你的符号,我想你的意思是T是当前时间,你是在根据当前位置和速度计算下一个时间点的位置。在这种情况下,您不需要显式地表示时间,只需要在时间中前进。在NetLogo中,
tick
是向前移动一个时间步的命令(而
ticks
是到目前为止所用时间步数的报告器,但我相信您不需要它)

根据评论更新:

我想我们的谈话是有矛盾的。采样的目的是找到连续函数或函数集的离散近似值。一旦你处于离散时间,你可以使用记号作为你的时间标记。每个勾号都可以计算状态。您只需要记住,如果采样时间为0.5秒,则需要(例如)做20次滴答来查找10秒时的状态

以下是一个例子:

globals [ticks-per-sec]
turtles-own [velocity]

to setup
  clear-all
  set ticks-per-sec 2
  create-turtles 10
  [ setxy random-xcor random-ycor
    set velocity (1 + random 4) / ticks-per-sec
    set heading 90
  ]
  reset-ticks
end

to go
  ask turtles
  [ forward velocity
    set velocity 0.9 * velocity + 0.1 * mean [velocity] of other turtles
  ]
  tick
end

我把所有的海龟都安排在同一个方向上,这样你就可以看到它们的速度收敛。您的方程式具有恒定速度,但本示例旨在向您展示如何在车辆之间进行交互。

感谢您的回答,采样时间可以通过[定义]来理解(滴答时间我认为它与采样时间的含义不同。对于固定采样时间(T),例如T=0.5 s(每0.5秒我们计算一次所有状态)。为什么你认为勾号没有相同的含义?勾号可以表示任意离散的时间推进。如果你使用1个勾号=0.5秒,那么你显然需要在任何包含时间的报告中进行转换(例如,秒到分辨率=模拟分辨率勾号/2)你可以顺便看看,你知道如何转换一个刻度=0.5秒吗,我找不到任何直接转换:我使用每个命令:每0.5秒一次;第二次[do stuff tick]End我认为在离散时间系统中,系统的状态是每t(采样时间)更新一次。因此,在您的示例中,它没有显示采样含义。因为xcor、ycor在每个滴答之后都会更新,与“滴答每秒”(变量)无关。在非常短的时间内(采样周期),速度是恒定的。感谢您的回答,采样时间可以通过该[定义]来理解(滴答时间我认为它与采样时间的含义不同。对于固定采样时间(T),例如T=0.5秒(每0.5秒计算一次所有状态)。为什么你认为勾号没有相同的含义?勾号可以表示任意离散的时间推进。如果你使用1个勾号=0.5秒,那么你显然需要在任何包含时间的报告中转换(例如秒到分辨率=模拟分辨率勾号/2)你可以顺便看看,你知道如何转换一个刻度=0.5秒吗,我找不到任何直接转换:我使用每个命令:每0.5秒一次;第二次[do stuff tick]End我认为在离散时间系统中,系统的状态是每t(采样时间)更新一次。因此,在您的示例中,它没有显示采样含义。因为xcor、ycor在每个滴答声之后都会更新,与“滴答声/秒”(变量)无关。在非常短的时间内(采样周期),速度是恒定的。