一、土地使用變遷規則設定
這邊參考細胞自動機(CA)的規則,土地會受周圍的土地使用狀態,導致土地使用變遷。在第7章有關於使用netlogo實作細胞自動機的說明。簡述一下這個範例的規則:
海拔超過1500公尺則不能開發,住宅或商業都不會出現。
對所有海拔低於1500公尺的網格:如果周圍的商業數量或住宅數量適當,則會轉為商業或住宅,反之,也可能會轉為空地。
二、netlogo完整程式碼
patches-own [ ele landuse sumres sumcom ] to setup ca ask patches [ set ele random max-ele ] ask patches with [ele > 1500 ] [set landuse 3 set pcolor brown ] ask patches with [ele <= 1500 ] [ ifelse random 100.0 < initial [resident] [vacancy] ] end to go ask patches with [ ele <= 1500 ] [ set sumres count neighbors with [ landuse = 1 ] set sumcom count neighbors with [ landuse = 2 ] ] ask patches with [ ele <= 1500 ] [ ifelse sumcom > 4 [vacancy] [ ifelse (landuse = 0 ) and ((sumres >= 2 ) and ( sumres <= 5 )) [resident] [ if ( landuse = 1 ) and ( sumres >= threshold ) [ commercial ] ] ] ] end to commercial set landuse 2 set pcolor red end to resident set landuse 1 set pcolor yellow end to vacancy set landuse 0 set pcolor green end
三、netlogo程式碼分段說明
(一)patches-own網格變數說明
ele:海拔高度,最大值為介面的max-ele滑桿減 1。
sumres:周圍鄰居是住宅的數量
sumcom:周圍鄰居是商業的數量
landuse:該網格的土地使用類型,分為以下幾種:
- landuse = 3:海拔超過1500公尺,不可開發地區。以咖啡色呈現。
- landuse = 2:住宅區。以黃色呈現。
- landuse = 1:商業區。以紅色呈現。
- landuse = 0:空地,以綠色呈現。
patches-own [ ele landuse sumres sumcom ]
(二)setup初始化
- 先用ca清空所有設定
- 隨機指定每個網格的海拔高度(ele),最大值為介面的max-ele滑桿減 1
- 設定海拔高度(ele)大於1500的網格為不可開發地區,landuse = 3。以咖啡色呈現。
- 若隨機亂數的值小於initial,便設定網格為住宅區,landuse = 1。以黃色呈現。否則設定為空地,landuse = 0,以綠色呈現。
ca ask patches [ set ele random max-ele ] ask patches with [ele > 1500 ] [set landuse 3 set pcolor brown ] ask patches with [ele <= 1500 ] [ ifelse random 100.0 < initial [ resident ] [ vacancy ] ] end
設定為住宅區
to resident set landuse 1 set pcolor yellow end
設定為空地
to vacancy set landuse 0 set pcolor green end
(三)go主程式
- 對所有海拔低於1500公尺的網格:如果周圍網格商業數量超過4個,則會因為太過擁擠而變為空地。
- 如果目前狀態為空地:若周圍網格的住宅數量介於2到5之間,則會因為有發展而轉為住宅區。
- 如果目前狀態為住宅:若周圍網格的商業數量大於門檻值,則會因為有發展而轉為商業區。門檻值為介面上的threshold滑桿
to go ask patches with [ ele <= 1500 ] [ set sumres count neighbors with [ landuse = 1 ] set sumcom count neighbors with [ landuse = 2 ] ] ask patches with [ ele <= 1500 ] [ ifelse sumcom > 4 [vacancy] [ ifelse (landuse = 0 ) and ((sumres >= 2 ) and ( sumres <= 5 )) [resident] [ if ( landuse = 1 ) and ( sumres >= threshold ) [ commercial ] ] ] ] end
四、土地使用變遷模擬成果
(一)情境一
最高海拔高度設為497,低於程式碼中不可開發區定義的1500公尺,所以不會有任何咖啡色區塊。而產生商業的門檻是4,相對低,所以也會產生很多紅色的商業區。
(二)情境二
延續前述例子,但是把產生商業的門檻調高到8,就會發現黃色的住宅區茂密,但是商業區相對少。
(三)情境三
延續情境二,但是把最高海拔高度調高到2962,咖啡色的不可開發區變很多,商業區更少。
更多netlogo教學系列
上一篇:【netlogo教學】第8章:用random產生隨機亂數。
下一篇:【netlogo教學】第10章:if和ifelse條件句語法與範例。
若有教學或其他合作需求,歡迎來信 nbablissfully@hotmail.com 詳談
小額支持鍾肯尼
如果我的文章有幫助到你,歡迎你點這裡開啟只要40元的小額贊助連結,可以贊助我一杯咖啡錢;我會更有動力繼續寫作,幫助大家解決更多問題。