2010-10-22 38 views
11

Tôi hiện đang tìm một trình mô phỏng sự kiện rời rạc được viết cho C++. Tôi không tìm thấy nhiều trên trang web được viết riêng theo phong cách OO; có một số, nhưng đã lỗi thời. Một số khác, như Opnet, Omnet và ns3 là quá phức tạp cho những gì tôi cần làm. Và bên cạnh đó, tôi cần phải mô phỏng các thuật toán dựa trên tác nhân có khả năng mô phỏng hệ thống của hàng nghìn nút.mô phỏng sự kiện rời rạc cho C++

Có ai biết điều gì phù hợp với nhu cầu của tôi không?

+0

Nếu bạn cảm thấy thoải mái với Python, bạn có thể dùng thử GarlicSim, nó sẽ cho phép bạn thực hiện các mô phỏng dựa trên tác nhân. (Tôi chưa bao giờ thử nó hàng ngàn, nhưng tôi không nghĩ sẽ có vấn đề với nó.) –

Trả lời

0

Hãy xem GBL library. Nó được viết bằng C++ hiện đại và thậm chí hỗ trợ các tính năng C++ 0x như di chuyển ngữ nghĩa và hàm lambda. Nó cung cấp một số cơ chế mô hình: các trình xử lý sự kiện đồng bộ và không đồng bộ, các chủ đề ưu tiên và các sợi. Bạn có thể tạo hoàn toàn hành vi, chu kỳ chính xác, và các mô hình thời gian thực, hoặc bất kỳ hỗn hợp của những người.

+1

Tự quảng cáo? –

+1

tự prmotions được cho phép nếu nó phù hợp với bối cảnh của nó trong (một câu trả lời của nó) –

1

Có CSIM từ Mesquite Software hỗ trợ phát triển các mô hình trong C, C++ và Java. Tuy nhiên, nó được trả tiền thương mại, AFAIK.

3

Những người khác có câu trả lời trực tiếp tốt, nhưng tôi sẽ đề xuất một giải pháp thay thế. Nếu tôi hiểu bạn đúng, bạn muốn có một hệ thống trong C++ hoặc như vậy, nơi bạn có thể đăng sự kiện cháy trong tương lai và mã được chạy khi những sự kiện đó kích hoạt.

Tôi đã có một dự án để làm như thế này, và tôi bắt đầu cố gắng viết một hệ thống sự kiện như vậy trong C++ và sau đó nhanh chóng nhận ra rằng tôi đã có một giải pháp tốt hơn.

Bạn đã cân nhắc viết chương trình của mình bằng Verilog hành vi chưa? Điều đó có vẻ lạ khi viết phần mềm bằng ngôn ngữ mô tả phần cứng, nhưng trình mô phỏng Verilog là hệ thống dựa trên sự kiện bên dưới và hành vi Verilog là một cách rất thuận tiện để thể hiện sự kiện, thời gian, trình kích hoạt, v.v. đó là những gì tôi đã sử dụng) được gọi là Icarus Verilog. Nếu bạn không sử dụng Ubuntu hoặc một số bản phân phối Linux với Icarus đã có trong một gói, việc xây dựng từ nguồn là đơn giản.

+0

xin vui lòng xem xét việc đăng một liên kết đến một ví dụ của Verilog thực hiện một ví dụ DES đơn giản. Cảm ơn bạn – gatorback

+0

@gatorback Tôi không chắc mình đã từng có ai khác làm điều này chưa.Tôi chắc chắn rằng họ có, nhưng ví dụ duy nhất tôi biết là dự án nói trên tôi đã làm, và tôi không có ý tưởng nơi tôi đặt mã đó. –

3

Tôi khuyên bạn nên có giao diện thứ hai cho OmNet ++. Ngay từ cái nhìn đầu tiên nó có thể trông khá phức tạp, nhưng nếu bạn nhìn nó chi tiết hơn, bạn sẽ thấy rằng phần lớn sự phức tạp là trong add-on mạng (khung INET). Trừ khi bạn sẽ làm một mô phỏng mạng chi tiết, bạn không cần INET.

Sử dụng lõi OmNet ++ không khó đặc biệt và có thể đơn giản hơn các công cụ tương tự khác.

Bạn có thể muốn có một cái nhìn vào một đoạn giới thiệu (có thể là một chút lỗi thời) tại http://www.arcos.inf.uc3m.es/~jdaniel/seminarios/omnet2/index.html

Một trong những điều mà làm cho OmNet ++ hấp dẫn đối với tôi là khả năng mở rộng của nó. Có thể chạy mô phỏng lớn trong máy tính để bàn. Bên cạnh đó, nó có thể mở rộng mô phỏng tương tự cho một cụm mà không cần viết lại mã.

2

Bạn nên xem xét SystemC, mặc dù tôi cũng khuyên bạn nên xem qua lần thứ hai tại OmNet ++.

1

Chúng tôi sử dụng SIMLIB tại trường học của tôi. Nó rất nhanh, dễ hiểu, mô phỏng hướng đối tượng, rời rạc và liên tục. Nó có thể trông lỗi thời nhưng nó vẫn được duy trì.

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