জেনেটিক অ্যালগরিদমের স্টপিং পয়েন্টটি সংজ্ঞায়িত করা কি অ্যালগরিদমের উদ্দেশ্যকে পরাজিত করে?


11

উইকিপিডিয়া একটি জিএ এর সমাপ্তি পয়েন্টটি এটি সংজ্ঞায়িত করে:

সাধারণত, যখন হয় সর্বোচ্চ সংখ্যক প্রজন্ম উত্পাদিত হয়, বা জনগণের জন্য সন্তোষজনক ফিটনেস স্তরে পৌঁছে যায় তখন অ্যালগরিদম বন্ধ হয়ে যায় termin সর্বাধিক সংখ্যক প্রজন্মের কারণে যদি অ্যালগরিদমটি বন্ধ হয়ে যায় তবে একটি সন্তোষজনক সমাধান পৌঁছতে পারে বা নাও পারে।

এখন, যদি সন্তোষজনক ফিটনেস স্তরটি পৌঁছে যায় এবং যদি আপনি এটি ফিটনেস স্তরটিকে সংজ্ঞায়িত করেন তবে আপনি যদি শুরু থেকেই নিজেকে "নিখুঁত" জিনোম তৈরি করতে সক্ষম হবেন না, কারণ আপনি ইতিমধ্যে বৈশিষ্ট্যগুলি জানেন এই নিখুঁত জিনোমের?

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


1
সম্ভবত সিস্টেরির জন্য আরও ভাল ফিট।
কার্ল বিলেফেল্ট

যদিও সেখানে ছিল না :)
অপবাদ

1
@ কার্ল: প্রশ্নটি সিস্টেরির জন্য কিছুটা নরম। এটি সম্ভবত সেখানে বন্ধ হয়ে যাবে।
রবার্ট হার্ভে

2
ধন্যবাদ, @ রবার্ট এখন আমার মনে আছে আমি কেন সেখানে যাই না। আমার ধারণা এটি "ফাটলগুলির মধ্যে" প্রশ্নগুলির মধ্যে একটি।
কার্ল বিলেফেল্ড

1
আপনার "নিখুঁত সাথী" এর বৈশিষ্ট্যগুলি আপনি ইতিমধ্যে জানেন: তারা আপনাকে পুরোপুরি খুশি করবে! তবে এগুলি সন্ধান করার জন্য যথেষ্ট নয় (এগুলি শুরু থেকে তাদের তৈরি করা যাক ...)। পাশাপাশি পরীক্ষা-নিরীক্ষাও জরুরি।
কিলিয়ান ফট

উত্তর:


17

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

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


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

@Karl আমি প্রথম Malbolge "হ্যালো ওয়ার্ল্ড" উৎপন্ন করতে অ্যান্ড্রু কুকি এর জেনেটিক আলগোরিদিম সমাধান মনে রাখবেন & তারপর হারিয়ে ভাল সমাধান তাঁর কাছে ইমেল stackoverflow.com/questions/5338627/...
pageman

8

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

  • আপনি একটি খরগোশ খুঁজে পেয়েছেন যা এক্স, বা এর চেয়ে দ্রুত
  • n প্রজন্মের উপর ক্রমবর্ধমান উন্নতি কিছু প্রান্তিকের নীচে নেমে গেছে, বা
  • আপনি বহু প্রজন্ম ধরে খরগোশ প্রজনন করেছেন

5

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

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

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


3

স্বজ্ঞাতভাবে, জেনেটিক অ্যালগরিদমের উদ্দেশ্য হ'ল কোনও সমস্যার একটি অ্যালগরিদমিক সমাধান তৈরি করা যা নিজেকে সোজা লজিক্যাল বিশ্লেষণে ধার দেয় না। একবার এই লক্ষ্যটি অর্জন করা গেলে, জিএর আর কোনও অনুসরণ করার দরকার নেই।

অবশ্যই, যদি আরও ভাল "ফিটনেস" চাওয়া হয় তবে জেনেটিক অ্যালগরিদম এটি আরও চূড়ান্তভাবে অনুকূল সমাধান খুঁজে পেতে পারে কিনা তা দেখার জন্য চালানো ছেড়ে দেওয়া যেতে পারে, বা জেনেটিক অ্যালগরিদম নিজেই এটি আরও ভাল সমাধানে রূপান্তরিত করতে পারে কিনা তা দেখার জন্য টুইঙ্ক করা যেতে পারে।


2

জেনেটিক অ্যালগরিদমের আরও বেশি প্রচারের মাধ্যমে ভাল জিনকে পুরস্কৃত করার কিছু উপায় প্রয়োজন। খারাপ জিন থেকে ভাল জিন বলার কোনও উপায় না থাকলে আপনি কোনও জেনেটিক অ্যালগরিদম একেবারেই ব্যবহার করতে পারবেন না।

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

