আমি কীভাবে আমার এমুলেটর ইনপুট অপ্টিমাইজেশান সমস্যাটিকে শ্রেণিবদ্ধ করব এবং কোন অ্যালগরিদমের সাথে এটির সাথে যোগাযোগ করা উচিত?


10

প্রশ্নের প্রকৃতির কারণে, আমাকে প্রচুর পটভূমি তথ্য অন্তর্ভুক্ত করতে হবে (কারণ আমার প্রশ্নটি: আমি কীভাবে এটিকে সংকীর্ণ করব?) যে বলেছিল, এটি সংক্ষিপ্ত করে দেওয়া যেতে পারে (আমার জ্ঞানের সেরা হিসাবে):

চূড়ান্তভাবে বড় সমন্বয়যুক্ত অনুসন্ধানের জায়গাগুলিতে স্থানীয় সর্বোত্তম খুঁজে পেতে কোন পদ্ধতি বিদ্যমান?

পটভূমি

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

এই রানগুলি তাদের লক্ষ্য অর্জন করা সাধারণত দুটি প্রধান কারণের মধ্যে নেমে আসে: রুট-পরিকল্পনা এবং ট্র্যাভারসাল। পূর্ববর্তীটি পরবর্তীকালের চেয়ে অনেক বেশি "সৃজনশীল" is

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

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

এখন আমার লক্ষ্য হ'ল নিন্টেন্ডো 64 সিস্টেমের জন্য ট্র্যাভারসাল প্রক্রিয়াটি সাধারণভাবে স্বয়ংক্রিয় করার চেষ্টা করা । অনুসন্ধান এই সমস্যার জন্য স্থান পর্যন্ত খুব বলপূর্বক পদ্ধতির আক্রমণ করতে বড়। একটি N64 রানের একটি এন-ফ্রেম বিভাগে 2 30n সম্ভাব্য ইনপুট রয়েছে, যার অর্থ হ'ল ইনপুট মাত্র 30 ফ্রেম (30FPS এ একটি সেকেন্ড) 2 900 সম্ভাব্য ইনপুট রয়েছে; এই সম্ভাব্য সমাধানগুলি পরীক্ষা করা অসম্ভব, পুরো দুই ঘন্টা চালানোর জন্য এগুলি ছেড়ে দিন।

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

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

বর্তমান অবস্থা

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

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

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

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

সম্মতি যুক্ত করার পরে, আমি একটি বোতাম প্রেসগুলির রূপান্তর সক্ষম করেছিলাম এবং এমন একটি জায়গায় একই মূল্যায়ন কার্য সম্পাদন করেছি যার জন্য ঝাঁপ দেওয়া দরকার। প্রাথমিকভাবে ফাঁকা ইনপুট স্ট্রিম থেকে লক্ষ্যটি পৌঁছাতে ২৪ টি এমুলেটর চলতে প্রায় এক ঘন্টা সময় নিয়েছিল তবে সর্বোত্তম কোনও কিছু পেতে সম্ভবত কয়েক দিন দৌড়াতে হবে।

সমস্যা

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

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

প্রশ্ন

সুতরাং আমার প্রশ্নটি: আমি কীভাবে এটি মডেল করব? আমি কোন ধরণের অপ্টিমাইজেশান সমস্যাটি সমাধান করার চেষ্টা করছি? আমি কোন অ্যালগরিদম ব্যবহার করার জন্য মনে করি? আমি গবেষণামূলক কাগজপত্র পড়তে ভয় পাই না তাই আমার কী পড়তে হবে তা আমাকে জানান!

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

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

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

এ সমস্যাটি এলোমেলো জিনগত অ্যালগোরিদম ব্যতীত অন্য যে কোনও বিষয় মোকাবেলা করা কি খুব কঠিন? নাকি এটি আসলে একটি তুচ্ছ সমস্যা যা অনেক আগেই সমাধান হয়েছিল? পড়ার জন্য ধন্যবাদ এবং যে কোনও প্রতিক্রিয়ার জন্য আগাম ধন্যবাদ।


আপনার পোস্টটি বেশ দীর্ঘ, অতিরিক্ত পটভূমির তথ্য ছাড়াই স্পষ্ট ভাষায় প্রশ্নটি উল্লেখ করে যদি বিষয়টিতে আপনার একটি সংক্ষিপ্ত বিভাগ থাকে তবে এটি পাঠকদের সহায়তা করবে।
কাভেহ

