2010-10-07 36 views
15

Tôi đang tìm một thư viện lập trình di truyền tốt cho JVM. (không phải là thuật toán di truyền nhưng lập trình di truyền) Tôi đã thử JGAP (jgap.sourceforge.net) và Watchmaker (watchmaker.uncommons.org). Thật không may, những công cụ này chỉ có hỗ trợ thử nghiệm và chưa trưởng thành để lập trình di truyền (chúng chủ yếu tập trung vào các thuật toán di truyền).Thư viện lập trình di truyền cho Java

Có lẽ bạn biết bất kỳ công cụ nào tốt hơn cho lập trình di truyền, cho JVM (có thể được viết bằng Java hoặc bất kỳ ngôn ngữ biên dịch nào khác cho JVM).

Tôi không tìm kiếm một danh sách đầy đủ các công cụ GP, tôi đang tìm kiếm một công cụ tốt, phổ biến (giống như các hệ điều hành phổ biến là Windows, Linux và Mac và các IDE Java phổ biến là Eclipse, IDEA và NetBeans).

Nó không phải là thư viện lập trình di truyền (GP), nó cũng có thể là (và nó có lẽ sẽ tốt hơn) một thư viện lập trình biểu hiện gen (GEP).

EDIT (sau hai tháng kể từ khi câu hỏi): Tôi đã phân tích hầu hết các liên kết Bạn đăng và đó có sẵn trong Wiki và tôi phải nói rằng mỗi người trong các thư viện có ít nhất một trong những vấn đề sau đây:

  • không có nguồn mở, hoặc nguồn mở, nhưng rất hạn chế (GPL);

  • không có tài liệu nào (hoặc tài liệu rất kém);

  • không có built-in hỗ trợ cho lập trình di truyền hoặc lập trình biểu hiện gen (hoặc thử nghiệm một;.

  • một số chỉ là quá phức tạp trong sử dụng

Trong sitation này tôi đã kết thúc bằng văn bản thư viện đơn giản của riêng tôi cho dự án (sử dụng phương pháp lập trình biểu hiện gen, làm cho nó rất đơn giản).

+2

@Carlos: Tôi hơi thất vọng khi câu trả lời của tôi giành được tiền thưởng về điều này. Nếu bạn muốn thêm nhiều nội dung hơn cho câu hỏi, tôi sẽ tặng tiền thưởng của tôi cho tiền thưởng thứ hai. Chỉ cần @ nhắn tin cho tôi ở đây. –

+1

@Bill the Lizard, hey không lo lắng bạn thân của tôi tốt tôi đã có cracking dự án của tôi vì vậy bây giờ là tốt. Là tốt đẹp của bạn để được như vậy chân thành và trung thực. kudo và đại diện cho bạn thân của bạn;). Tất cả các tốt nhất – Carlos

+0

