2010-09-21 52 views
9

This question đến vào đúng thời điểm, vì tôi đang đấu tranh với tối ưu hóa. Tôi biết về các thói quen tối ưu hóa "bình thường" khác nhau trong R, và tôi nhận thức được các gói song song như tuyết, tuyết rơi, Rmpi ​​và thích. Tuy nhiên, tôi đã không quản lý để có được một tối ưu hóa chạy song song trên máy tính của tôi.Tối ưu hóa song song trong R

Một số mã đồ chơi để minh họa:

f <- function(x) sum((x-1:length(x))^2) 
a <- 1:5 
optim(a,f) 
nlm(f,a) 

Những gì tôi muốn làm, là để parallelize các optim() chức năng (hoặc nlm() chức năng, mà không về cơ bản giống nhau). Hàm f() thực sự của tôi phức tạp hơn nhiều, và một vòng tối ưu hóa kéo dài khoảng nửa giờ. Nếu tôi muốn chạy mô phỏng 100 mẫu, mẫu đó sẽ có tuổi. Tôi muốn tránh phải viết thuật toán riêng Newton giống như tôi cho tính toán song song, vì vậy tôi hy vọng ai đó có thể cho tôi một số gợi ý về cách sử dụng tính toán song song cho bài toán tối ưu phức tạp trong R.


Tôi nghĩ này vấn đề có tính chất khác với bản chất trong câu hỏi liên quan. Yêu cầu của tôi được hướng cụ thể hướng tới tính toán song song, chứ không phải một số thay thế nhanh hơn cho tối ưu.

+1

Nếu chức năng của bạn phức tạp hơn nhiều, bạn có thể song song nó thay vì 'tối ưu' không? –

+0

@Joshua: thx, có thực sự là một chút song song có thể. Tuy nhiên, tôi cũng muốn sử dụng một số phương pháp tối ưu để tối ưu hóa, vì tôi phải tăng tốc độ ít nhất mười lần nữa để mô hình có thể thực hiện được trong các mô phỏng. –

Trả lời

3

Để trả lời câu hỏi của riêng tôi:

Có một gói phát triển trông đầy hứa hẹn. Nó có các phương thức tối ưu hóa Particle Swarm và xây dựng trên gói Rmpi ​​cho tính toán song song. Nó có thể được tìm thấy trên Rforge:

http://www.rforge.net/ppso/index.html

Nó vẫn còn trong phiên bản beta AFAIK, nhưng có vẻ đầy hứa hẹn. Tôi sẽ xem xét nó sau này, tôi sẽ báo cáo lại khi tôi biết nhiều hơn. Tuy nhiên, tôi để câu hỏi mở, vì vậy nếu có ai khác có tùy chọn khác ...

+0

Nếu bạn đang xem xét PSO, bạn có nghĩ về sự tiến hóa vi phân (thông qua gói DEoptim) không? Hỗ trợ tính toán song song nằm trong danh sách công việc phải làm của gói và không nên mất nhiều hơn một vài giờ làm việc (đối với tôi, không phải bạn :-). –

+0

@Joshua Thx về mẹo, tôi chưa biết DEoptim. Có vẻ đầy hứa hẹn, nhưng đối với vấn đề tôi đang làm bây giờ nó thực sự khá chậm hơn nlm(). Tôi có 13 thông số và không có giới hạn thấp hơn và trên rõ ràng, vì vậy tôi phải đặt chúng khá lớn để tránh thiếu tham số ... –

+0

Đã thử phiên bản beta và có vẻ như nó hoạt động. Về vấn đề của tôi, nó vẫn không cung cấp sự cải thiện tương tự như song song chức năng của chính nó. Tuy nhiên, tôi có thể thấy rằng trong các trường hợp khác, đây thực sự là một công cụ hữu ích. Tôi đang mong chờ bản phát hành ổn định đầu tiên. –

0

Sprint có thể được quan tâm. Tôi không biết gì về nó, nhưng tình cờ gặp nó gần đây.

+0

Thx cho con trỏ, nhưng tôi đã biết rồi. Có nhiều khung công tác cho tính toán song song trong R, tùy thuộc vào các giao thức bạn muốn sử dụng. Tuy nhiên, tôi không thể tìm thấy một chức năng tối ưu hóa-không-beta-sử dụng sức mạnh của máy tính song song. –

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