এখানে আমার নিজের অভিজ্ঞতার একটি আদর্শ উদাহরণ রয়েছে: প্রথম ভয়েস ডায়ালিং সিস্টেমগুলির মধ্যে একটির বিকাশ করে আমাদের সেই একই নামের একটি সঞ্চিত অনুলিপিটির সাথে কথ্য নামের সাথে মেলে একটি অ্যালগরিদম খুঁজে পেতে খুব কষ্ট হয়েছিল। আমাদের জানানো হয়েছিল যে ২৫% এর মধ্যে একটি নাম বাছাই করা 95% নির্ভুলতা যথেষ্ট। আমাদের কাছে লোকেরা একটি স্টোরেজড কর্পস ছিল যার প্রতি 25 বার 25 টি নাম রয়েছে।

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

এখন, আমাদের একটি শেষ পদক্ষেপ ছিল - এই ওজনগুলির মূল্য কত হওয়া উচিত?

আমরা ওজনের 1000 টি এলোমেলো সেট তৈরি করেছি এবং কর্পাসের বিরুদ্ধে এগুলি পরীক্ষা করেছি। আমরা 500টিকে দূরে ফেলে দিয়েছি যা সবচেয়ে খারাপ ফলাফল করেছে। বাকি 500 টির জন্য, আমরা প্রত্যেকে নকল করেছি এবং এর মধ্যে একটিতে এলোমেলোভাবে ওজন বাড়িয়ে বা কমিয়েছি।

শেষ পর্যন্ত 95% নির্ভুলতার মানদণ্ড পূরণ না করে এমন একটি ওজনের একটি সেট না হওয়া পর্যন্ত আমরা কম্পিউটারে এই প্রক্রিয়াটি প্রায় দুই সপ্তাহের জন্য পুনরাবৃত্তি করি। তারপরে আমরা এটি কর্পাসে নয় এমন ডেটাতে পরীক্ষা করেছি। এটি প্রায় 92% সঠিক ছিল। সুতরাং আমরা কর্পাসে 98% যথাযথতা পেতে দীর্ঘতর দৌড়েছি এবং সেই ওজনের সেটটি কর্পাসে নয়, ডেটাতে 95% নির্ভুলতা তৈরি করেছে।

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


0

সমাধানটি প্রিভিওস পুনরাবৃত্তির একের চেয়ে খুব বেশি আলাদা না হওয়া অবধি ইটারেট করুন। খুব বেশি, একটি নির্দিষ্ট সহনশীলতা বুঝতে দয়া করে।

Solution in iteration n-6: 600
Solution in iteration n-5: 800
Solution in iteration n-4: 768
Solution in iteration n-3: 780 
Solution in iteration n-2: 778
Solution in iteration n-1: 778.23
Solution in iteration n: 780.18
Solution in iteration n+1: 780.1815

এই উদাহরণস্বরূপ, যদি আপনার স্থির সহিষ্ণুতা 0.01 থাকে তবে (এন + 1) আপনাকে থামাতে বলে কারণ অ্যাবস (সমাধান (এন + 1)-সমাধান (এন)) <0.01।

পুনরায় শুরু হচ্ছে, যখন আপনার অ্যালগরিদম বলতে পারে: এটি আর উন্নত হবে না!


0

আপনার মূল প্রশ্নের তাত্ক্ষণিক উত্তরের জন্য: আপনি কী অর্জন করতে চান তা জানার এবং সেখানে কীভাবে পৌঁছতে হবে তা জানার মধ্যে একটি বড় পার্থক্য রয়েছে।

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

জিএ / ইএর সাহায্যে আপনি দেখতে পাবেন যে এটি একটি স্বাভাবিক আচরণ যা আপনি খুব শীঘ্রই একটি 95% + সর্বোত্তম উত্তর খুঁজে পান, তবে শেষ 5% কে সংকীর্ণ করা খুব বেশি ব্যয়বহুল। সুতরাং তত্ত্বটি হ'ল আপনি সর্বনিম্ন সময়ের মধ্যে সেরা ফলাফল অর্জনের জন্য একটি গ্রহণযোগ্য সর্বোত্তমটিকে সংজ্ঞায়িত করেন। যেহেতু অনুসন্ধানের ব্যয়টি, শীর্ষ 1% বলুন, তার উপকারগুলি শীর্ষ 5% এর চেয়েও বেশি হতে পারে, আপনি আপনার গ্রহণযোগ্য সর্বোত্তমটিকে সংজ্ঞায়িত করবেন।

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


0

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

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

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

এটি একরকমভাবে বিজ্ঞপ্তিযুক্ত। জটিল জেনেটিক কোডটি বিবর্তনীয় প্রক্রিয়া দ্বারা রচিত তা পর্যবেক্ষণ করে, কোডটি কীভাবে কাজ করে তা না জেনেও আমরা ভিন্ন জটিল ভাষায় কোড তৈরি করতে বিবর্তনীয় প্রক্রিয়াগুলি অনুকরণ করতে পারি!

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