-
大小: 394KB文件類(lèi)型: .zip金幣: 2下載: 2 次發(fā)布日期: 2021-05-13
- 語(yǔ)言: Python
- 標(biāo)簽: python??數(shù)學(xué)建模??
資源簡(jiǎn)介
應(yīng)用社會(huì)力模型,模擬一個(gè)人群疏散或人行道(斑馬線)對(duì)流的過(guò)程。熟悉行人模型及其仿真過(guò)程。
社會(huì)力模型(Social-Force Model)是 D. Helbing 與 P. Molnár 于1995年提出的,并在之后不斷完善的理論模型。
在2000年, Dirk Helbing 的一篇NATURE文章發(fā)表了,題目是 “Simulating dynamical features of escape panic”, 文中提出了社會(huì)力模型,一種描述人與人之間避碰的心理力。

代碼片段和文件信息
import?numpy?as?np
import?numpy.random?as?nr
from?component?import?BFS?as?bfs
from?component?import?person
class?ForceMap:
????def?__init__(self?graph?width?height?x?y?num):
????????self.A?=?2000
????????self.B?=?0.02
????????self.r?=?0.3
????????self.k?=?480000
????????self.K?=?960000
????????#?self.A?=?2000
????????#?self.B?=?0.08
????????#?self.r?=?0.2
????????#?self.k?=?120000
????????#?self.K?=?240000
????????self.crowd?=?[]
????????self.width?=?height
????????self.height?=?width
????????self.distMap?=?bfs.BFS(graph?width?height?y?x).dist
????????self.randomPos(height?width?num)
????def?randomPos(self?width?height?num):??#?隨機(jī)生成行人位置,行人不會(huì)在墻內(nèi),多個(gè)行人也不會(huì)出現(xiàn)在同一塊中
????????i?=?0
????????tmp?=?[]
????????while?i?????????????px?=?nr.randint(1?width?-?1)
????????????py?=?nr.randint(1?height?-?1)
????????????if?self.distMap[px?py]?!=?-1:
????????????????if?(px?py)?not?in?tmp:
????????????????????tmp.append((px?py))
????????????????????self.crowd.append(person.Person(px?+?0.5?py?+?0.5?self.r))
????????????????????i?+=?1
????def?obstacleMap(self):??#?導(dǎo)出障礙地圖格式字符串
????????st?=?‘[‘
????????for?i?in?range(self.height):
????????????for?j?in?range(self.width):
????????????????if?self.distMap[i?j]?==?-1:
????????????????????st?+=?‘[{}{}]‘.format(i?j)
????????st?+=?‘]‘
????????return?st
????def?personMap(self):??#?導(dǎo)出行人位置圖字符串
????????plist?=?[]
????????for?p?in?self.crowd:
????????????plist.append([round(p.pos[0]?5)?round(p.pos[1]?5)?p.r])
????????return?plist
????def?clear(self):??#?清空上一輪計(jì)算的力
????????for?p?in?self.crowd:
????????????p.clearForce()
????def?setDir(self):??#?確定每個(gè)行人的尋路方向
????????for?p?in?self.crowd:
????????????x?=?int(p.pos[0])
????????????y?=?int(p.pos[1])
????????????nd?=?self.distMap[x?y]
????????????if?nd?-?self.distMap[x?-?1?y]?==?1:
????????????????p.setDir(np.array([-1?0]))
????????????if?nd?-?self.distMap[x?+?1?y]?==?1:
????????????????p.setDir(np.array([1?0]))
????????????if?nd?-?self.distMap[x?y?-?1]?==?1:
????????????????p.setDir(np.array([0?-1]))
????????????if?nd?-?self.distMap[x?y?+?1]?==?1:
????????????????p.setDir(np.array([0?1]))
????def?g(self?dis):
????????if?dis?<=?0:
????????????return?0
????????else:
????????????return?dis
????def?wallR(self?i?x?y):
????????for?xi?in?range(x?+?1?self.width):
????????????if?self.distMap[xi?y]?==?-1:
????????????????return?xi?-?self.crowd[i].pos[0]
????????return?self.width
????def?wallL(self?i?x?y):
????????for?xi?in?range(x?-?1?-1?-1):
????????????if?self.distMap[xi?y]?==?-1:
????????????????return?self.crowd[i].pos[0]?-?xi?-?1
????????return?self.width
????def?wallU(self?i?x?y):
????????for?yi?in?range(y?+?1?self.height):
????????????if?self.distMap[x?yi]?==?-1:
????????????????return?yi?-?self.crowd[i].pos[1]
????????return?self.height
????def?wallD(self?i?x?y):
????????for?yi?in?range(y?-?1?-1?-1):
????????????if?self.distMap[x?yi]?==?-1:
????????????????return?self.crowd[i].pos[1]?-?yi?-?1
????????return?self.heig
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????目錄???????????0??2018-12-26?09:14??Social_Force\.git\
?????目錄???????????0??2018-12-11?15:58??Social_Force\.git\branches\
?????文件??????????11??2018-12-25?01:01??Social_Force\.git\COMMIT_EDITMSG
?????文件?????????269??2018-12-11?15:58??Social_Force\.git\config
?????文件??????????73??2018-12-11?15:58??Social_Force\.git\desc
?????文件??????????23??2018-12-11?15:58??Social_Force\.git\HEAD
?????目錄???????????0??2018-12-11?15:58??Social_Force\.git\hooks\
?????文件?????????478??2018-12-11?15:58??Social_Force\.git\hooks\applypatch-msg.sample
?????文件?????????896??2018-12-11?15:58??Social_Force\.git\hooks\commit-msg.sample
?????文件????????3327??2018-12-11?15:58??Social_Force\.git\hooks\fsmonitor-watchman.sample
?????文件?????????189??2018-12-11?15:58??Social_Force\.git\hooks\post-update.sample
?????文件?????????424??2018-12-11?15:58??Social_Force\.git\hooks\pre-applypatch.sample
?????文件????????1642??2018-12-11?15:58??Social_Force\.git\hooks\pre-commit.sample
?????文件????????1492??2018-12-11?15:58??Social_Force\.git\hooks\prepare-commit-msg.sample
?????文件????????1348??2018-12-11?15:58??Social_Force\.git\hooks\pre-push.sample
?????文件????????4898??2018-12-11?15:58??Social_Force\.git\hooks\pre-reba
?????文件?????????544??2018-12-11?15:58??Social_Force\.git\hooks\pre-receive.sample
?????文件????????3610??2018-12-11?15:58??Social_Force\.git\hooks\update.sample
?????文件????????3436??2018-12-25?17:25??Social_Force\.git\index
?????目錄???????????0??2018-12-11?15:58??Social_Force\.git\info\
?????文件?????????240??2018-12-11?15:58??Social_Force\.git\info\exclude
?????目錄???????????0??2018-12-11?15:58??Social_Force\.git\logs\
?????文件?????????931??2018-12-25?01:01??Social_Force\.git\logs\HEAD
?????目錄???????????0??2018-12-11?15:58??Social_Force\.git\logs\refs\
?????目錄???????????0??2018-12-11?15:58??Social_Force\.git\logs\refs\heads\
?????文件?????????931??2018-12-25?01:01??Social_Force\.git\logs\refs\heads\master
?????目錄???????????0??2018-12-11?15:58??Social_Force\.git\logs\refs\remotes\
?????目錄???????????0??2018-12-11?18:59??Social_Force\.git\logs\refs\remotes\origin\
?????文件?????????185??2018-12-11?15:58??Social_Force\.git\logs\refs\remotes\origin\HEAD
?????文件?????????715??2018-12-25?01:02??Social_Force\.git\logs\refs\remotes\origin\master
?????目錄???????????0??2018-12-25?17:25??Social_Force\.git\ob
............此處省略397個(gè)文件信息
評(píng)論
共有 條評(píng)論