2011-08-09 59 views
6

Vì vậy, gần đây tôi đã thực sự mê hoặc với các thuật toán nói chung. Và gần đây tôi đã triển khai thuật toán tối ưu hóa thuộc địa kiến ​​để giải quyết TSP (rất thú vị). Bây giờ tôi đã xem xét các "vấn đề" khác để giải quyết. Bây giờ tôi muốn thực hiện một thuật toán để giải quyết một vấn đề liên quan đến việc hoàn thành một yêu cầu tỷ lệ phần trăm, và để được dưới một giới hạn tùy ý.Tối ưu hóa thuộc địa Ant hoặc thuật toán di truyền cho vấn đề dựa trên tỷ lệ phần trăm

Ví dụ:

tài đầu vào:

1) hạn chế -i.e. lượng năng lượng có sẵn để chi tiêu.

2) "nhiễm sắc thể" loại -i.e. màu xanh (loại phụ - chàm, vv), màu đỏ (loại phụ - maroon, v.v.), màu vàng (loại phụ - màu vàng nhạt, v.v.) thuộc tính chính như màu xanh dương có "hồ bơi" để chọn bao gồm các loại phụ khác nhau như chàm, ánh sáng màu xanh, biển xanh bất cứ điều gì. Loại phụ màu có chi phí thay đổi liên quan đến nó.

3) phần trăm loại yêu cầu cho giải pháp "lý tưởng" (có thể giới thiệu +/-% để cho phép nhiều hơn). -i.e. 10% màu đỏ, 30% màu xanh, 60% màu vàng.

Output:

1) giải pháp chính thức có thể đáp ứng đầy đủ hai yêu cầu, là dưới đây - nhưng gần với - chi phí cần thiết và đáp ứng yêu cầu tỷ lệ siêu kiểu.

Ví dụ:

Đây là một ví dụ siêu đơn giản, rõ ràng nó sẽ phức tạp hơn điều này trong thực tế.

tài xác định chi phí cần thực hiện như sau = chi phí < = 105.

người dung chọn 25% màu xanh, màu vàng 25%, 50% đỏ. với +/- 5% độ lệch

hồ có sẵn cho mỗi màu

Blue: Indigo: Chi phí = 25; Màu xanh biển: chi phí = 30; Màu xanh của Hải quân: chi phí = 75;

Vàng: Vàng nhạt: chi phí = 20; Màu vàng đậm: chi phí = 30; Siêu vàng đậm (lol): chi phí = 75;

Đỏ: Maroon: cost = 20; Máu đỏ: chi phí = 45; Đỏ tươi: chi phí = 55;

Vì vậy, thuật toán sẽ chạy và trả về các kết hợp khác nhau.

Kết hợp 1: chàm, vàng đậm, đỏ máu: chi phí = 100: xanh = 25%, vàng = 30%, đỏ = 55%.

Kết hợp 2: biển xanh, vàng nhạt, đỏ máu: Chi phí = 105: xanh = ~ 30%, vàng = ~ 20%, đỏ = ~ 50%

Kết hợp 3: vân vân và vân vân.

EDIT: Second chỉnh sửa

Output sẽ bao gồm bộ kết hợp khác nhau.

Ví dụ, một giải pháp có thể bao gồm sự kết hợp như:

Một giải pháp sẽ được đại diện của thành viên này:

Kết hợp 1: Chi phí = 20; 50% màu xanh, 25% vàng, 25% đỏ;

Kết hợp 2: Chi phí = 30; 10% màu xanh, 50% vàng, 40% đỏ;

Kết hợp 3: Chi phí = 50; 25% màu xanh, 25% vàng, 50% đỏ;

Giải pháp: = (kết hợp 1, kết hợp 2, kết hợp 3) tổng chi phí = 100 và bao gồm x% xanh dương, y% vàng, z% đỏ;

so sánh giải pháp cho các yêu cầu, nếu nó đóng lại, nếu không loại bỏ nó.

END EDIT

Vì vậy, câu hỏi của tôi là. Tôi biết một thuật toán di truyền sẽ hoạt động. Nhưng liệu việc triển khai ACO có hiệu quả không? Ví dụ: màu xanh, vàng và đỏ sẽ bằng "vị trí", sau đó các loại phụ của chúng sẽ đại diện cho "các con đường" khác nhau.

Chỉ cần tự hỏi điều gì có thể là giải pháp hiệu quả hơn hoặc có thể là một số thuật toán khác hoàn toàn. Tôi khá mới mẻ với công cụ này và chỉ mới bắt đầu đọc về nó hơn một tuần trước.

EDIT: Đầu tiên chỉnh sửa

Tôi muốn xác định rằng tôi muốn có 5 giải pháp độc đáo tốt (5 là một số tùy ý, có thể là 3, có thể là 20).

+0

Đối với vấn đề màu sắc của bạn, mọi thuật toán tối ưu tuyến tính sẽ làm (ví dụ: simplex, điểm bên trong, ...) –

+0

Tôi có thể đề xuất một vấn đề thú vị khác cho bạn để giải quyết với ACO: san lấp mặt bằng tài nguyên (đôi khi được gọi là CRSP). Tương tự như TSP. Ví dụ. Đưa ra một nhóm phát triển phần mềm và một kế hoạch làm việc, nơi các nhiệm vụ phụ thuộc vào nhau để hoàn thành và mỗi nhiệm vụ được giao cho một người cụ thể, tìm lịch trình để dự án kết thúc sớm nhất. –

+0

Tôi chỉ nhận ra rằng tôi đã hỏi câu hỏi của mình sai zzz Tôi đề cập đến giải pháp ứng cử viên đó là một tập hợp các kết hợp hoàn thành các yêu cầu ban đầu. – Odnxe

