জেনেটিক প্রোগ্রামিংয়ের জন্য কোন ভাষাটি ব্যবহার করতে হবে


15

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

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

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

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

অতিরিক্ত মন্তব্য:

  • আমি এএসটি চালাতে এড়াতে চাই!
  • এই সমস্যাটি শক্ত (স্টক মানগুলির পূর্বাভাস দেওয়ার মতো কঠিন নয়)। এটি (সম্ভবত সম্ভবত) আমাদের পর্যাপ্ত ইনপুট তথ্য নেই (কিছু গোপন প্যারামিটার রয়েছে) এর কারণে এটি। এমন একটি মডেল তৈরি করা যাতে আরও ভাল পারফরম্যান্স থাকে সেই মডেলটি যেটি দেয় তার অর্থ কিছুটা চ্যালেঞ্জ (মানে মডেলগুলির 35% এমএপিই থাকে), বেশিরভাগ মডেলের প্রায় 25% এমএপিই থাকে, সর্বোত্তম 20% থাকে।
  • আমি এমন একটি ভাষা রাখতে চাই যা অনেক বৈশিষ্ট্য সহ ডেটাসেট পরিচালনা করে এমন ধারণা নিয়ে যে আমি নিশ্চিত যে কোনটি গুরুত্বপূর্ণ। (এখানে স্ল্যাশ / এ এর ​​একটি অসুবিধা রয়েছে --- এই ভাষায় ইনপুট বৈশিষ্ট্যগুলি যথাক্রমে পড়া হয় --- তাই কিছু বৈশিষ্ট্য বড় সম্ভাবনার সাথে ব্যবহার করা হবে)।
  • আমি পাইথন এ প্রোগ্রাম করতে সক্ষম হতে চাই, তাই পাইথন libs দুর্দান্ত হবে --- তবে আমি সি / সি ++ (জাভা, কোনও মতলব, ইত্যাদি) এর জন্য বাইন্ডিংগুলি করতে পারি।

আমি সচেতন এটি একটি সমীক্ষার প্রশ্ন, সুতরাং যদি এই জাতীয় প্রশ্নের শুরুতে হয় তবে দয়া করে এটি বন্ধ করুন, তবে আমি মনে করি এটি যথেষ্ট নির্দিষ্ট।

উত্তর:


14

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

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

  1. পাইগ্রেশন জিপি (পাইথনে প্রতীকী রিগ্রেশনের জন্য জিপি) - http://code.google.com/p/pygressiongp/
  2. পাইজিন - https://github.com/blaa/PyGene
  3. পাইথনে একটি সাধারণ জেনেটিক প্রোগ্রামিং - http://zhanggw.wordpress.com/2009/11/08/a-simple-genetic-programming-in-python-4/
  4. পাইভলভ - https://github.com/perone/Pyevolve - এছাড়াও ব্লগ দেখুন - http://blog.christianperone.com - এবং এই পোস্ট - http://blog.christianperone.com/?p= 549
  5. esec (পাইথনে বিবর্তনমূলক গণনা) - http://code.google.com/p/esec/
  6. পীচ - http://code.google.com/p/peach/
  7. পাইব্রাইন (কেবল এনএন নয়, অনেক কিছু করে) - http://pybrain.org/
  8. ডায়োনি - http://dione.sourceforge.net/
  9. পাইজিইপি (জেনেটিক এক্সপ্রেশন প্রোগ্রামিং) - http://code.google.com/p/pygep/
  10. ডিপ (বিতরণ বিবর্তনীয় অ্যালগরিদম) - http://code.google.com/p/deap/

এছাড়াও, খ্যাতিমান জিপি লেখক পলি, ল্যাংডন এবং ম্যাকফির জিপি সম্পর্কিত (ফ্রি) প্রবর্তনামূলক বইটি দেখুন:

জেনেটিক প্রোগ্রামিংয়ের একটি ক্ষেত্র গাইড - http://www.gp-field-guide.org.uk/


লিনার এবং ট্রি জিপির পক্ষে আপনার পক্ষে কোনও রেফারেন্স রয়েছে?
জেবি।

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

এইচএম ... কেন এই লোকেরা iteক্যবদ্ধ হয় না?
ভনপেট্রেশেভ

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

1
আমি; আমি বলছি না যে গাছের জিপি খারাপ বা is আমি কেবল আমার নিজস্ব প্রয়োগকারীটিকে রোল করতে চেয়েছিলাম, এবং লিনিয়ারটি এত সহজ। আমি স্ক্র্যাচ থেকে 4 ঘন্টা মত পাইথন প্রোটোটাইপ কাজ করেছি।
জেবি।

4

আপনি যদি কোনও প্রোগ্রাম বিকাশ করতে চলেছেন তবে আপনি যে কোনও উপায়ে সিনট্যাক্স ট্রি ম্যানিপুলেট করতে পারেন; এইভাবে আপনি যে প্রোগ্রামটি বিকাশ করেছেন তা স্বয়ংক্রিয়ভাবে সিন্টেক্সিকভাবে সঠিক হবে be

কোনও ভাষা নির্বাচন করার সময় দুটি বিষয় মনে রাখতে হবে।

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

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


1
দেখুন github.com/arturadib/slash-a --- এই ভাষা আপনি কোন এবং AST ম্যানিপুলেশন আছে! প্রোগ্রামটিকে বাইটকোডের অ্যারে হিসাবে নিন্দা করা হয় এবং যেহেতু প্রতিটি অ্যারে সঠিক প্রোগ্রাম হয় আপনি যা চান জেনেটিক অপারেশনগুলি ব্যবহার করতে পারেন।
জেবি।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.