官术网_书友最值得收藏!

第二個例子是模擬鳥群飛行。我們經常會看到鳥聚集成群,飛行時形成各種隊形,姿態非常優美。當它們朝向一個障礙物飛行的時候,會動態地分成兩隊,在越過這個障礙物后,又能夠聚合到一起。

那么究竟是誰帶領這些鳥形成不同隊形的?實際上,模擬程序告訴我們,并不需要一個領導者來發號施令,只需要讓所有鳥都遵循一種非常自然的簡單規則,一群鳥就有可能形成復雜的隊形。

其中每一個主體都是一只模擬的鳥,每只鳥都有視野半徑,只有其他鳥出現在它的視野半徑內,才會對它造成影響。

我們為這些鳥設置3條簡單的規則。

  • 聚集:盡量靠近鄰居。
  • 對齊:與鄰居飛行方向保持一致。
  • 分離:如果和其他鳥靠得太近,則遠離。

接下來看一看NetLogo自帶的鳥群模擬程序。同樣打開模型庫,找到Flocking模型。開始的時候我們可以看到,這群模擬的鳥散落在屏幕上,如圖1-7所示。

圖1-7 初始化鳥群模型

然后單擊“go”按鈕,它們就會按照前述3條簡單規則發生聚集。你會發現,這些鳥慢慢會形成一系列鳥群。我們稍微調快一點兒模擬速度,讓鳥群飛得快一點兒,你就會發現這群鳥很快就會形成幾個隊形,一會兒排成“一”字,一會兒排成“人”字,如圖1-8所示。

圖1-8 鳥群模擬圖像

對于每一只鳥下一時刻將會朝哪個方向飛,很難進行預測,我們只有“鉆”到代碼里,去看每一只鳥所面對的環境,才能給出相應的答案。這種在模擬程序中出現了超出程序員事先構想的現象或行為稱為“涌現”。

主站蜘蛛池模板: 壶关县| 布尔津县| 南召县| 呼图壁县| 甘洛县| 新昌县| 新巴尔虎右旗| 疏附县| 临邑县| 峨边| 浪卡子县| 镇江市| 永年县| 县级市| 上饶县| 灌南县| 台南县| 枣庄市| 四子王旗| 本溪| 南和县| 睢宁县| 康保县| 繁昌县| 陈巴尔虎旗| 连城县| 堆龙德庆县| 攀枝花市| 凯里市| 桓台县| 云浮市| 深圳市| 汽车| 宝山区| 广安市| 出国| 鄂伦春自治旗| 南城县| 合山市| 确山县| 南澳县|