Nhìn vào [câu hỏi tiếp theo của bạn] (http://stackoverflow.com/questions/5279149/implementing-methods-having-raw-types-in-scala), bạn đang sử dụng [Drools Planner] (http://www.jboss.org/drools/drools-planner) (ASL, với tài liệu và ví dụ) bây giờ? Bạn thích nó như thế nào? :) –

Trả lời

2

Có các thư viện như GenPron-genes cho Java và JGProg cho Groovy.

Có nhiều danh sách hơn cho một số ngôn ngữ khác nhau trong phần Implementations của bài viết trên Wikipedia Genetic programming, nhưng khi bạn đề cập đến nhiều người trong số họ trông giống như nhiều hơn cho GA, vì vậy bạn sẽ phải đánh giá từng nó phù hợp với nhu cầu của bạn.

+0

Bạn đã thử GP với một số thư viện này chưa? Có nhiều thư viện GP trên internet, nhưng hầu hết trong số đó có chất lượng rất, rất kém, hoàn toàn không phù hợp cho sản xuất. Tôi đã thử JGAP và Watchmaker, và tôi không thể thử tất cả các thư viện có sẵn, vì vậy tôi hỏi bạn - người dùng stackoverflow cho một ý kiến, có thể ai đó của bạn có rất nhiều kinh nghiệm với Java GP. – iirekm

0

JGAP (Gói giải thuật di truyền Java) là một thư viện GA tinh vi, có sẵn miễn phí tại jgap.sf.net, Nhiều ví dụ được bao gồm.

+0

JGAP đã được đề cập trong câu hỏi. "Tôi đã thử JGAP (jgap.sourceforge.net) ...." – Tansir1

+0

Tôi đã đề cập đến JGAP trong câu hỏi của mình - hỗ trợ lập trình di truyền rất non trẻ, chỉ được thêm vào trong phiên bản gần đây. – iirekm

+0

Hơn nữa, JGAP có thiết kế rất xấu (ví dụ so với sản xuất đồng hồ). – iirekm

5

ECJ có nhiều thứ cho GP và bao gồm một số dự án mẫu.

1

Tôi hơi thiên vị vì tôi là một trong những tác giả, nhưng EpochX là một thư viện Java chỉ dành riêng cho Lập trình di truyền. Nó có hỗ trợ cho một đại diện cây mạnh mẽ đánh máy, và 2 đại diện hướng dẫn ngữ pháp. Nó chủ yếu nhắm vào các nhà nghiên cứu, nhưng nó có thể phù hợp tùy thuộc vào những gì bạn yêu cầu. Bạn có thể tìm thêm thông tin tại epochx.org.

+0

Ahh - Tôi gần như đã sẵn sàng để thử epochx khi tôi nhận thấy - đó là theo giấy phép GPL! Dự án tôi thực hiện sẽ mang tính thương mại (vì vậy tôi không thể sử dụng GPL). Tại sao bạn không phát hành nó dưới LGPL - đó là một loại thỏa hiệp giữa GPL và các giấy phép "làm bất cứ điều gì bạn muốn" như Apache, MIT hoặc BSD. Có lẽ có nhiều người dùng như vậy sẽ không sử dụng thư viện của bạn chỉ vì đó là GPL-ed. – iirekm

+0

Cảm ơn lời khuyên. Tôi sẽ xem liệu chúng tôi có thể đánh giá lại giấy phép không vì tôi không thấy lý do nào để không cho phép sử dụng thương mại. –

+0

Bây giờ được cấp phép theo LGPL. –

1

Tôi vừa hoàn thành xây dựng công cụ lập trình di truyền của riêng mình trong Clojure (Được xây dựng trên JVM). Một khi tôi có thể làm hồi quy biểu tượng, tôi nhận ra rằng công cụ này có nhiều hạn chế hơn tôi muốn và phức tạp hơn để giải quyết vấn đề gõ mạnh mẽ.Tôi đã quyết định chuyển sang một công cụ tiến hóa ngữ pháp (Lập trình di truyền có thể được hiểu là một tập hợp con của Tiến hóa ngữ pháp). Công cụ GEVA là điểm dừng chân đầu tiên của tôi cho công cụ Tiến hóa Ngữ pháp. Sự hiểu biết của tôi là nó vẫn còn đang được phát triển (có một rev gần đây trong năm nay (2010)).

+0

Cảm ơn thông tin, tôi không biết về GEVA trước đây. Tôi đoán rằng GEVA mạnh hơn đối với một số vấn đề, trong khi các thuật toán di truyền khác mạnh hơn, trong khi đó đối với một số mạng thần kinh khác hoặc mạng Bayessian. Tôi nghĩ rằng tôi sẽ thử các thuật toán di truyền và GEP bây giờ bởi vì tôi biết chúng tốt, và nếu nó sẽ không làm hài lòng tôi, tôi sẽ thử GEVA. – iirekm

+0

Chỉ cần làm rõ câu trả lời ở đây - GEVA là một thực hiện của Tiến hóa ngữ pháp (GE), một thuật toán tiến hóa sử dụng ngữ pháp. Có những triển khai khác của GE, chẳng hạn như jGE, libGE và EpochX đã được đề cập trong một câu trả lời khác. –

1

Có thể bạn có thể sử dụng các phần của TinyGP? Nó không thực sự là một thư viện, nhiều hơn một hệ thống GP nhưng vì nó là khá nhỏ, bạn có thể dễ dàng thích nghi nó cho việc sử dụng của bạn.

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