মাতলাব / অষ্টভর বা আর কি মন্টি কার্লো সিমুলেশনের জন্য আরও উপযুক্ত?


14

আমি শখ হিসাবে আর তে মন্টি কার্লো করা শুরু করেছিলাম, তবে শেষ পর্যন্ত একজন আর্থিক বিশ্লেষক মতলবতে হিজরত করার পরামর্শ দিয়েছিলেন। আমি একজন অভিজ্ঞ সফটওয়্যার বিকাশকারী। তবে একজন মন্টি কার্লো শিক্ষানবিস। সংবেদনশীলতা বিশ্লেষণ, পরে গতিশীল মডেল সহ স্থির মডেলগুলি তৈরি করতে চাই। আমাকে গাইড করে এমন ভাল লাইব্রেরি / অ্যালগরিদম দরকার।

আমার কাছে মনে হয় যে দুর্দান্ত গ্রন্থাগার রয়েছে এবং আমার সন্দেহ হয় সহজ পাস্কল জাতীয় ভাষার কারণে ম্যাথল্যাব অনভিজ্ঞ প্রোগ্রামাররা পছন্দ করেন। আর ল্যাঙ্গুয়েজ স্কিমের উপর ভিত্তি করে এবং এটি নতুনদের পক্ষে কঠিন, তবে আমার পক্ষে নয়। মাতলাব / অষ্টাভের যদি সংখ্যা / লাইব্রেরির দিকের সুবিধা না থাকে তবে আমি আর দিয়ে থাকব।


2
আর স্কিমের উপর ভিত্তি করে তৈরি হয়েছে তবে এটি আর সি ভিত্তিক নয় এমন শুরুর দিকে ভান করে বেশ ভাল।

2
> আমি এটি উত্তর হিসাবে পোস্ট করব না কারণ আমার চেয়ে এই বিষয়গুলিতে অনেক বেশি জ্ঞানী লোক রয়েছে। তবে, আমি মনে করি যে গতির বিষয়ে আপনাকে আর বেস এবং মিক্স ভাল প্রোগ্রামার / দুর্দান্ত প্যাকেজগুলির মধ্যে পার্থক্য করতে হবে। একটি ভাল প্রোগ্রামার একটি খুব দ্রুত কোড তৈরির জন্য মাল্টিকোর, জিপি ইউটিউলস এবং ম্যাগমা (শীঘ্রই কিন্তু এমসিসিএমের জন্য এখনও কার্যকর নয়), আরসিপিপি ... এর মতো ক্র্যানের কয়েকটি সরঞ্জামের উত্তোলন করতে পারে। আমি মনে করি না ম্যাটল্যাব কেন্দ্রীয়ের সাথে তুলনামূলক কিছু রয়েছে।
ব্যবহারকারী 60

@ কেওয়াক - আমার মন্তব্যটিও সম্ভবত মন্তব্য হিসাবে পোস্ট করা উচিত ছিল। এর জন্যে দুঃখিত.
এম টিবিটস

2
এমটি, এটি পাগল - আপনার উত্তর দুর্দান্ত। যদি কিছু থাকে তবে কোয়াককেও তার সঠিক উত্তর দেওয়া উচিত। তাদের আরও উপযুক্ত জ্ঞানযোগ্য ভোট দিন বা উপযুক্ত হিসাবে দেখুন উত্তর দিন।
ম্যাট পার্কার

নেক্রোপোস্টের জন্য অগ্রিম ক্ষমা চাই GNU অক্টাভ আর্থিক প্যাকেজ octave.sourceforge.net/fin वित्तीय এখন মন্টি কার্লো সিমুলেশন সমর্থন করে। এটা উল্লেখযোগ্যভাবে যতো তাড়াতাড়ি কোড হিসেবে ম্যাটল্যাব সংস্করণ loops জন্য ছাড়া লেখা হয়। বেঞ্চমার্কিংয়ের জন্য ( এমএটিএলবি এর সাথে তুলনা করা) এবং একটি টিউটোরিয়াল এর জন্য দেখুন পার্সিয়্যাড.সিএ / পোস্ট / সিমুলেট-স্পেস- ইন-gnu-octave-fin वित्तीय- প্যাকেজ । আমি এই পক্ষগুলির লেখক হিসাবে আমারও পক্ষপাতিত্ব প্রচার করা উচিত।
পার্সিড

উত্তর:


17