@ কাভেঃ আমি বুঝতে পেরেছি এটি দীর্ঘতা, তবে প্রশ্নের প্রকৃতির কারণে এটি সংকীর্ণ করা বেশ কঠিন, যেহেতু আমি কীভাবে এটি সংকীর্ণ করতে পারি প্রায় জিজ্ঞাসা করছি। :(

উত্তর:


6

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

  • অবজেক্ট স্পেস,
  • লক্ষ্য ফাংশন এবং
  • আপনার জিনগত অ্যালগরিদমের পরামিতি,

সুতরাং আমাকে বিশদভাবে অনুমতি দিন।

আপনার জিনিস কি?

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

আপনার লক্ষ্য ফাংশন কি?

এটি সত্যই গুরুত্বপূর্ণ। আপনি কী অনুকূলিত করতে চান? গোল করার সময়? বিভিন্ন ক্রিয়া সংখ্যা? সংগৃহীত তারার সংখ্যা? বিভিন্ন কারণের সংমিশ্রণ? আপনি একাধিক লক্ষ্য অর্জনের সাথে সাথে জিনিসগুলি লোমশ হয়ে উঠবে - সেখানে (সাধারণত) আর অপটিমা থাকে না!

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

এখানে চিত্র বর্ণনা লিখুন
[ উত্স ]

00

11+final distance to goal+11+time to goal

011

তাহলে আপনি কীভাবে দূরত্ব পরিমাপ করবেন? লিনিয়ার দূরত্ব লোভনীয় মনে হলেও এর সমস্যাগুলি রয়েছে; আবার, ভুল সংকেত পাঠানো হতে পারে। এই সাধারণ দৃশ্যটি বিবেচনা করুন:

এখানে চিত্র বর্ণনা লিখুন
[ উত্স ]

উপরের করিডোরের উপরের লাফ দিয়ে শুরু হওয়া প্রতিটি ক্রমটি উন্নত হয় যতক্ষণ না এটি লক্ষ্যের ঠিক ওপরে একটি স্পেসে পৌঁছায়, তবে এটি আসলে কখনই লক্ষ্যে পৌঁছতে পারে না! আরও খারাপ, লক্ষ্যগুলিতে পৌঁছায় না এমন সমস্ত ক্রমগুলির মধ্যে, যেগুলি উপরে উঠে যায় সেগুলি নীচে যাওয়ার মতোই ভাল, তাই GA স্পষ্টভাবে বিনষ্ট হওয়া ক্রমগুলি প্রত্যাখ্যান করতে পারে না। অন্য কথায়, লিনিয়ার দূরত্ব বিশেষত খারাপ স্থানীয় অপটিমা তৈরি করে যা স্তরটিতে মৃত প্রান্তগুলি থাকলে জিএকে ফাঁদে ফেলতে পারে।

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

আপনার জিএ কীভাবে কাজ করে?

এখন আমরা আসল জিনগত অ্যালগরিদম পেতে পারি। মূল বিবেচনাগুলি হ'ল জনসংখ্যা, নির্বাচন, প্রজনন / রূপান্তর এবং মানদণ্ড বন্ধ করা।

জনসংখ্যা

আপনার জনসংখ্যা কত বড় হতে চলেছে? যদি এটি খুব ছোট হয় তবে এটি একটি ভাল সমাধানে পৌঁছানোর জন্য প্রয়োজনীয় বৈচিত্র্য সরবরাহ করতে পারে না । যদি এটি খুব বড় হয় তবে আপনি প্রক্রিয়াটি ধীর করে দিয়ে অকেজো আবর্জনা নিয়ে বেড়াতে পারবেন।

আপনি কীভাবে আপনার জনসংখ্যার সূচনা করবেন ? আপনি কি এলোমেলো ক্রিয়া ক্রম চয়ন করেন? যদি তা হয় তবে কোন দৈর্ঘ্যের? আপনার কাছে বীজের পক্ষে (স্বল্প) সংখ্যক নিজেই উত্পাদিত, যুক্তিসঙ্গত সমাধান রয়েছে, সম্ভবত লক্ষ্যে পৌঁছানোর মতো?

নির্বাচন

k

এখানে মূল ধারণাটি নির্বাচনের চাপ : বেঁচে থাকা কতটা কঠিন? এটিকে খুব ছোট করে ফেলুন এবং আপনি ক্রেপ সমাধানগুলি আগাছা ছাড়বেন না। এটিকে অত্যধিক উচ্চ করে দিন এবং আপনি পরিবর্তন (বিশেষত স্থানীয় ওপটিমার মাঝে চলমান) শক্ত করে তোলেন।

প্রজনন এবং মিউটেশন

একবার আপনি যদি আপনার এক দফায় বেঁচে যাওয়া বাছাই করে নেন, তাদের থেকে পরবর্তী প্রজন্মকে আপনাকে তৈরি করতে হবে (পিতামাতারা কি বেঁচে আছেন এবং পরবর্তী প্রজন্মের অংশ হন?) দুটি প্রধান কৌশল রয়েছে: পরিবর্তন এবং পুনঃসংযোগ।

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

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

পরিসমাপ্তি

Nk1n


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

নোটা বেন : উপরের আলোকে বক্সকার 2D দেখুন । তারা কিছু জিনিস বেশ ভাল করে তোলে (অন্যরাও তাই না) এবং জিএর পরামিতিগুলি এর কার্যকারিতাকে কীভাবে প্রভাবিত করতে পারে তার জন্য আপনি একটি অন্তর্দৃষ্টি পেতে পারেন।


  1. প্রকৃতপক্ষে, এই ফিটনেসটি লোভের সাথে ব্যবহার করে একটি ক্রম তৈরি করা, যা পরবর্তী সম্ভাব্য সমস্ত কর্মের মধ্যে দূরত্ব থেকে লক্ষ্যকে হ্রাস করে এমন ক্রিয়াটি বেছে নিচ্ছে, বেশ ভালভাবে কাজ করতে পারে। জিএ ব্যবহার করার আগে এটি ব্যবহার করে দেখুন!
  2. অবশ্যই, আপনি পর্যবেক্ষক হিসাবে সর্বদা সেরা সমস্যার সমাধানটি সর্বদা মনে রাখবেন।

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

1/nn1

ঠিক আছে আমি দেখছি. তৃতীয় বিষয়টি হ্যাঁ, আমি ঠিক এরকম কিছু বোঝাতে চাইছি। ধন্যবাদ!
জুহো

সব তথ্যের জন্য ধন্যবাদ.! সত্যিই খুব সুন্দর উত্তর দেওয়া যা আমার বোঝার স্পষ্ট করে।
GManNickG

1

টিচিং-লার্নিং-ভিত্তিক অপ্টিমাইজেশন (টিএলবিও) পদ্ধতি এবং এর কোড সম্পর্কে আরও তথ্যের জন্য নিম্নলিখিত কাগজটি দেখুন:

আর। ভেঙ্কটা রাও এবং ভি। প্যাটেলের জটিল সীমাবদ্ধ অপ্টিমাইজেশান সমস্যা সমাধানের জন্য একটি এলিটালিস্ট টিচিং-লার্নিং-ভিত্তিক অপ্টিমাইজেশন অ্যালগরিদম ; আন্তর্জাতিক প্রকৌশল গণনা আন্তর্জাতিক জার্নাল 3 (4): 535 Engineering560 (2012)

অতিরিক্ত পড়ার জন্য:


1
CS.SE এ আপনাকে স্বাগতম, এবং আপনার উত্তরের জন্য আপনাকে ধন্যবাদ! মনে রাখবেন যে আপনি আপনার পোস্টগুলিকে ফর্ম্যাট করতে মার্কডাউন ব্যবহার করতে পারেন; আমি আপনাকে আমার সম্পাদনা পরিদর্শন সুপারিশ। বিষয়বস্তু সম্পর্কে, আমি মনে করি না যে এটি সেই ওপিকে সহায়তা করে যা তার সমস্যা মডেল করবেন কীভাবে জানতে চান বলে মনে হয় , কোনও নির্দিষ্ট কৌশল সম্পর্কিত বিশদ নয়। তদুপরি, এখানে কি কেবল এই এক ব্যক্তি টিএলবিওতে কাজ করছেন?
রাফেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.