Mô phỏng sự sống hạt
- Một chương trình đơn giản mô phỏng sự sống nhân tạo nguyên thủy bằng cách sử dụng các quy tắc hút và đẩy đơn giản giữa các hạt giống như nguyên tử.
- Không tính các thành phần GUI, phần mã nguồn ngắn hơn một trang.
- Có thể xem video hướng dẫn và chỉ dẫn ở bên dưới.
Tìm hiểu thêm (video hướng dẫn trên YouTube)
- Cung cấp liên kết đến video hướng dẫn trên YouTube.
Bản demo trực tuyến (phiên bản JavaScript)
- Cung cấp liên kết đến bản demo trực tiếp 2D và 3D.
Giao diện (phiên bản C++)
Kết quả ví dụ
Một số mẫu thú vị có thể tái tạo
- Không cần phải khớp chính xác các tham số để tái tạo những mẫu này.
- Cách tốt nhất để có được các mẫu thú vị là trước tiên thử khám phá tham số ngẫu nhiên.
- Khi phát hiện một mẫu thú vị, hãy thử tinh chỉnh dần dần.
- Thỉnh thoảng có thể thực hiện các bước nhảy tham số lớn để tránh mắc kẹt ở cực đại cục bộ.
Cách sử dụng
- Tải kho lưu trữ này về, giải nén, di chuyển tới thư mục /particle_life/bin/, sau đó nhấp vào particle_life.exe.
Mã nguồn
- Mã nguồn được cung cấp bằng C++, JavaScript và Python.
- Cung cấp liên kết đến video hướng dẫn trên YouTube.
- Nếu muốn đóng góp cho chương trình C++, thuật toán cốt lõi nằm trong 100 dòng đầu tiên của "/particle_life/src/ofApp.cpp".
- Phần còn lại là các thành phần GUI và điều khiển kết xuất do thư viện openFrameworks cung cấp.
- Để bắt đầu, hãy tải kho lưu trữ này và thư viện openFrameworks, rồi dùng projectGenerator của openFrameworks để nhập thư mục /particle_life/ vào dự án.
- Hoặc tạo một dự án openFrameworks mới, thêm ofxGui, rồi thay thế các tệp dự án đã tạo bằng thư mục /src/ được cung cấp tại đây.
- Bây giờ bạn có thể biên dịch mã C++.
Các bản port khác
- Cung cấp danh sách các phiên bản đã được port sang nhiều ngôn ngữ khác nhau như Godot, Rust, Go-1, Go-2, Go-3, Python, Lua, QB64-PE, WebGL, Java, C# Winforms, FreeBasic, v.v.
Ví dụ mã JavaScript
- Có thể xem ví dụ mã JavaScript và tệp particle_life.html là phiên bản đã được tối ưu hóa.
Chủ đề liên quan
- Giải thích về mô phỏng sự sống hạt, primordial soup - tiến hóa, Game of Life của Conway, cellular automata, các mẫu tự tổ chức hóa, v.v.
- Dự án này được truyền cảm hứng từ Clusters của Jeffery Ventrella và nhờ không triển khai phát hiện va chạm nên có thể mô phỏng hàng nghìn hạt theo thời gian thực.
- Bằng cách thêm các điều khiển GUI để dễ dàng tinh chỉnh và khám phá tham số theo thời gian thực, những mẫu chưa từng thấy đã xuất hiện từ một mô hình quan hệ cực kỳ đơn giản.
- Mã này bắt đầu như tài liệu giáo dục và hướng tới người không lập trình cùng công chúng nói chung để chứng minh rằng độ phức tạp có thể nảy sinh từ sự đơn giản.
Danh sách việc cần làm
- Thêm chức năng lưu và tải tham số (để mọi người có thể dễ dàng chia sẻ các mô hình thú vị)
- Khả năng thêm nhiều loại hạt hơn (hiện đang cố định ở bốn loại hạt)
- Nút thắt cổ chai lớn nhất hiện nay là vòng lặp
for lồng nhau tính khoảng cách theo từng cặp giữa mọi hạt, với độ phức tạp tính toán bậc hai.
- Như một phương án thay thế cho mục 3, việc tính khoảng cách theo từng cặp có thể được song song hóa đủ để tính trên GPU.
- Thêm chức năng điều chỉnh kích thước màn hình và cải thiện kiểm tra biên (nhiều hạt chuyển động nhanh có thể vượt ra ngoài ranh giới màn hình).
- Thêm UI trực quan hơn để cho phép kiểm soát tham số chi tiết hơn.
- Thêm nút ngẫu nhiên, hoặc tốt hơn là có một meta-rule đơn giản liên tục thay đổi các quy tắc ban đầu để các mẫu không bị kẹt ở cực đại cục bộ mà tiếp tục biến đổi.
- Một cách tốt hơn có thể là dùng thuật toán tiến hóa để chọn và tối ưu tham số, nhưng để làm vậy cần viết một hàm thích nghi. Hiện chưa rõ hàm thích nghi trong miền của chương trình này nên là gì.
Ý kiến của GN⁺
- Dự án này có giá trị lớn trong việc trực quan hóa cách các hiện tượng sống phức tạp có thể xuất hiện từ những quy tắc đơn giản.
- Đây có thể là tài liệu nhập môn thú vị cho các kỹ sư phần mềm mới bắt đầu quan tâm đến lập trình và nghiên cứu sự sống nhân tạo.
- Vì có các phiên bản được port sang nhiều ngôn ngữ khác nhau, dự án cũng có thể giúp mở rộng hiểu biết về nhiều ngôn ngữ lập trình.
1 bình luận
Ý kiến trên Hacker News