আমি উভয় ব্যবহার। আমি মাতলাবে প্রায়শই ফাংশন এবং অ্যালগরিদমগুলি প্রোটোটাইপ করি কারণ যেমন বলা আছে যে কোনও গাণিতিক ভাষার নিকটবর্তী কোনও ক্ষেত্রে অ্যালগরিদম প্রকাশ করা সহজ।

আর এর রয়েছে দুর্দান্ত গ্রন্থাগার। আমি এখনও এটি শিখছি, তবে আমি মতলবকে ধূলিকণায় ফেলে যেতে শুরু করছি কারণ একবার আপনি আর জানলে, সেখানে প্রোটোটাইপ ফাংশন করা মোটামুটি সহজ।

তবে, আমি দেখতে পেয়েছি যে আপনি যদি একটি পরিবেশ পরিবেশের মধ্যে অ্যালগরিদমগুলি দক্ষতার সাথে কাজ করতে চান তবে সি ++ এর মতো সংকলিত ভাষায় সরিয়ে নেওয়া ভাল। আমার মতলব এবং আর উভয়ই সি ++ র‌্যাপ করার অভিজ্ঞতা আছে (এবং এই বিষয়ে এক্সেল দিয়েছি) তবে আর.র সাথে আমার আরও ভাল অভিজ্ঞতা হয়েছে : অস্বীকৃতি: একজন গ্রেড শিক্ষার্থী হওয়ায় আমি আমার ঘরের জন্য মতলবের সাম্প্রতিক সংস্করণ ব্যবহার করিনি, আমি মতলব .1.১ এ প্রায় একচেটিয়াভাবে কাজ করে যাচ্ছি (যা ৪ বছরের পুরানো)। সম্ভবত নতুন সংস্করণগুলি আরও ভাল কাজ করতে পারে তবে আমি আমার মাথার উপরের দিকের দুটি পরিস্থিতি সম্পর্কে ভাবতে পারি যেখানে মাতলাবের পিছনে সি ++ ডেল উইন্ডোজ এক্সপিকে নীল স্ক্রিনে ফেলেছে কারণ আমি অ্যারে সীমানার বাইরে অনুপযুক্তভাবে চললাম - খুব কঠিন সমস্যা আপনার কম্পিউটারটি প্রতিবার আপনি যখন ভুলটি চালু করেন তবে পুনরায় বুট করা থাকলে ডিবাগ করুন ...

শেষ অবধি, আর সম্প্রদায়টি মাতলাব সম্প্রদায়ের আগের চেয়ে অনেক বেশি গতিতে এবং গতিতে বেড়েছে বলে মনে হচ্ছে। তদতিরিক্ত, এটি নিখরচায় হিসাবে আপনি গডফর্সাকেন ফ্লেক্সএলএম লাইসেন্স ব্যবস্থাপকের সাথেও চুক্তি করতে পারেন না।

দ্রষ্টব্য: আমার প্রায় সকল বিকাশ এখনই MCMC অ্যালগরিদমে in আমি জিপিপ্লট 2 ব্যবহার করে আর ভিজ্যুয়ালাইজেশন সহ সি ++ তে প্রায় 90% উত্পাদন করি।

সমান্তরাল মন্তব্যের জন্য আপডেট:

আমার বিকাশের বেশিরভাগ সময় এমসিএমসি রুটিনগুলিকে সমান্তরাল করতে ব্যয় করা হয় (এটি আমার পিএইচডি থিসিস)। আমি মতলবের সমান্তরাল সরঞ্জামবক্স এবং স্টার পি এর সমাধান ব্যবহার করেছি (যা আমি অনুমান করি যে এখন মাইক্রোসফ্ট মালিকানাধীন ?? - জিজ অন্য একটি গাবলড হয়ে গেছে ...) আমি প্যারালাল টুলবক্সটি একটি কনফিগারেশন দুঃস্বপ্ন হিসাবে পেয়েছি - যখন আমি এটি ব্যবহার করেছি, এর জন্য প্রতিটি ক্লায়েন্ট নোডে রুট অ্যাক্সেসের প্রয়োজন। আমি মনে করি তারা এখন সেই ছোট "বাগ" ঠিক করে ফেলেছে, তবে এখনও গোলযোগ। আমি * 'পি সমাধানটি মার্জিত হতে দেখলাম, তবে প্রায়শই প্রোফাইল করা বেশ কঠিন। আমি জ্যাকেট ব্যবহার করি নি , তবে আমি ভাল জিনিস শুনেছি। আমি সমান্তরাল টুলবক্সের আরও সাম্প্রতিক সংস্করণগুলি ব্যবহার করি নি যা জিপিইউ গণনা সমর্থন করে।

