Có bao nhiêu tham số - ví dụ: có bao nhiêu thứ nguyên trong không gian tìm kiếm? Chúng liên tục hay rời rạc - ví dụ, số thực, hoặc số nguyên, hay chỉ là một vài giá trị có thể?
Phương pháp tiếp cận mà tôi đã thấy được sử dụng cho các loại vấn đề này có cấu trúc tổng thể tương tự - lấy một số lượng lớn các điểm mẫu và điều chỉnh tất cả các vùng có câu trả lời "tốt". Vì bạn có rất nhiều điểm, sự khác biệt tương đối của chúng phục vụ như là một gradient tạm thời.
- Simulated Annealing: Cách tiếp cận cổ điển. Mất một loạt các điểm, probabalistically di chuyển một số đến một điểm lân cận được chọn tại một cách ngẫu nhiên tùy thuộc vào nó tốt hơn nhiều.
- Particle Swarm Optimization: Lấy một "bầy" các hạt có vận tốc trong không gian tìm kiếm, ngẫu nhiên ngẫu nhiên di chuyển một hạt; nếu đó là một sự cải tiến, hãy để toàn bộ đàn biết.
- Genetic Algorithms: Điều này hơi khác một chút. Thay vì sử dụng các thông tin hàng xóm như trên, bạn sẽ có kết quả tốt nhất mỗi lần và "lai tạo" họ hy vọng sẽ có được những đặc điểm tốt nhất của mỗi loại.
Liên kết wikipedia có mã giả cho hai đầu tiên; Các phương thức GA có rất nhiều sự khác nhau nên thật khó để liệt kê chỉ một thuật toán, nhưng bạn có thể theo các liên kết từ đó. Lưu ý rằng có các triển khai cho tất cả các điều trên mà bạn có thể sử dụng hoặc lấy làm điểm bắt đầu.
Lưu ý rằng tất cả những điều này - và thực sự là bất kỳ cách tiếp cận nào với thuật toán tìm kiếm chiều rộng này - đều là phỏng đoán, có nghĩa là chúng có các thông số cần được điều chỉnh theo vấn đề cụ thể của bạn. Mà có thể được tẻ nhạt.
Nhân tiện, việc đánh giá chức năng quá tốn kém có thể được thực hiện để làm việc cho bạn một chút; vì tất cả các phương pháp trên liên quan đến nhiều đánh giá chức năng độc lập, đoạn thuật toán đó có thể song song với OpenMP hoặc một cái gì đó tương tự như sử dụng nhiều lõi như bạn có trên máy của mình.
Nguồn
2010-10-10 14:47:32
Bạn có thể đăng mô hình chức năng của mình không ?, nếu có thể, vui lòng cho biết bạn đang cố gắng làm gì ... –
@belisarius Tham số là yếu tố tinh chỉnh trong AI được thiết kế để chơi trò chơi cụ thể. Ví dụ như, để điều chỉnh hàm đánh giá "mức độ đe dọa" cho một vị trí nhất định. Bước "đánh giá" trong tối ưu hóa của tôi tạo ra số lần AI trong quá trình phát triển thắng với một nhóm AI khác cố định trên một bộ bản đồ cố định. (Tôi biết rằng điều này thực sự tối ưu hóa nó chống lại những đối thủ cụ thể trên các bản đồ cụ thể này, nhưng hy vọng có quá ít yếu tố tinh chỉnh để có phạm vi quá mức) –