我有N
个代理人在(截断的Levy)分布后放置在网格n x n
中
px = (r + r0)**(-beta)*exp(-r/k)
每个代理都有两个最喜欢的单元格:home
和work
,px
是每个代理从home
和work
移动距离的概率r
。
def returnLevy(r, beta):
r0 = 100
k = 1500
px = (r + r0)**(-beta)*exp(-r/k)
return px
我计算了网格中所有单元格之间的距离,所以
allDistances.head(5):
distances cell_a cell_b
0 1.322959 0 1
1 0.717737 0 2
2 0.454170 0 3
3 0.321495 0 4
4 0.454248 0 5
我想知道是否有办法在上述发行版之后随机为每个座席分配r
和home
距离work
。最后,我想有一个数据框:
agentsCells
distance home work
0 1.322959 320 1089
1 0.717737 4 765
2 0.454170 2100 388
答案 0 :(得分:0)
您可以使用pdf
定义自己的自定义scipy
,并使用它来计算概率密度的有用指标
import scipy.stats as st
class LevyPDF(st.rv_continuous):
def _pdf(self,r):
r0 = 100
k = 1500
return (r + r0)**(-beta)*exp(-r/k) #Normalized over its range [minValue,maxValue]
my_cv = LevyPDF(a=minValue, b=maxValue, name='LevyPDF')
要随机绘制值,您必须首先计算累积分布函数(cdf
),然后将其反转以获得icdf
。现在可以使用pdf
后面的随机值绘制(您可以找到更多详细信息here)。
如果您计算了cdf
,则可以使用my_cv.cdf()
的数字结果检查结果。