5

Tôi đang đọc những điều mâu thuẫn trong tài liệu.OptaPlanner có hỗ trợ tối ưu hóa và hạn chế về các biến liên tục không?

Một mặt, đoạn này dường như chỉ ra rằng các biến kế hoạch liên tục có thể xảy ra:

Một loạt giá trị kế hoạch là tập hợp các giá trị kế hoạch có thể cho một biến quy hoạch. Bộ này có thể là một rời rạc (ví dụ hàng 1, 2, 3 hoặc 4) hoặc liên tục (ví dụ: bất kỳ đôi nào trong khoảng từ 0,0 đến 1,0).

Mặt khác, khi xác định một biến Kế hoạch, bạn phải xác định một chú thích ValueRangeProvider vào một trường để sử dụng cho các thiết lập giá trị:

Việc thực hiện giải pháp có phương pháp mà trả về một bộ sưu tập. Mọi giá trị từ Bộ sưu tập đó là giá trị lập kế hoạch có thể có cho biến số lập kế hoạch này.

Cả hai đoạn đang trong cùng một phần của tài liệu (http://docs.jboss.org/drools/release/latest/optaplanner-docs/html_single/#d0e2518)

Vì vậy, đó là nó? Tôi có thể sử dụng đầy đủ double làm biến số lập kế hoạch của mình hay không hoặc tôi có cần giới hạn phạm vi của nó cho các giá trị trong một Collection cụ thể không?

Nhìn vào các thuật toán thực tế được cung cấp, tôi không thấy bất kỳ thuật toán nào thực sự phù hợp để tối ưu hóa các biến liên tục, vì vậy tôi nghi ngờ điều đó là có thể, nhưng tốt nhất là làm rõ và rõ ràng.

Trả lời

4

Chúng tôi đang làm việc hướng tới các biến liên tục hỗ trợ đầy đủ. Nhưng hiện tại (trong 6.0.0.CR2) chưa được hỗ trợ rõ ràng.

Phạm vi giá trị thực sự có thể là phạm vi liên tục, nhưng hệ thống ống nước để thực sự sử dụng chúng chưa có. Chúng tôi đã đạt được tiến bộ tốt gần đây, xem https://issues.jboss.org/browse/PLANNER-160.

Dưới đây là cách hoạt động: Bạn sẽ có thể sử dụng chú thích @ValueRangeProvider trên phương thức trả về ValueRange (thay vì Collection).

Một ValueRange sẽ là một giao diện hỗ trợ lựa chọn một giá trị ngẫu nhiên, nhận được một kích thước, ... Out-of-the-box chúng tôi sẽ hỗ trợ IntValueRange, DoubleValueRange, BigDecimalValueRange ... (chi tiết thi hành: chúng tôi sẽ kết hợp lại các phương thức thu hồi Bộ sưu tập đó thành một CollectionValueRange.)

Sau đó triển khai ValueSelector sẽ sử dụng trực tiếp.

Đối với sự phù hợp để tối ưu hóa các biến liên tục:

  • JIT lựa chọn ngẫu nhiên sẽ được blazing nhanh và rất nhiều bộ nhớ hiệu quả.
  • Nếu bạn gặp sự cố NP-complete/NP-hard, khi đó OptaPlanner sẽ là kết quả tuyệt vời.Nếu bạn chỉ có các biến liên tục (và không phải là một biến rời rạc) thì không chắc vấn đề của bạn là NP-complete (trừ khi các ràng buộc của bạn ngược lại) và trong trường hợp đó, bạn tốt hơn với thuật toán đa thức, thủ công, tùy chỉnh (bởi vì nó không phải NP-hoàn chỉnh, do đó, có một giải pháp "dễ dàng").
Các vấn đề liên quan