Chúng ta đã biết một chút về cách thức hoạt động của NetLogo, hãy xây dựng một mô hình đơn giản của chúng ta. Mô hình này sẽ bao gồm một chú kiến di chuyển ngẫu nhiên và ... chỉ thế thôi. Vậy, hãy khởi động chương trình NetLogo. Tôi sẽ sử dụng NetLogo 5.3.1, bạn có thể dùng bất cứ phiên bản nào bạn có. Việc đầu tiên tôi sẽ làm là tạo ra các nút bấm "Setup" và "Go". Tôi vào "Interface Builder Menu", Khi tôi click vào đó, bạn sẽ thấy tất cả các đối tượng khác nhau mà tôi có thể đưa vào giao diện. Bây giờ chúng ta sẽ thêm vào một nút bấm. Tôi click vào giao diện, tôi có thể điền tên của nút bấm này là "Setup", và tôi có thể tạo một nút bấm khác, Tôi tạo nút bấm khác có tên là "Go" Tôi có thể chọn nó bằng cách nhấn chuột phải, chọn "Select", và tôi có thể di chuyển nó, có thể thay đổi kích thước của nó. Nếu tôi thả nó ở đây, tôi có thể điều chỉnh những nút bấm này tùy ý. Vậy là, bây giờ chúng ta đã có hai nút bấm "Setup" và "Go". Chúng màu đỏ vì không có đoạn code nào gắn với chúng. Hiện giờ, sẽ không có gì xảy ra khi ta click vào chúng, nên tôi sẽ phải viết code. Bây giờ, hãy viết code cho các nút bấm "Setup" và "Go". Để làm việc đó, chúng ta sẽ chuyển qua tab "Code" và bắt đầu lập trình. Việc đầu tiên chúng ta cần làm là viết code cho "Setup". Mục tiêu của chúng ta khi viết code cho nút "Setup" là khi nút này được click, ta sẽ xóa tất cả (clear all), ở đây "clear all" được hiểu là một câu lệnh sẽ xóa sạch toàn bộ thế giới hoạt động của loài kiến mà chúng ta đang quan sát, nó sẽ xóa toàn bộ những gì còn sót lại từ lần chạy trước. Chúng ta sẽ khởi động lại bộ đếm thời gian, tức là ta sẽ đặt đồng hồ (tick) hay nói cách khác là đặt mốc thời gian về 0. Bây giờ chúng ta sẽ tạo ra một chú kiến. Tất cả các tác nhân trong NetLogo đều được gọi là turtle (rùa). Nó bắt nguồn từ một nguyên do lịch sử, trong ngôn ngữ đầu tiên - Logo - là nền tảng để phát triển NetLogo sau này, tất cả tác nhân đều là rùa. Trong Logo bạn chỉ có một con rùa. Bây giờ thì bạn có thể có rất nhiều rùa. Bây giờ ta sẽ gọi lệnh "tạo rùa"(create turtle). Ta sẽ chỉ ra ta cần bao nhiêu rùa. Cho bài thực hành, ta chỉ cần một chú rùa là đủ. Vậy là, ta đã tạo ra một chú rùa và sau đó ta sẽ yêu cầu chú làm vài việc. Gõ "ask turtle" và đưa danh sách công việc. Chúng ta sẽ đặt hình dáng của chú rùa thành "bug"; đó là hình dạng của kiến trong NetLogo. Ta sẽ đặt kích thước là 3. Kích cỡ đó là đủ trong NetLogo để ta có thể nhìn được. Chúng ta cũng quy định màu của chú rùa là màu đỏ. Ok, tôi nghĩ thế là đủ do đó tôi gõ "End" để kết thúc đoạn code. Nút "check" (kiểm tra) ở đây sẽ kiểm tra đoạn code để tìm lỗi. Click vào đó, và nó cho ta biết là có một lỗi, và nó cũng cho ta biết lỗi nằm ở đâu, và tôi nhận ra rằng tôi nên gõ "ask turtles". Tôi đã gõ thiếu ký tự "s". Lý do là vì NetLogo giả định rằng có một quần thể rùa hay tác nhân và bất cứ khi nào bạn yêu cầu việc gì đó, yêu cầu đó dành cho toàn bộ quần thể. Chúng ta chỉ có một chú rùa, nhưng sau này chúng ta sẽ yêu cầu toàn bộ rùa ta có. Kiểm tra đoạn code lần nữa. Chương trình đưa ta quay về giao diện thông báo tất cả đều ổn, và bây giờ hãy click vào "Setup", và chúng ta sẽ thấy chú kiến, ngay chính giữa màn hình. Nút "Go" vẫn màu đỏ bởi vì ta chưa viết code. Giờ hãy viết code cho nút Go. Quay trở lại code "Tab". Chúng ta gõ "to go" và "ask turtles" để làm một số việc. Đầu tiên, chúng ta yêu cầu chúng xoay thân thể sang phải 30 độ, sau đó chúng ta yêu cầu chúng tiến về phía trước 4 bước bằng dòng lệnh "forward 4", sau đó chúng ta tăng bộ đếm thời gian thêm 1, đó là tác dụng của câu lệnh "tick", vậy là chúng ta đã reset thời gian về 0, và rồi dùng "tick" để tăng thời gian lên 1 mỗi lần chúng ta thực hiện đoạn code và cuối cùng chúng ta kết thúc bằng câu lệnh "end". Hãy quay trở lại giao diện, và click "Go". Chúng ta có thể thấy chú rùa quay phải 30 độ và sau đó đi về phía trước 4 bước. Ta tiếp tục nhấn nút "Go" thêm nhiều lần nữa, và chú rùa sẽ đi thành vòng tròn. Tôi muốn chú rùa di chuyển mãi mãi mà không cần phải nhấn "Go" liên tục và tôi có thể làm việc đó bằng cách click chuột phải lên "Go", chọn "Edit", và chúng ta sẽ thấy lựa chọn "forever" (vĩnh viễn), mà tôi có thể chọn, có nghĩa là nút "Go" sẽ được nhấn tự động mãi mãi, vậy làm thôi. Nếu tôi làm chương trình chậm lại một chút, bạn có thể thấy chú kiến tự động đi thành vòng tròn, và tôi click "Go" để dừng lại. Tôi có thể click "Go" để chạy lại. Nếu tôi muốn chạy từ đầu, tôi click "Setup". Chú kiến sẽ bắt đầu ở vị trí cũ, ở giữa cửa sổ, nhưng định hướng khác nhau ở các lần chạy khác nhau. Lý do là vì chú kiến được đặt ở chính giữa, nhưng chú hướng ngẫu nhiên mỗi lần chạy chương trình Chúng ta có thể lưu chương trình lại, bằng cách chọn File -> Save As. Tôi sẽ lưu với tên Ant1. Bạn có thể thấy nó ở trên desktop, Ant1.logo. Bây giờ chúng ta có thể vào menu của Netlogo và chọn thoát chương trình. Nếu tôi muốn khởi động lại, tôi chỉ cần click đúp vào nó. NetLogo sẽ được bật lên và load mô hình của chúng ta. Chỉ có một điều không ổn: chương trình của ta thật chán. Chú kiến chỉ làm một việc là đi vòng tròn, nên hãy làm gì đó thú vị hơn. Tôi có thể vào phần code, và bổ sung một câu lệnh đơn giản, Thay vì xoay phải 30 độ, ta sẽ thêm vào từ khóa "random", và bây giờ chú kiến sẽ chọn một số ngẫu nhiên giữa 0 và 30 - 1, và xoay phải theo góc ngẫu nhiên đó. Chúng ta có thể làm tương tự ở đây, ta có thể làm chú kiến di chuyển về phía trước một số bước ngẫu nhiên. Hãy quay lại giao diện, ta click vào "Setup" và "Go", và bây giờ ta có thể thấy hoạt động của chú kiến thú vị hơn một chút. Bạn có thể nhận ra rằng chú kiến có thể đi xuyên tường ở đây và xuất hiện trở lại ở phía đối diện. Trong khi bức tường thì vây bọc. Trông có vẻ hơi lạ nhỉ. Tôi có thể click chuột phải vào vùng màu đen, chọn "Edit". Có rất nhiều thông tin ở đây về kiến tạo thế giới của chú kiến. Số lượng "patch" (miếng vá), là hệ thống lưới để chia thế giới. Bỏ chọn chúng, click "Apply", "OK" Hãy xem điều gì sẽ xảy ra. Bây giờ, khi chú kiến húc vào tường, chú sẽ tắc ở đó, cho tới khi chú quay sang hướng khác Chú kiến của chúng ta vẫn chỉ biết quay sang phải. Hãy viết code để cho chú kiến chọn một hướng bất kỳ quay phải hoặc quay trái. Bản chất là tung đồng xu để quyết định xem chú kiến sẽ quay phải hay trái. Tôi sẽ lập trình đoạn code "tung đồng xu" bây giờ. Tôi gõ "to-report" "coin-flip", "to-report" không giống với chỉ thị (procedure) "to", "to-report" trả về 1 giá trị, ở đây nó sẽ trả về true (đúng) hay false (sai). Ta viết "report random 2 = 0" "end" Câu lệnh "random 2" có nghĩa gì? "random" trả về 1 số ngẫu nhiên nằm giữa 0 và ( 2 - 1), nên một nửa số lần nó sẽ trả về 0 và nửa còn lại sẽ trả về 1, ngẫu nhiên. Nếu nó ngẫu nhiên trả về 0, câu lệnh sẽ trả về giá trị true ngược lại thì sẽ trả về giá trị false. Chúng ta có thể dùng giá trị này, bằng câu lệnh "if else" coin-flip, có nghĩa là nếu "coin-flip" trả về true thực hiện điều đầu tiên tôi đặt trong dấu ngoặc, ngược lại nếu là false, thực hiện điều thứ hai trong dấu ngoặc, "left random 30". (quay trái ngẫu nhiên từ 0 tới 29 độ). Mỗi lần chúng ta chạy chỉ thị Go, nó sẽ ngẫu nhiên chọn quay phải hay trái. Bây giờ hãy xem nó hoạt động. Click "Setup" rồi "Go". Bạn có thể thấy chú kiến quay các hướng khác nhau, Vấn đề duy nhất là nó thường xuyên đụng tường. Ta có thể cải tiến bằng cách đổi giá trị 30 thành 60 Ta sẽ có một góc quay lớn hơn, có nghĩa mỗi lần quay chú kiến có thể quay rộng hơn Trông có vẻ tốt hơn. Bất cứ khi nào bạn viết một chương trình, luôn là việc tốt khi viết comment (chú thích). Comments bị máy tính bỏ qua, nhưng chúng rất tốt để giúp người khác đọc hiểu code. Trong NetLogo, comment là đoạn ký tự phía sau dấu chấm phẩy(;). Tôi có thể viết bất cứ thứ gì tôi muốn và máy tính sẽ bỏ qua. Giờ hãy viết "trả về ngẫu nhiên giá trị true hoặc false", chính là nhiệm vụ của đoạn code, Ở đây chúng ta có thể viết "nếu coin-flip trả về true, quay phải, nếu không quay trái" Thế là bạn đã có một ghi chú, có thể cho chính bạn, hoặc cho những người khác đọc code của bạn. Cực kỳ hữu ích nếu bạn có một chương trình phức tạp. Đặc biệt, nếu bạn trở lại với đoạn code sau vài ngày. Comments là một điều hết sức cốt lõi, cho dù không ai đọc code của bạn. Bây giờ chúng ta sẽ lưu mô hình. Đầu tiên, tôi gán nhãn cho nó. Nó chỉ mang tính thẩm mỹ, tôi vào menu Interface và chọn Node, tôi sẽ viết ở đây một đoạn ký tự ngắn nói rằng tên của mô hình là Ant1. Hãy làm cho các ký tự to hơn, 18, và sau đó tôi có thể chọn và di chuyển chúng xuống một chút, căn giữa, làm mọi điều tôi thích để khiến chúng đẹp hơn, click "Save", và mô hình đã được lưu. Tôi chỉ muốn nhắc lại là mục đích của việc dạy NetLogo là cho bạn một khái niệm mọi thứ hoạt động thế nào. Chúng ta sẽ dùng nhiều mô hình NetLogo trong khóa học. Ta sẽ không phải lập trình quá nhiều. Tôi chỉ muốn cho các bạn hình dung cách thức hoạt động. Bạn có thể chỉnh sửa một chút chương trình chúng ta đã viết. Nếu bạn có khả năng, bạn có thể thử viết một chương trình của bạn. Như là một bài tập, tôi mong bạn hãy lập trình lại mô hình Ant1 chính xác như tôi đã làm, sử dụng cùng tập lệnh, và làm nó chạy. Sẽ không chấm điểm đâu, nhưng nó sẽ giúp ích cho bạn. Đừng ngại đặt câu hỏi trên diễn đàn của sinh viên khi bạn có thắc mắc. Đó là mục tiêu của diễn đàn mà.