আর প্যারালাল প্যাকেজগুলির সাথে আমার কার্যত অভিজ্ঞতা নেই।

এটি আমার অভিজ্ঞতা হয়েছে যে সমান্তরাল কোডটি অবশ্যই সি ++ স্তরে ঘটতে হবে যেখানে আপনার কার্য ক্ষয় এবং মেমরি / সংস্থান বরাদ্দের জন্য নিয়ন্ত্রণের একটি সূক্ষ্ম গ্রানুলারিটি রয়েছে। আমি দেখতে পেলাম যে আপনি যদি উচ্চ স্তরে প্রোগ্রামগুলিকে সমান্তরাল করার চেষ্টা করেন তবে আপনার কোডটি তুচ্ছভাবে ক্ষয়যোগ্য (যাকে ডামি-প্যারালালিজমও বলা হয়) না হলে আপনি প্রায়শই একটি সংক্ষিপ্ত স্পিডআপ পান । এটি বলেছিল, আপনি ওপেনএমপি ব্যবহার করে সি ++ স্তরে একক লাইন ব্যবহার করে যুক্তিসঙ্গত স্পিডআপগুলি পেতে পারেন :

#pragma omp parallel for

আরও জটিল স্কিমগুলির একটি শেখার বক্ররেখা রয়েছে তবে জিপিজিপু জিনিসগুলি কোথায় চলছে তা আমি সত্যিই পছন্দ করি। এই বছর জেএসএম হিসাবে, আমি জিপিইউ বিকাশের বিষয়ে যে কয়েকটি লোকের সাথে আর-তে কথা বললাম তারা এটিকে কেবল "গভীর প্রান্তে অঙ্গুলি" বলে উল্লেখ করেছে। তবে যেমন বলা হয়েছে, অদূর ভবিষ্যতে পরিবর্তন আনতে আমার ন্যূনতম অভিজ্ঞতা রয়েছে।


সি ++ এর জন্য +1; যদিও সি / সি ++ এমআই এম্বেড করা সহজ হয় প্রায়শই আমার কোডগুলি মোড়ানো এবং সেগুলি আর-এর ভিতরে চালানো যায় - তবে পরামিতিগুলি পাস করা, লাইভ ভিজুয়ালাইজেশন করা এবং আউটপুট ফাইলের বিন্যাসের কথা চিন্তা না করে ফলাফল বিশ্লেষণ করা ভাল।

ভাল করা; এমসির শেষ পর্যন্ত একজনকে সি / সি ++ এ যাওয়ার প্রয়োজন হবে। আমার কাছে মন্তব্য করার মতো পর্যাপ্ত অভিজ্ঞতা নেই, তবে মতলব দ্বারা বিভিন্ন সংস্করণের কারণে লিনাক্সের অধীনে মতলব দ্বারা নির্বাহযোগ্য যা আমি এর সাথে সংযুক্ত করতে চাই তার তুলনায় ম্যাট্লাবের সাথে সি / সি ++ ব্যবহার করে প্রচুর মাথা ব্যথা পেয়েছি have আমার কোড
shabbychef

টিবিটস: ওপেনএমপি ব্যবহার করার সময় আপনি কীভাবে আরএন তৈরি করবেন?
csgillespie

এখনই, আমি নেই। আমার এমসিএমসি অ্যালগরিদমের সবচেয়ে ব্যয়বহুল অংশগুলি বেশ কয়েকটি সম্ভাবনা গণনা করছে যাতে আমি তাদেরকে যথাসম্ভব সর্বোত্তমভাবে গুচ্ছ করার চেষ্টা করি এবং সমান্তরালে তাদের গণনা করি। তবে সেটআপের সমস্তগুলি, আরএন জেনারেশন (প্রস্তাবগুলির জন্য), একটি সিপিইউ কোরতে সম্পন্ন হয়। সমান্তরাল আরএনজিগুলির জন্য, আমি ডিসি দিয়ে মরসেন টুইস্টারের জন্য শুরু করতাম - তবে আমি ব্যক্তিগতভাবে কখনও এটি জিপিইউগুলির জন্য সিডিএ-তে তুচ্ছ অনুবাদ ছাড়াও ব্যবহার করিনি (সত্যিই অনুশীলন হিসাবে)।
এম। টিবিটস

