Chuyển tới nội dung chính

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 noRepeat xoay 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

  1. Lập danh sách ứng viên từ các port nhánh đã nối (branch1branchN).
  2. Chọn một bằng Mode đã đặt.
  3. 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ậpKiểuKhoảngGhi chú
Modelựa chọnrandom, noRepeat, weightedBắt buộc
Branch countinteger2–8Bắt buộc. Mỗi đơn vị thêm một port trên canvas
Weightsmap1–100 mỗi nhánhChế độ 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
noRepeatTúi xáo — mọi nhánh dùng hết trước khi lặp lại
weightedTrọ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 khiBắt buộc
branch1…branchNNhánh đó được chọnTất cả bắt buộc
FatalMode hay số nhánh saiKhô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 noRepeat cho đ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ỗiHậu quảCách sửa
Bỏ trống một nhánhLỗi kiểm; sẽ cụt đường lúc chạyNối hết
Kỳ vọng Random luân phiênNgẫu nhiên đều có lặpDùng noRepeat
Dùng Branch cho quyết định dữ liệuHành vi bất địnhDùng If
Trọng số không cộng thành 100Không vấn đề — chúng tương đốiKhông cần sửa
Nhánh khác nhau về kết cụcLần chạy thành/bại ngẫu nhiênLàm các nhánh tương đương

Khắc phục sự cố

Cùng nhánh cứ được chọn mãi. Mode là random. Chuyển noRepeat.

Kiểm tra hỏng trên node. Một hay nhiều port nhánh chưa nối.

Một nhánh như không bao giờ chạy. Chế độ weighted, trọng số của nó có thể quá thấp so với phần còn lại.

Giảm số nhánh làm mất một edge. Đúng dự kiến — port cuối bị gỡ và edge mồ côi bị cắt.

FAQ

Được mấy nhánh? 2 đến 8.

No-repeat có reset giữa các lần chạy? Có. Nó chỉ trải các lượt lặp trong một lần chạy.

Nhánh thiếu trọng số nhận bao nhiêu? 1.

Xem được nhánh nào được chọn không? Được — output ghi selectedBranch, và nó hiện trong log lần chạy.

Node liên quan

  • If — quyết trên dữ liệu thay vì may rủi
  • Variable — ghi lựa chọn
  • Loop — lặp, nơi no-repeat trải các lượt
  • Wait — thời lượng ngẫu nhiên, nguồn đa dạng còn lại

Trang liên quan