এমসিএমসি প্রোগ্রামগুলি ডিবাগ করার জন্য কি কোনও স্ট্যান্ডার্ড কৌশল রয়েছে?


11

এমসিএমসি প্রোগ্রামগুলি ডিবাগ করা কুখ্যাতভাবে মুশকিল। বেশ কয়েকটি সমস্যার কারণে সমস্যা দেখা দেয় যার কয়েকটি হল:

(ক) অ্যালগরিদমের চক্রাকার প্রকৃতি

আমরা অন্য সমস্ত পরামিতিগুলিতে শর্তসাপেক্ষে পরামিতিগুলি আঁকি। সুতরাং, যদি কোনও বাস্তবায়ন সঠিকভাবে কাজ না করে তবে বাগটি আলাদা করা কঠিন কারণ সমস্যাটি পুনরাবৃত্ত নমুনার যে কোনও জায়গায় হতে পারে।

(খ) সঠিক উত্তরটি অগত্যা জানা যায়নি।

আমরা একত্রিত হয়েছি কিনা তা বলার উপায় নেই। সিমুলেটেড ডেটাতে কোডটি পরীক্ষা করে কিছুটা হলেও এটি প্রশমিত করা যেতে পারে।

উপরের সমস্যাগুলির আলোকে, আমি ভাবছিলাম যে কোনও মানক প্রযুক্তি রয়েছে যা এমসিসিএম প্রোগ্রামগুলি ডিবাগ করার জন্য ব্যবহার করা যেতে পারে।

সম্পাদন করা

আমি আমার নিজস্ব প্রোগ্রামগুলি ডিবাগ করার জন্য যে পদ্ধতিটি ব্যবহার করি তা ভাগ করে নিতে চাই। আমি অবশ্যই পিটারআর উল্লিখিত সমস্ত কিছু করি। সেগুলি বাদে, সিমুলেটেড ডেটা ব্যবহার করে আমি নিম্নলিখিত পরীক্ষাগুলি সম্পাদন করি:

  1. সত্য মান থেকে সমস্ত পরামিতি শুরু করুন এবং দেখুন যে নমুনাটি সত্য মান থেকে খুব দূরে সরে যায়।

  2. আমার আমার পুনরাবৃত্ত স্যাম্পলারের প্রতিটি প্যারামিটারের জন্য পতাকা রয়েছে যা নির্ধারণ করে যে আমি সেই পরামিতিগুলি পুনরাবৃত্ত নমুনায় আঁকছি কিনা। উদাহরণস্বরূপ, যদি একটি পতাকা 'জেন_প্যারাম 1' সেট করে সেট করা থাকে তবে আমি পুনরাবৃত্ত নমুনায় তার সম্পূর্ণ শর্ত থেকে 'প্যারাম 1' আঁকছি। যদি এটি মিথ্যাতে সেট করা থাকে তবে 'প্যারাম 1' এর আসল মানতে সেট করা হবে।

আমি একবার নমুনা লেখার কাজ শেষ করার পরে, আমি নিম্নলিখিত রেসিপিটি ব্যবহার করে প্রোগ্রামটি পরীক্ষা করি:

  • সত্য হিসাবে একটি প্যারামিটারের জন্য উত্পন্ন পতাকা সেট করুন এবং অন্য সব কিছু মিথ্যাতে সেট করুন এবং সত্য মানের সাথে সম্মানের সাথে রূপান্তর মূল্যায়ন করুন।
  • প্রথমটির সাথে একযোগে অন্য প্যারামিটারের জন্য উত্সাহিত পতাকাটি সেট করুন এবং পুনরায় একত্রিতকরণের মূল্যায়ন করুন।

উপরের পদক্ষেপগুলি আমার পক্ষে অবিশ্বাস্যভাবে সহায়ক হয়েছে have

উত্তর:


10

স্ট্যান্ডার্ড প্রোগ্রামিং অনুশীলন:

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

আমি আপনাকে শুভকামনা, এবং প্রচুর কফি কামনা করি!


3

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

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

সুতরাং, আমি তাকে জিজ্ঞাসা করেছি, 'আপনি কীভাবে এই স্টাফটি পরীক্ষা এবং ডিবাগ করেন?' তিনি উত্তর দিয়েছিলেন, "আপনি এটি প্রথমবারের মতো পেয়েছেন You আপনি এটিকে খুব যত্ন সহকারে (তাঁর ক্ষেত্রে, প্রায়ই কাগজে লিখেছিলেন) বলে মনে করেন এবং আপনি এটি খুব যত্ন সহকারে কোড করেন Because কারণ আপনি যখন ভুলটি করেন তখন সমস্যাটি বিচ্ছিন্ন হওয়ার সম্ভাবনা থাকে are খুব পাতলা."


আমি এই কাহিনীটি আগে শুনেছি (সম্ভবত আপনার কাছ থেকেও?)? এটি আমার জন্য বাড়িতে আঘাত হানে এবং প্রথম শুনার পর থেকে এটি একাধিক অনুষ্ঠানে সত্য হয়েছে (যেমন সমস্যাটি বিচ্ছিন্ন করার অসুবিধা)।
redmoskito

3

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

http://pubs.amstat.org/doi/abs/10.1198/016214504000001132

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


কুক এট আল এ সম্পর্কিত একটি পদ্ধতির সন্ধান পাওয়া যায়। (2006; স্ট্যাটাকলম্বিয়া.ইডু / এজেলম্যান / রিসার্চ / প্রকাশিত /… )। আমি দুবার কুক এট আল এর পদ্ধতিকে ব্যবহার করেছি এবং ফলাফলগুলি দেখে আমি মুগ্ধ হয়েছি। আমি গেউইকের দৃষ্টিভঙ্গি ব্যবহার করি নি, তবে কুক এট আল এর মতে, "গেইকের দৃষ্টিভঙ্গির সুবিধা রয়েছে যে কেবল একটি প্রতিলিপি করা দরকার ... একটি অসুবিধা হ'ল এটি পরীক্ষা করার জন্য সফ্টওয়্যারটি পরিবর্তন করতে হবে।" তারা আরও বলেছে যে গিউকের দৃষ্টিভঙ্গির সীমাবদ্ধ বৈচিত্র্য সহ প্রিয়ার প্রয়োজন, যদিও তাদের ক্ষেত্রে তা হয় না।
jmtroos
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.