একটি ভূখণ্ডের জেনারেটর বিকশিত হচ্ছে


12

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

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

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

সংক্ষেপে প্রশ্নগুলি:

  • আপনি কোনও উপায়ে জেনারেটরকে এমন উপায়ে কীভাবে উপস্থাপন করবেন যাতে গাছের মধ্যে পার্স করা যায়?

  • এটি কোন ধরণের অঞ্চল তৈরি করতে হবে? (উচ্চতা ম্যাপ, ভার্টেক্স গ্রাফ, ...)

    এটি যতটা কম হাইটম্যাপের উপর ভিত্তি করে তত ভাল।

  • কোনও সমাধানের ফিটনেসটি মূল্যায়নের জন্য কী ব্যবহার করা হবে?

    উদাহরণস্বরূপ: আমরা আকর্ষণীয় ভূখণ্ড চাই তাই আমাদের ভূখণ্ডের প্রতিটি শীর্ষবিন্দুর জন্য স্বাভাবিকের গড় পরিবর্তন হতে পারে values


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

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

উত্তর:


11

কার্ল সিমসের জিনগত চিত্রগুলির অনুরূপ পদ্ধতির সাথে আপনার কিছু ভাগ্য হতে পারে ।

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

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

  • ট্রিগার ফাংশন ( sin, cos, tanইত্যাদি।)
  • অবস্থান ( x, y)
  • বেসিক গণিত অপারেটর ( sqrt, pow, abs, inverse)
  • শব্দ কর্ম ( fBm, noise2, noise3)
  • অন্যান্য ফ্র্যাক্টাল ( mandelbrot, julia)
  • অন্তরঙ্গ কর্ম ( lerp, quad, step, smoothstep)

(উপরের কয়েকটি তার প্রয়োগে নাও থাকতে পারে; আমি তার কাজটি অনেক আগে খুঁজে পেয়েছি এবং বাস্তবে আপনি বছরের পর বছর যা বর্ণনা করছেন তাতে কয়েকটি প্রচেষ্টা করেছি - যাতে স্মৃতিগুলি ফুটো হয়ে যেতে পারে :)

এটি আকর্ষণীয় রাখা (এবং দ্রুত)

মাল্টি-লেয়ারযুক্ত পদ্ধতির সাথে আমার কিছুটা ভাগ্য ছিল যা মৃত বিবর্তনের পরিমাণকে ব্যাপকভাবে হ্রাস করে।

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

যাহোক...

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

তবে আপনার সম্ভবত প্রশিক্ষণের চিত্রগুলির একটি সেট থাকতে পারে, সম্ভবত কিছু স্যাটেলাইট চিত্রাবলী এবং কয়েকটি বিশেষ গুণাবলী সহ কয়েকটি কৃত্রিম চিত্র এবং তারপরে আপনি ভেরিলেট বা 2 ডি এফএফটি বিশ্লেষণ ব্যবহার করতে পারেন বনাম আপনি যে অঞ্চলটি পরীক্ষা করছেন?

এটি একটি আকর্ষণীয় বিষয়, তবে আমি আপনাকে কী উত্তর দেওয়ার প্রয়োজন তা নিয়ে সন্দেহ করি :)

সম্পাদনা: আহ! একগুচ্ছ লিঙ্কগুলি সরিয়ে ফেলতে হয়েছিল কারণ আমি একজন নতুন ব্যবহারকারী: - |


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

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

1
@ অ্যালেক্স সম্ভবত এই পেপারটিও আগ্রহী হবে। আমি কল্পনা করি যদি আপনি উল্লিখিত কিছু কৌশলটির মাথা ঘুরিয়ে দেন তবে আপনি এটি ফিটনেসকে গাইড করতে ব্যবহার করতে পারেন। (অথবা এটি আপনি যা চান ঠিক তেমন হতে পারে :)
পেন্টাফোবি

@ ফোবিয়াস ওহো !! কুল। আমার এটি আরও কিছু অন্বেষণ করা দরকার তবে এটি সত্যিই আশাব্যঞ্জক বলে মনে হচ্ছে। এখন এটিকে অনুসন্ধানের সমস্যায় পরিণত করার জন্য ...
অ্যালেক্স শেপার্ড