Trả lời

1

vấn đề màu sắc của bạn có vẻ khá tầm thường với tôi, thậm chí brute force sẽ được nhanh chóng, tôi đoán .. vì vậy đàn kiến ​​của bạn có lẽ hầu hết có thể giải quyết nó quá :)

+0

Yeh ví dụ là đơn giản, nhưng tôi nghĩ rằng một vấn đề trong thời gian chạy có thể phát sinh khi thay vì có 3 màu. Nó sẽ trở thành 5+ yêu cầu siêu kiểu và mỗi siêu kiểu có hàng trăm hoặc thậm chí hàng nghìn loại phụ để chọn. – Odnxe

1

Vấn đề duy nhất tôi thấy với đại diện của bạn cho ACO, là +/- X%.

Với một tỷ lệ cố định của mỗi màu sắc, bạn chỉ có thể tiến hành như bạn nói:

xanh vàng và đỏ là những địa điểm Các phân nhóm khác nhau đại diện cho những con đường, và trọng lượng của họ phụ thuộc vào chi phí và cần lượng nước.

Sau đó, bạn chỉ cần áp dụng phương pháp AOC của bạn như đối với TSP, nhưng thay đổi một chút cách kiến ​​di chuyển:

  1. pheromone thêm vào một con đường duy nhất nếu nó fullfills những hạn chế chi phí
  2. Lựa chọn chiều dài con đường gần nhất với "chiều dài tối ưu" = N% của chi phí tối ưu (trong ví dụ trên, đối với con đường vàng, là gần 25% * 95)

Nếu bạn muốn thêm các hạn chế tỷ lệ nổi rồi:

giả sử bạn đang chi phí tốt nhất là:

Cost = X1*light yellow +X2*sea blue+X3*blood red for example. 

nếu chi phí này không phải là tối ưu, bạn có thể làm việc với một số varations nhỏ trên X1 X2 và X3, để tối ưu hóa chi phí của bạn:

ví dụ X1-e và X2 + e sẽ thay đổi chi phí của bạn bằng cách e*(costseablue-costLightYellow)

Ví dụ, với một epsilon nhỏ, đối với mỗi Xi cặp, Xj mà 01.(chi phí của màu liên kết với i và j) bạn có thể thử thêm epsilon vào Xi và xóa nó từ Xj cho đến khi bạn không thể cải thiện chi phí cho tất cả các cặp vợ chồng của Xi, Xj.

+0

Ok, do đó, hãy thực hiện ACO với tỷ lệ phần trăm CỐ ĐỊNH đầu tiên, nếu chi phí không đủ tối ưu, sau đó bắt đầu tạo phương sai theo tỷ lệ phần trăm cho đến khi đạt được chi phí tối ưu? – Odnxe

+0

@Odnxe Có nó sẽ làm việc tốt với ACO theo cách này. Bạn chỉ cần thêm một số ràng buộc vào cách mà Ants di chuyển vì bạn không tìm đường nhỏ nhất. Tôi đoán không đặt pheromone trên con đường không mong muốn là đủ nhưng tôi không chắc chắn. Bạn có thể thêm một ràng buộc vào việc lựa chọn đường dẫn chọn đường dẫn gần nhất với N% chi phí trung bình. –

+0

Hmm, có lẽ ACO không phải là lựa chọn tốt nhất vì tôi đang cố gắng đạt được nhiều giải pháp tốt nhưng độc đáo - nhấn mạnh vào tính độc đáo. Tôi tự hỏi nếu thay vì theo dõi các giải pháp tốt nhất - tôi có thể theo dõi một số tùy ý các giải pháp có thể, như 5 ví dụ. Bằng cách đó tôi có thể sử dụng 5 loại kiến ​​khác nhau để loại bỏ các loại kích thích tố khác nhau, và hành vi của kiến ​​sẽ là cố gắng tránh pheromone bị các loại kiến ​​khác loại bỏ, trừ khi không có lựa chọn nào khác. Bằng cách này tôi có thể đảm bảo 5 giải pháp tốt duy nhất. Bạn nghĩ sao? – Odnxe

1

Nếu biểu đồ của bạn thỏa mãn sự bất bình đẳng tam giác, tôi đề nghị bạn thử một cây bao trùm tối thiểu và một thuật toán kết hợp không trọng số hai cạnh hoàn hảo. Christofides et al. đảm bảo cho bạn một giải pháp trong vòng 3/2 tối ưu. Một AOC có thể cung cấp cho bạn kết quả tốt và nhanh chóng, nhưng bạn phải tối ưu hóa nó cho nhiều vấn đề. Tôi đã viết một thuật toán Christofides trong php (phpclasses.org). Bạn được hoan nghênh dùng thử. Tôi không chắc nó có hiệu quả không. Nó cho đôi khi kết quả lạ. Nó có thể thực hiện của tôi về thuật toán Fleury?

+0

Rất nhiều thứ đó đã vượt qua đầu tôi, vì vậy tôi sẽ phải nghiên cứu rất nhiều thuật ngữ đó. Nhưng chỉ cần liếc nhìn từng cái, thuật toán kết hợp hoàn hảo-không-hai bên có vẻ như nó có thể phù hợp với những gì tôi đang cố đạt được. – Odnxe

+0

Đó là công cụ khó, thuật toán phù hợp mà tôi đang sử dụng là một trong số tôi đã tìm thấy trên internet. Bạn có thể xem bộ giải tsp này trong javascript, nó sử dụng thuật toán k2-opt để tìm kiếm các cạnh có thể hoán đổi trong giải pháp: http://code.google.com/p/google-maps-tsp-solver/ – Bytemain

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