15

সত্যি কথা বলতে কি, আমি মনে করি আপনি আর বনাম সম্পর্কে চারপাশে যে কোনও প্রশ্ন জিজ্ঞাসা করবেন আর এর দিকে পক্ষপাতিত্ব করা হবে! মনে রাখবেন যে আর সবচেয়ে বেশি ব্যবহৃত ট্যাগ !

আমি কি করবো

আমার বর্তমানের অনুশীলনটি হ'ল প্রোটোটাইপ করতে আর ব্যবহার করতে এবং যখন আমার অতিরিক্ত গতি বাড়ানোর দরকার হয় তখন সি ব্যবহার করতে হয়। এটি ব্যবহৃত হত যে আমাকে খুব দ্রুত সিতে স্যুইচ করতে হবে (আমার নির্দিষ্ট অ্যাপ্লিকেশনগুলির জন্য আবার) তবে আর মাল্টিকোর লাইব্রেরিগুলি সেই স্যুইচটি বিলম্বিত করতে সহায়তা করেছে। মূলত, আপনি forএকটি তুচ্ছ পরিবর্তনের সাথে সমান্তরালভাবে একটি লুপ রান করেন।

আমার উল্লেখ করা উচিত যে আমার অ্যাপ্লিকেশনগুলি খুব কম্পিউটেশনাল নিবিড়।

সুপারিশ

পুরোপুরি সৎ হতে, এটি সত্যই নির্ভর করে যে আপনি ঠিক কী করতে চান। সুতরাং আমি আপনার প্রশ্নের এই বিবৃতি আমার উত্তর বেস করছি।

সংবেদনশীলতা বিশ্লেষণ, পরে গতিশীল মডেল সহ স্থির মডেলগুলি তৈরি করতে চাই। আমাকে গাইড করে এমন ভাল লাইব্রেরি / অ্যালগরিদম দরকার

আমি ভাবছিলাম যে এই সমস্যাটি আদর্শভাবে আরে প্রোটোটাইপিংয়ের জন্য উপযুক্ত হবে এবং সি প্রয়োজনে (বা অন্য কোনও সংকলিত ভাষা) ব্যবহার করার উপযুক্ত হবে।

এই কথাটি বলার পরে, সাধারণত মন্টে-কার্লো / সংবেদনশীলতা বিশ্লেষণে বিশেষত উন্নত পরিসংখ্যান রুটিন জড়িত না - অবশ্যই এটির জন্য অন্যান্য উন্নত কার্যকারিতা প্রয়োজন হতে পারে। সুতরাং আমি মনে করি (কোনও তথ্য ছাড়াই) আপনি যে কোনও ভাষায় আপনার বিশ্লেষণ চালিয়ে যেতে পারেন তবে পুরোপুরি পক্ষপাতদুষ্ট হয়ে আমি আর সুপারিশ করব!


4
"আমার বর্তমান কাজের অনুশীলনটি প্রোটোটাইপ করতে আর ব্যবহার করা এবং যখন আমার অতিরিক্ত গতি বাড়ানোর দরকার হয় তখন সি ব্যবহার করা" সম্পর্কে অংশটি পছন্দ করি। - এটি আমার দরিদ্র অযোগ্য স্ব এবং পরবর্তী অফিসে সি ++ বিকাশকারীদের কাজের বিবরণের মত শোনাচ্ছে ... এবং আমি মনে করি এটি মূলত আর, সি / সি ++ এবং স্ট্যাটিস্টিক্যাল গণনা সম্পর্কিত একটি সমস্যা জড়িত মূলত কোনও পরিস্থিতি ধারণ করে ।
স্টিফান কোলাসা

9

যদিও আমি প্রায় একচেটিয়াভাবে ব্যবহার Rকরি, আমি প্রকৃতপক্ষে প্রোফাইলারকে প্রশংসা করি Matlab
যখন আপনার প্রোগ্রামটি ধীরে ধীরে ধীরে ধীরে হয় তখন আপনি সাধারণত জানতে চান যে বাধা কোথায়। মতলবের প্রোফাইলার এটি অর্জনের জন্য দুর্দান্ত সরঞ্জাম কারণ এটি আপনাকে কোডের প্রতিটি লাইনে কত সময় ব্যয় করে তা বলে দেয়।

