Tạo sự lan tỏa đầu tiên của mô hình dựa trên tác nhân thông tin với NetLogo

Apr 10 2022
Mô hình dựa trên tác nhân là một công cụ tuyệt vời để nghiên cứu động lực của các hệ thống thích ứng phức tạp. Tóm lại, các hệ thống thích ứng phức tạp là những hệ thống mà tập hợp các cá nhân tự chủ tương tác với nhau để tạo ra các kết quả ở quy mô vĩ mô mà khó có thể dự đoán được thông qua phân tích các cá thể một cách riêng biệt.

Mô hình dựa trên tác nhân là một công cụ tuyệt vời để nghiên cứu động lực của các hệ thống thích ứng phức tạp. Tóm lại, các hệ thống thích ứng phức tạp là những hệ thống mà tập hợp các cá nhân tự chủ tương tác với nhau để tạo ra các kết quả ở quy mô vĩ mô mà khó có thể dự đoán được thông qua phân tích các cá thể một cách riêng biệt. Do đó, khái niệm, tổng thể nhiều hơn tổng các bộ phận . Tương tự, các mô hình dựa trên tác nhân hoạt động bằng cách cho phép bạn lập trình các quy tắc tác nhân quy định các hành động và phản ứng mà một tác nhân có thể thực hiện trong khi chạm trán với các tác nhân khác. Những tương tác này đến lượt nó lại tạo ra những mẫu hành vi tập thể được mô phỏng thú vị có thể cung cấp những hiểu biết sâu sắc về các hiện tượng xã hội, kinh tế hoặc sinh thái được quan sát trong thế giới thực.

NetLogo [1] có lẽ là bộ công cụ tạo mô hình dựa trên tác nhân dễ dàng nhất để bắt đầu. Nó có giao diện đồ họa trực quan với các nút kéo và thả, biểu đồ, màn hình đầu ra và cửa sổ môi trường dễ sử dụng. Bạn cần thực hiện một số mã hóa cơ bản để tạo và thao tác các tác nhân của mình, nhưng chúng ta sẽ thảo luận về cách thực hiện trong bài đăng trên blog này. Bạn sẽ phải tải xuống và cài đặt NetLogo từhttps://ccl.northwestern.edu/netlogo/cùng theo dõi.

Chúng tôi sẽ tạo ra một mô hình truyền bá thông tin, trong đó mục tiêu là mô phỏng sự lan tỏa nhận thức trong toàn bộ quần thể tác nhân. Nếu bất kỳ đại lý không được thông báo nào đến gần một đại lý được thông báo thì đại lý đầu tiên cũng sẽ được thông báo. Trong ví dụ này, hãy giả sử một trạng thái ban đầu chỉ có một tác nhân được thông báo ngay từ đầu.

Khởi tạo

Để bắt đầu và chạy mô hình dựa trên tác nhân đầu tiên của bạn, hãy tạo một số tác nhân. Chuyển sang codetab. NetLogo gọi các agent là “rùa” và ở đây chúng ta cần sử dụng turtles-owncấu trúc để khai báo bất kỳ biến nào là cục bộ cho các agent.

Tiếp theo, hãy tạo một thủ tục NetLogo để khởi tạo mô phỏng của chúng ta, mà chúng ta sẽ gọi setup. Các hàm NetLogo có thể là các thủ tục không trả về bất kỳ giá trị nào, được chỉ định bởi tohoặc các trình báo cáo trả về một giá trị, được chỉ ra bởi to-report, cả hai đều kết thúc bằng endlệnh. setupkhông cần trả về giá trị để chúng ta có thể sử dụng toend. Điều đầu tiên cần làm setuplà xóa môi trường khỏi bất kỳ lần chạy mô phỏng nào trước đó bằng clear-alllệnh. Tiếp theo, chúng tôi sẽ tạo 100 tác nhân bằng cách sử dụng create-turtulesbiến boolean informedđược đặt thành false bằng quy trình tùy chỉnhupdate-state(mà chúng ta sẽ đi đến trong một chút). Chúng tôi cũng sẽ định vị các tác nhân này ở các tọa độ ngẫu nhiên trong môi trường. Để đảm bảo ít nhất một trong số các đại lý của chúng tôi bắt đầu được thông báo, chúng tôi sẽ hướng dẫn ngẫu nhiên một trong các đại lý của chúng tôi update-statethành true bằng cách sử dụng lệnh askone-of. Cuối cùng, chúng ta sẽ chuẩn bị cho mô phỏng của mình bằng cách đặt bộ đếm đánh dấu mô phỏng thành 0 bằng cách sử dụng reset-ticks.

Lưu ý cách cả vị trí ngẫu nhiên của các tác nhân và update-statelệnh gọi đã được thực hiện trong create-turtlesbối cảnh thủ tục. Bạn có thể sử dụng điều này để đặt bất kỳ trạng thái ban đầu nào mà các tác nhân phải có khi tạo.

Thủ update-statetục này là "cấp rùa", và sẽ lấy đối số boolean statevà đặt informedbiến và màu của tác nhân tương ứng.

Quy trình cờ vây