2

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

  • আপনি এমন একটি ভূখণ্ডের প্রজন্ম বেছে নিতে চাইবেন যেখানে এর নির্দিষ্ট কিছু দিকগুলি কেবল ডাটা মানের ভিত্তিতে তৈরি করা যায়। এটি করা কঠিন নয় তবে আপনার কোনও ভূখণ্ডের প্রজন্ম বেছে নেওয়া দরকার। যেহেতু আমি যে অঞ্চলটিতে কাজ করছি তা ভক্সেল জেনারেশনে, সুতরাং নমুনার হার, টানেলিং পাস, উচ্চতা স্তর ইত্যাদি বিষয়গুলি এমন তথ্য যা ডেটাতে রেখে 'বিবর্তিত' হতে পারে।
  • প্রথম ভাগের সাথে এক সাথে হাতের মুঠোয়। যতক্ষণ আপনি এর বিভিন্ন বৈশিষ্ট্য নির্ধারণ করতে পারবেন ততক্ষণ আপনি প্রজন্মের কোন রূপের সাথে যাচ্ছেন তা গুরুত্বপূর্ণ নয়। আপনি যে ধরণের গেমটি তৈরি করতে চান তার সাথে এই পছন্দটির আরও বেশি কিছু করা উচিত।
  • এখানেই এটি ভেঙে যায়। আমি প্রকৃতপক্ষে পৃথিবীর দিকে তাকানো এবং "ওহ এটি দুর্দান্ত" এর কোনও লোককে বাদ দিয়ে এটিকে পরিমাপ করার কোনও উপায় আমি ভাবতে পারি না। তবে এটি কম্পিউটারটিকে নিজস্ব স্ব पुनरावृत्ती করে মুছে দেয়। এটি এও বোঝায় যে আপনি প্রজন্মের এই ফর্মটি শেষ পর্যন্ত একটি একক বিশ্ব তৈরি করতে ব্যবহার করতে যাচ্ছেন, প্রতিবার এলোমেলো একটির বিপরীতে 'সেরা' সন্ধান করছেন।

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

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


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

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

0

এটি কোন ধরণের অঞ্চল তৈরি করতে হবে? (উচ্চতা ম্যাপ, ভার্টেক্স গ্রাফ, ...)

অবশ্যই একটি ভার্টেক্স গ্রাফ (একটি জাল), এটি কমপ্যাক্ট স্টোরেজ-ভিত্তিক এবং চাহিদা অনুসারে জঞ্জাল করা যেতে পারে (পরীক্ষামূলক)।

আপনি কোনও উপায়ে জেনারেটরকে এমন উপায়ে কীভাবে উপস্থাপন করবেন যাতে গাছের মধ্যে পার্স করা যায়?

সেলুলার অটোমেটা। আমি দুটি বাস্তবায়ন সম্পর্কে ভাবতে পারি:

  1. সুনির্দিষ্ট-অটোমাতার উপাদানগুলির সাথে নিয়ম-সেট অটোমাতা (যখন বর্তমান পরিস্থিতি যেমন পাল্টা বা নিষ্ক্রিয় সময়ের চেষ্টা করা হয় তখন বিবেচনায় নেওয়া হয়)।

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

নিয়ম-সেট নিজেই একটি শাখা-প্রশাখার সিদ্ধান্ত গাছ বা সাধারণ কমান্ড ব্যাচ হিসাবে উপস্থাপিত হতে পারে (এটি কাজ করবে কিনা তা নিশ্চিত নয়)

এটি প্রতিটি নোডের জন্য কেবল একটি নিয়ম সেট

  1. বিশ্ব-বিল্ডার। প্রতিটি একক নোডের জন্য সলভার প্রয়োগ করার পরিবর্তে আপনি সেগুলির মধ্যে কেবল একটি গুচ্ছ তৈরি করতে পারেন এবং তাদের জাল নেভিগেট করার অনুমতি দিতে পারেন।

    • প্রতিটি বিল্ডারের নিজস্ব নিয়ম-সেট থাকে
    • অন্য একজন নির্মাতার দখলে নেওয়া নোডে প্রবেশ করতে তাদের আটকাবেন
    • প্রতিটি নির্মাতাকে গাছের একটি শাখা হিসাবে প্রতিনিধিত্ব করা যেতে পারে
    • বিবর্তনের সময় বিল্ডাররা সদৃশ হতে পারে

তবুও, আমি আশঙ্কা করছি যে দ্বিতীয় পদ্ধতির প্রথমটির দ্বারা সমর্থন করা দরকার: প্রাথমিক এলোমেলোতা স্মুথ করা দরকার এবং নির্মাতারা কৌশলটি করতে পারেন কিনা তা সম্পর্কে আমি নিশ্চিত নই। প্রতিটি জীবিত কোষের সর্বোপরি মাইটোকন্ড্রিয়া থাকে।

কোনও সমাধানের ফিটনেসটি মূল্যায়নের জন্য কী ব্যবহার করা হবে?

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

আমার জাল জেনারেটরের সাথে আমার নিজের জন্য এটি চেষ্টা করতে হবে / যখন কিছুটা অতিরিক্ত সময় থাকে =)

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