Branch (Nhánh)
Chọn ngẫu nhiên một nhánh đầu ra mỗi lần chạy.
Mục đích
Đa dạng hành vi để automation bớt đồng đều — luân phiên lộ trình, ngẫu nhiên chiến lược chạy, hay chia việc giữa hai đường.
Các nhánh bạn nối trên canvas chính là danh sách ứng viên. Không có cấu hình riêng nào về thứ chọn được.
Khi nào dùng
- Luân phiên giữa nhiều routine tương đương để các lần chạy không giống hệt.
- Chia lưu lượng giữa hai chiến lược để so sánh.
- Chọn hướng, mục tiêu, hay thứ tự khởi đầu ngẫu nhiên.
Khi nào không dùng
- Quyết theo dữ liệu — dùng If.
- Khi một đường phải luôn chạy trước — Branch không bảo đảm thứ tự (trừ việc
noRepeatxoay vòng). - Retry — dùng Loop hay retry policy.
Điều kiện
Mọi port nhánh phải được nối. Kiểm tra bắt buộc, vì nhánh không nối sẽ ngẫu nhiên làm cụt đường lần chạy.
Cách nó chạy
- Lập danh sách ứng viên từ các port nhánh đã nối (
branch1…branchN). - Chọn một bằng Mode đã đặt.
- Rẽ xuống nhánh được chọn và ghi lại lựa chọn (output:
selectedBranch,mode,branchCount).
Thiết lập
| Thiết lập | Kiểu | Khoảng | Ghi chú |
|---|---|---|---|
| Mode | lựa chọn | random, noRepeat, weighted | Bắt buộc |
| Branch count | integer | 2–8 | Bắt buộc. Mỗi đơn vị thêm một port trên canvas |
| Weights | map | 1–100 mỗi nhánh | Chế độ weighted; thiếu mặc định 1 |
Ba chế độ
| Chế độ | Hành vi |
|---|---|
random | Đều. Có thể lặp cùng nhánh liên tiếp |
noRepeat | Túi xáo — mọi nhánh dùng hết trước khi lặp lại |
weighted | Trọng số cao được chọn thường hơn |
noRepeat thường là thứ người ta nghĩ khi nói "ngẫu nhiên". Ngẫu nhiên đều sẵn sàng bốc cùng nhánh ba lần liền; túi không-lặp thì không.
Túi không-lặp tr ải qua các lượt lặp trong một lần chạy và reset giữa các lần chạy.
Port
| Port | Đi vào khi | Bắt buộc |
|---|---|---|
| branch1…branchN | Nhánh đó được chọn | Tất cả bắt buộc |
| Fatal | Mode hay số nhánh sai | Không bao giờ được đi |
Branch là node ngặt nhất sản phẩm về nối dây: từng port nhánh một đều phải nối.
Ví dụ cơ bản
Chia 50/50 giữa hai lộ trình:
- Mode: Random
- Branch count:
2
Ví dụ thực tế — đảo thứ tự quét
Quét cùng hướng đầu tiên mỗi lần chạy là khuôn nhận ra được. Xoay nó là một node:
Branch chọn; biến ghi lựa chọn; switch hành động theo. Tách "chọn" khỏi "làm" giữ đồ thị dễ đọc và cho node sau biết lộ trình nào đã đi.
Ví dụ nâng cao — chiến lược theo trọng số
Chạy routine kỹ càng tốn kém một phần năm số lần, còn lại chạy bản nhanh:
- Mode: Weighted
- Branch count:
2 - Weights:
branch1 = 4(nhanh),branch2 = 1(kỹ)
Best practices
- Nối mọi nhánh. Bắt buộc, và nhánh trống sẽ làm cụt đường lần chạy.
- Ưu tiên
noRepeatcho đa dạng. Ngẫu nhiên đều hay dồn cục. - Ghi lựa chọn vào biến để node sau và log biết chuyện gì xảy ra.
- Giữ các nhánh tương đương về kết cục. Chọn ngẫu nhiên nên đổi cách, không đổi việc.
- Dùng trọng số thay vì lồng Branch để diễn tả tỉ lệ lệch.
Ghi chú hiệu năng
- Vi ệc chọn là tính toán thuần — gần miễn phí.
- Chi phí nằm trọn ở việc các nhánh làm. Một nhánh chậm hơn nhiều thì thời gian trung bình là trung bình có trọng số, không phải đường nhanh.
Ghi chú bộ nhớ
- Túi không-lặp là cấu trúc nhỏ theo lần chạy; không đáng kể.
- Không gì bền giữa các lần chạy — túi reset mỗi lần.
Lỗi thường gặp
| Lỗi | Hậu quả | Cách sửa |
|---|---|---|
| Bỏ trống một nhánh | Lỗi kiểm; sẽ cụt đường lúc chạy | Nối hết |
| Kỳ vọng Random luân phiên | Ngẫu nhiên đều có lặp | Dùng noRepeat |
| Dùng Branch cho quyết định dữ liệu | Hành vi bất định | Dùng If |
| Trọng số không cộng thành 100 | Không vấn đề — chúng tương đối | Không cần sửa |
| Nhánh khác nhau về kết cục | Lần chạy thành/bại ngẫu nhiên | Làm các nhánh tương đương |