Tiếp theo, chúng ta phải cho các đặc vụ biết phải làm gì khi quá trình mô phỏng diễn ra. Chúng tôi thường làm điều này trong một thủ tục có nhãn go(tên chỉ là quy ước). Hãy thực hiện goquy trình của chúng tôi để yêu cầu các đại lý gọi một movethủ tục, sau đó là một cuộc gọi cho một determine-new-statephóng viên, sẽ xác định và trả lại trạng thái được thông báo mới dựa trên những người hàng xóm của đại lý. Cuối cùng, gophải tăng bộ đếm bước mô phỏng bằng cách gọi ticklệnh.

Cho phép các nhân viên lập trình để thực hiện các bước đi ngẫu nhiên, trong đó họ di chuyển về phía trước một bản vá forwardvà sau đó di chuyển ngẫu nhiên sau heading mỗi 10 tích tắc của họ. Số lượng tích tắc mô phỏng được chuyển qua có thể được truy vấn bằng cách sử dụng ticks.

Cuối cùng, hãy tạo trình determine-new-statebáo cáo sao cho nó trả về true nếu bất kỳ tác nhân được thông báo nào xuất hiện trong bán kính bản vá thay đổi của chính nó, nếu không nó trả về false. Hãy gọi bán kính này vision-radius.

Các thành phần GUI…

Được! Bây giờ các đại lý của bạn biết những gì họ phải làm. Hãy chuyển sang tab giao diện, nơi chúng ta sẽ thiết lập các thành phần GUI cần thiết để chạy và giám sát mô phỏng. Để thêm các thành phần GUI, hãy nhấn vào nút 'thêm' trên thanh công cụ hoặc nhấp chuột phải vào giao diện và chọn thành phần thích hợp. Tạo hai nút. Bạn sẽ được nhắc với một menu nơi bạn có thể chỉ định các lệnh được thực thi bởi các nút. Nhập setupcho một nút và gocho nút kia. Đối với gonút, cũng đánh dấu vào hộp kiểm “Mãi mãi”, điều này sẽ làm cho mô phỏng chạy vô thời hạn.

Ngoài ra, hãy thêm một 'thanh trượt' và đặt tên cho nó vision-radius. NetLogo sẽ ánh xạ tên của thanh trượt này với biến tổng thể vision-radiusmà bạn đã sử dụng trong determine-new-statebáo cáo, cung cấp cho các tác nhân một bán kính nhận thức có thể điều chỉnh được. Ở đây chúng tôi đặt mặc định vision-raduisthành 1.

Cuối cùng, thêm một thành phần 'cốt truyện'. Bạn sẽ được nhắc về tên lô, nhãn trục, lệnh thiết lập tùy chọn và thông tin bút vẽ. Đặt tên cho cốt truyện Fraction Informed Over Time. Gắn nhãn trục x Timevà trục y Fraction Informed. Giới hạn trục X sẽ được tự động quản lý, vì vậy bạn có thể để mặc định cho việc này. Nhưng hãy đặt giới hạn trục y thành 0 và 1. Cuối cùng, đổi tên bút mặc định thành Fraction Informed, và trong 'lệnh cập nhật bút', hãy nhập lệnh để đo tỷ lệ cá nhân được thông báo. Chúng tôi sẽ sử dụng plotlệnh lấy một phóng viên làm đối số và vẽ biểu đồ giá trị theo thời gian. Nhập plot (count turtles with [informed = true]) / (count turtles)để vẽ biểu đồ phần rùa được thông báo theo thời gian.

Bạn có thể chọn và thay đổi kích thước các thành phần GUI để có một bố cục đẹp mắt. Giao diện cuối cùng sẽ trông giống như thế này.

Mô phỏng!

Xin chúc mừng! Bạn đã xây dựng mô hình truyền bá thông tin dựa trên tác nhân đầu tiên của mình! Để khởi tạo, chỉ cần nhấn setupvà nhấn gođể chạy. (Gợi ý: sử dụng thanh trượt ở giữa thanh công cụ để làm chậm mô phỏng của bạn để bạn có thể quan sát tốt hơn động thái)

Bước tiếp theo…

Có vô số khả năng với NetLogo và bước tiếp theo tốt là khám phá các lệnh và chức năng trợ giúp khác nhau được cung cấp trong từ điển NetLogohttps://ccl.northwestern.edu/netlogo/docs/dictionary.html. Thư viện mô hình NetLogo (File -> Models Library) cũng có một bộ sưu tập tuyệt vời các mô hình để thử nghiệm, nhiều mô hình có các tài liệu nghiên cứu được liên kết với chúng dưới Infotab. Cuối cùng, [2] là một tài liệu tham khảo tuyệt vời, hãy tìm hiểu thêm về cách làm việc với NetLogo

Người giới thiệu

[1] Wilensky, U. 1999. NetLogo.http://ccl.northwestern.edu/netlogo/. Trung tâm Học tập Kết nối và Mô hình Dựa trên Máy tính, Đại học Northwestern. Evanston, IL.

[2] Wilensky, U., & Rand, W. (2015). Giới thiệu về mô hình hóa dựa trên tác nhân: mô hình hóa các hệ thống phức tạp tự nhiên, xã hội và thiết kế với NetLogo . Báo chí Mit.

© Copyright 2021 - 2023 | vngogo.com | All Rights Reserved