Các công cụ GAMA hỗ trợ

Một phần của tài liệu Mô phỏng và đánh giá mạng xe buýt sử dụng cách tiếp cận đa tác tử (Trang 28)

Phần này trình bày hai công cụ cơ bản nhất mà GAMA hỗ trợ là: công cụ soạn thảo GAML và công cụ mô phỏng inspector.

2.3.3.1.Công cụ soạn thảo GAML

GAML (viết tắt của cụm từ: Gis & Agent based Modelling Language) là một ngôn ngữ lập trình trong GAMA. Trong phiên bản 1.1, 1.2, 1.3 của Gama, GAML sử dụng cú pháp XML. Đếnphiên bản 1.4 và 1.5, GAML đã sử dụng cú pháp của ngôn ngữ đặc tả. Cấu trúc một file GAML gồm 5 phần chính: Include, global, environment, entities, environment, experiment.

+ Phầninclude

Phần này cho phép tải một file mô hình khác trƣớc khi tải file hiện hành. File này có thể chứa bất cứ điều gì (định nghĩa toàn bộ một mô hình, định nghĩa của một loài, môi trƣờng, biến toàn cục…) miễn là nó đúng cấu trúc của mô hình GAML. Lƣu ý rằng có thể có nhiều file cần thiết đƣợc include. Ví dụ:

import"../include/schelling_common.gaml"

import"../include/data_global.gaml"

+ Phầnglobal

Phần này khai báocác biến toàn cục, là các biến đƣợc khai báo ở ngoài các hàm và các hàm đều sử dụng đƣợc. Mặt khác, phần này cũng cho phép ta khởi tạo các agent, bao gồm thuộc tính và hành vi của chúng thông qua các biến, các hàm khởi tạo. Ví dụ: global{ int numberBugs <-100; float globalMaxConsumption <-1; float globalMaxFoodProdRate <-0.01; init {

create bug number: numberBugs; }

}

+ Phầnentities

Phần này định nghĩa cụ thể các agent: các thuộc tính của nó nhƣ màu sắc, kích thƣớc.., các hành vi cũng nhƣ các phản ứng, phản xạ của tác tử.

Một phản xạ là một chuỗi các câu lệnh có thể đƣợc thực thi tại mỗi bƣớc bởi tác tử. Các phản xạ của một tác tử trong Gama cũng đƣợc chia thành hai loại giống nhƣ phần lớn các sinh vật trong tự nhiên. Nghĩa là mỗi tác tử sẽ có thể có phản xạ có điều kiện và phản xạ không điều kiện, trong đó điều kiện của phản xạ là một biểu thức logic đƣợc mô tả sau từ khóa “when”. Đây là cách thuận tiện để xác định hành vi của các tác tử. Ví dụ:

entities {

species bug { float evol <-1;

rgb color <- rgb ([255,255/evol,255/evol]);

float maxConsumption <- globalMaxConsumption; stupid_cell myPlace update: location as stupid_grid; reflex basic_move {

let destination <- one_of ((myPlace neighbours_at 4)where empty(each.agents));

if destination !=nil{

set location <- destination; }

}

reflex grow {

let transfer <- min ([maxConsumption, myPlace.food]); set evol <- evol + transfer;

set myPlace.food <- myPlace.food - transfer; }

aspect basic {

draw shape: circle color: color size:1; }

} }

+Phầnenvironment

Phần này bao gồm các định nghĩa về môi trƣờng. GAMA hỗ trợ 3 loại cấu trúc liên kết cho các môi trƣờng: liên tục, lƣới và đồ thị. Dạng mặc định, các tác tử toàn cầu (tác tử có chứa tất cả các tác tử khác) có một cấu trúc liên tục. Phần này có thể định nghĩa một hoặc một vài môi trƣờng có cấu trúc lƣới. Ví dụ:

environment width:100 height:100{

grid stupid_cell width:100 height:100 torus:false{ rgb color <- rgb('black');

float maxFoodProdRate <- globalMaxFoodProdRate; float maxConsumption <- globalMaxConsumption; float foodProd <-(rnd(1000)/1000)* maxFoodProdRate; float food <-0.0 update: food + foodProd;

} }

Trong GAMA lƣới là một loại tác tử cụ thể với một cấu trúc liên kết cụ thể. Chúng có thể có các biến và các hành vi. Lƣới có thể định nghĩa trong phần environment nhƣ sau:

environment {

grid grid_name width: nb_cols height: nb_lines neighbors:4/8{ ...

} }

Trong đó:

Width: là số các ô dọc theo trục hoành x Height: là số các ô dọc theo trục tung y

+ Phầnexperiment

Phần này dùngđể theo dõi, thống kê các kết quả trong quá trình chạy. Có 2 loại thử nghiệm:1. GUI: thử nghiệm với một giao diện đồ họa, hiển thị các thông số đầu vào và đầu ra của nó. 2. Batch: cho phép thiết lập một loạt các mô phỏng. Ví dụ:

experiment my_experimentation type: gui { output {

display stupid_display { grid stupid_cell;

species bug aspect: basic; }

} }

Ngoài ra, ngôn ngữ GAML còn hỗ trợ các kiểu dữ liệu int, float.., các câu lệnh lặp, các kiểu dữ liệu, các hàm đồ họa…

2.3.3.2. Công cụ mô phỏng inspector

Các inspector cho phép chúng ta quan sát chi tiết bên trong các thông tin về một loài hoặc một tác tử. Có 2 loại inspector: là species inspector và agent inspector.

Species inspector: cung cấp thông tin về tất cả các loài có trong mô hình theo cấu trúc dạng cây.

Agent inspector: cung cấp các thông tin về một tác tử cụ thể. Ngoài ra nó còn cho phép thay đổi giá trị các biến của nó trong quá trình mô phỏng. Nó cũng có sẵn trong menu agent bằng cách kích chuột phải trên màn hình lƣới hoặc GIS để chọn một tác tử. Một bảng sẽ hiện ra, hiển thị tất cả các thuộc tính của các tác tử lựa chọn cũng nhƣ cho phép ta thay đổi các thuộc tính trong mô phỏng. Nó cung cấp các khả năng đặc trƣng của tác tử cần xem.

Ví dụ:

Hình 2.3. Cách xem thông tin agent

Tóm lại, trong chƣơng này, luận văn đã trình bày một cách tổng quát về mô phỏng giao thông cũng nhƣ nền tảng mô phỏng GAMA. Đây là nền tảng mô phỏng đƣợc sử dụng trong việc cài đặt chƣơng trình ứng dụng của luận văn. Ở chƣơng tiếp theo tôi sẽ trình bày cách mô phỏng ứng dụng của mình và các kết quả đạt đƣợc.

CHƢƠNG 3: XÂY DỰNG MÔ HÌNH MÔ PHỎNG MẠNG XE BUÝT VÀ PHÂN TÍCH KẾT QUẢ

Một phần của tài liệu Mô phỏng và đánh giá mạng xe buýt sử dụng cách tiếp cận đa tác tử (Trang 28)

Tải bản đầy đủ (PDF)

(50 trang)