5

Tôi có vấn đề về tối ưu hóa tôi đang cố gắng giải quyết bằng thuật toán di truyền. Về cơ bản, có một danh sách 10 biến có giá trị thực (-1 < = x < = 1), và tôi cần tối đa hóa một số chức năng của danh sách đó. Việc nắm bắt được rằng chỉ có tối đa 4 biến trong danh sách có thể là! = 0 (điều kiện tập hợp con).Thuật toán di truyền trên kính hiển vi hình chữ nhật giống hệt nhau

Nói toán học: Đối với một số chức năng f: [-1, 1]^10 -> R min f (X) s.t. | {var in X with var! = 0} | < = 4

Một số nền trên f: Chức năng KHÔNG giống với bất kỳ loại chức năng mục tiêu ba lô nào như trọng lượng Sum x * hoặc bất kỳ thứ gì tương tự.

Những gì tôi đã cố gắng cho đến nay:

Chỉ cần một thuật toán di truyền cơ bản trên bộ gen [-1, 1]^10 với 1 điểm chéo và một số đột biến gaussian trên các biến. Tôi đã cố gắng mã hóa điều kiện tập hợp con trong chức năng thể dục bằng cách chỉ sử dụng 4 giá trị không đồng nhất đầu tiên (không như trong đủ gần 0). Cách tiếp cận này không hoạt động tốt và thuật toán bị mắc kẹt tại 4 biến đầu tiên và không bao giờ sử dụng các giá trị vượt ra ngoài đó. Tôi thấy một số loại GA cho vấn đề 01-knapsack mà cách tiếp cận này làm việc tốt, nhưng rõ ràng điều này chỉ hoạt động với các biến nhị phân.

Bạn sẽ đề xuất tôi thử cái gì tiếp theo?

+0

Tôi không có ý tưởng về thuật toán di truyền, nhưng bạn có thể thử để mã hóa các vấn đề khác nhau: chọn 4 giá trị thực tế và 4 số nguyên phân biệt trong khoảng 0-9. – Patrick

+0

Tổng số giải pháp nhỏ hơn 10^4, tại sao không sử dụng điều tra? Đây có phải là bài tập về nhà không? – willem

Trả lời

3

Bạn có thể thử một bước kiểu "xoay vòng": chọn một trong các giá trị không đồng bộ hiện có để trở thành 0 và thay thế bằng cách đặt một trong các giá trị 0 hiện tại để trở thành không đẳng cấp. (Thuật ngữ "pivot" của tôi xuất phát từ lập trình tuyến tính, trong đó trục là bước cơ bản trong phương thức simplex).

Trường hợp đơn giản nhất sẽ được bỏ qua ngẫu nhiên trong việc chọn từng giá trị này; bạn có thể chọn một giá trị ngẫu nhiên, hoặc nhiều giá trị, cho biến nonzero mới. Một bước cục bộ hơn là sử dụng một bước Gaussian chỉ trên các biến nonzero hiện có, nhưng nếu một trong các biến đó vượt qua số không, sinh ra các biến thể xoay quanh một trong các giá trị bằng không. (Lưu ý rằng đây không phải là loại trừ lẫn nhau, vì bạn có thể dễ dàng thêm cả hai loại bước).

Nếu bạn có bất kỳ thông tin nào về hành vi địa phương của điểm số thể lực của mình, bạn có thể thử sử dụng điểm đó để hướng dẫn lựa chọn của mình. Chỉ vì sự tiến hóa thực tế không nhìn vào chức năng thể dục, không có nghĩa là bạn không thể ...

+0

Điều này nghe có vẻ thú vị, tôi cho rằng tôi có thể mã hóa nó như là (* danh sách các vị trí *, * danh sách các giá trị *) và sử dụng phương thức chéo được đề xuất bởi @Nate ở trên. – dassmann

5

Nếu chức năng thể dục của bạn nhanh chóng và dơ bẩn để đánh giá thì sẽ rẻ hơn.

Sự cố bạn đang gặp phải là bạn đang cố gắng chọn hai thứ hoàn toàn khác nhau cùng một lúc. Bạn muốn chọn 4 bộ gen bạn quan tâm, và sau đó giá trị nào là tối ưu.

Tôi thấy hai cách để thực hiện việc này.

  1. Bạn tạo 210 "loài" khác nhau. Mỗi mẫu được xác định theo đó 4 trong số 10 bộ gen chúng được phép sử dụng. Sau đó, bạn có thể chạy một thuật toán di truyền trên mỗi specie riêng biệt (hoặc serially, hoặc song song trong một cluster).

  2. Mỗi sinh vật chỉ có 4 giá trị bộ gen (khi tạo ngẫu nhiên các con chọn ngẫu nhiên bộ gen nào). Khi hai sinh vật giao phối, bạn chỉ lai chéo với bộ gen phù hợp.Nếu cặp sinh vật của bạn chứa 3 bộ gen thông thường thì bạn có thể chọn ngẫu nhiên bộ gen nào mà bạn có thể chọn làm bộ gen thứ tư. Bạn cũng có thể, như là một heuristic, tránh các sinh vật giao phối mà dường như quá di truyền khác nhau (tức là một cặp chia sẻ hai hoặc ít bộ gen có thể làm cho một con cái xấu).

Tôi hy vọng cung cấp cho bạn một số ý tưởng bạn có thể làm việc.

0

GA của bạn có giải quyết được sự cố tốt mà không có ràng buộc tập hợp con không? Nếu không, bạn có thể muốn giải quyết điều đó trước tiên. Thứ hai, bạn có thể làm cho hạn chế của bạn mềm thay vì cứng: Penalize một giải pháp của tập thể dục cho mỗi biến không có giá trị nó có, ngoài 4. (Bạn có thể bắt đầu bằng cách nới lỏng các ràng buộc hơn nữa, cho phép 9 0 giá trị biến, sau đó 8, v.v., và đảm bảo GA có thể xử lý các biến thể vấn đề đó trước khi làm cho vấn đề trở nên khó khăn hơn.)

Thứ ba, có thể thử giao điểm 2 điểm hoặc đa điểm thay vì 1 điểm.

Hy vọng điều đó sẽ hữu ích.

-Ted

Các vấn đề liên quan