কমপক্ষে আমার কাছে, ব্যবহার করা Rprofঅসম্ভব খারাপ। কোন কলটি বাধা তা আমি বুঝতে পারি না। ব্যবহার করে Rprofআপনি প্রতিটি লাইনে কত সময় ব্যয় করেন সে সম্পর্কিত তথ্য পাবেন না, তবে প্রতিটি আদিম ক্রিয়ায় (বা তাই) কত সময় ব্যয় হবে সে সম্পর্কে তথ্য পাবেন না। তবে একই আদিম ক্রিয়াকলাপকে বিভিন্ন ফাংশন দ্বারা ডাকা হয়।

যদিও আমি প্রস্তাব দিচ্ছি R(কারণ এটি কেবল দুর্দান্ত: নিখরচায়, অত্যন্ত শক্তিশালী, ...) আপনি যদি জানেন যে আপনার কোডটি অনেক বেশি প্রোফাইল করতে হবে তবে মতলব আরও ভাল। এবং পরিষ্কারভাবে বলতে গেলে, মাতলাবে মাল্টিকোর এবং সমান্তরাল কম্পিউটিং টুলবক্স রয়েছে (যদিও, অত্যন্ত দামি)।


4
আমি @ হেনরিককে সম্পূর্ণরূপে সম্মত করি। আপনি যদি প্রোফাইলিং সম্পর্কে উদ্বিগ্ন হন তবে মতলবের একটি দুর্দান্ত প্রোফাইলিং সরঞ্জাম রয়েছে (এমনকি সংস্করণ .1.১ এও ফিরে এসেছে)। অন্যদিকে Rprof কাঙ্ক্ষিত হতে অনেকগুলি ছেড়ে যায়। লুপের জন্য প্রতিটি কমান্ড বেশ কয়েকবার কার্যকর করে এবং system.timeবিভিন্ন সংস্করণের মধ্যে পার্থক্যটি তুলনা করে প্রোফাইলিং শেষ করি । এখানে একটি আকর্ষণীয় কেস স্টাডি দেওয়া হয়েছে
এম টিব্বিট

2

যদি আপনার সিমুলেশনগুলি অপেক্ষাকৃত পরিশীলিত কৌশলগুলিকে জড়িত করে, তবে আর এটিই যাওয়ার উপায়, কারণ সম্ভবত আপনার রুটিনগুলি আরয়ে পাওয়া যাবে, তবে মাতলাব নয়।


2

আমার মতে মতলব একটি কুৎসিত ভাষা। সম্ভবত এটি এখন অবধি ডিফল্ট আর্গুমেন্ট এবং এর মূল ভিত্তিতে যুক্তিযুক্ত নামগুলি অর্জন করেছে, তবে অনেকগুলি উদাহরণ যা আপনি অনলাইনে পেয়েছেন তা পুরানো "যদি এখানে 6 টি যুক্তি থাকে তবে এটি, অন্যথায় যদি এখানে 5 টি যুক্তি থাকে এবং এটি ..." এবং নামযুক্ত আর্গুমেন্টগুলি কেবলমাত্র বিকল্প স্ট্রিং (নাম) এবং মান সহ ভেক্টর। এটি এতটা 1970 এর যে আমি কেবল এটি ব্যবহার করতে পারি না।

আর এর সমস্যাগুলি থাকতে পারে এবং এটিও পুরানো but তবে এটি একটি ফাউন্ডেশনে (স্কিম / লিস্প) তৈরি করা হয়েছিল যা সামনের দিকে তাকিয়ে ছিল এবং তুলনায় তুলনামূলকভাবে ভাল ধরে রেখেছে।

এটি বলেছিল, আপনি যদি লুপ ইত্যাদির সাথে কোড করতে চান তবে মতলব আরও দ্রুত And এবং এর মধ্যে আরও ভাল ডিবাগিং সুবিধা রয়েছে। এবং আরও ইন্টারেক্টিভ গ্রাফিক্স। অন্যদিকে, আপনার কোড / লাইব্রেরিগুলি ডকুমেন্ট করার জন্য যা পাস তা আর এর তুলনায় হাস্যকর এবং আপনি মতলব ব্যবহারের জন্য একটি সুন্দর অর্থ প্রদান করেছেন।

সমস্ত আইএমও

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.