বানান ingালাই - প্রতি সেকেন্ডে ক্ষতি কীভাবে অনুকূল করা যায়


23

কল্পনা করুন আমাদের কাছে একটি উইজার্ড রয়েছে যা কয়েক মন্ত্র জানে। প্রতিটি স্পেলের 3 টি বৈশিষ্ট্য রয়েছে: ক্ষয়ক্ষতি, শীতল হওয়ার সময় এবং একটি সময়। বেশ স্ট্যান্ডার্ড আরপিজি স্টাফ।

Cooldown সময়: আবার সেই বানানটি কাস্ট করতে সক্ষম হওয়ার আগে যে পরিমাণ সময় (টি) লাগে। ক্যাসল শুরু হওয়ার সাথে সাথে একটি স্পেল "কোলডাউন" হয় on

Castালাইয়ের সময়: একটি বানান ব্যবহার করতে সময় (টি) সময় লাগে takes উইজার্ড যখন কিছু কাস্ট করছে তখন অন্য একটি স্পেল কাস্ট করা যায় না এবং এটি বাতিল করা যায় না।

প্রশ্নটি হ'ল: আপনি বিভিন্ন ধরণের মন্ত্রের সাহায্যে ক্ষয়ক্ষতি কীভাবে সর্বাধিক করবেন?

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

উদাহরণ স্বরূপ,

  1. ফায়ারবল: 3000 ক্ষতি, 3 দ্বিতীয় castালাই সময়, 6 সেকেন্ড শীতল।

  2. ফ্রস্টবোল্ট: 20 টি ক্ষতি, 4 দ্বিতীয় castালার সময়, 4 সেকেন্ড কুল ডাউন।

  3. ফায়ারব্লাস্ট: 3 টি ক্ষতি, 3 সেকেন্ডের castালার সময়, 3 সেকেন্ড কুল ডাউন।

এই ক্ষেত্রে আপনার সেকেন্ডে ক্ষতি বেশি হয় যদি আপনি ফ্রস্টবোল্টের পরিবর্তে নিম্ন ডিপিসিটি স্পেল (ফায়ারব্লাস্ট) যেতে চান higher সুতরাং আমরা অবশ্যই একটি বানান চয়ন ফলাফল বিবেচনা করা উচিত। বিকল্প পাঠ

নিম্নলিখিত উদাহরণে "ওভার কাস্টিং" এবং "অপেক্ষার" ক্ষেত্রে রয়েছে। বিকল্প পাঠ


আমি কেন এই পরিস্থিতিতে ১-০-১১ করব? কেন 1-2-1-1 না? ২-০-৩-১১ কেন নয়, যা ১-১-১-১-এক্সের চেয়ে বেশি দক্ষ যদি ১-১-১-১ একক লক্ষ্যটিকে হত্যা না করে?

@ জো ফ্রেসনিগ: এটি নির্দেশ করার জন্য ধন্যবাদ Thanks আমার উদাহরণে একটি ভুল ছিল। এটি এখন মাত্র 2 টি ক্ষেত্রে সরলীকৃত।
অ্যারোনফায়ার

1
লোভী, যখনই সম্ভব সর্বাধিক উপলব্ধ ডিপিএস বানান চয়ন করুন। অন্যান্য যুক্তি ত্যাগ করা। অপেক্ষা করছে।
অ্যারোনফায়ার

1
শুধু জল কাদা দিতে। এমন একটি স্পেল বিবেচনা করুন যা ∞ ক্ষতি করে তবে কাস্ট করতে 50 সেকেন্ড সময় নেয়। এটি ডিপিএস / ডিপিসিটি হ'ল but, তবে 50 সেকেন্ডেরও কম সময়ে যদি অন্য উপায়ে লক্ষ্য করে হত্যা করা যায় তবে এটি কখনই বাছাই করা উচিত নয়।
deft_code

1
আপনি প্রতারিত এর প্রতি সংযোগ আছে উচিত math.stackexchange.com/questions/10414/...
Sparr

উত্তর:


23

সমস্ত এআই অনুসন্ধান!

আপনি যখন এআই-এর সাহসের সাথে .োকেন এটি আশ্চর্যজনক যে এটির কতটুকু অনুসন্ধান করা

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

এই পরামিতিগুলিকে ইউনিফর্ম ব্যয় অনুসন্ধান (ইউসিএস) এবং প্রেস্টো, গ্যারান্টিযুক্ত অনুকূল যুদ্ধের পরিকল্পনায় প্লাগ করুন । এমনকি যদি আপনি কোনও হিউরিস্টিক নিয়ে আসতে পারেন তবে আরও ভাল with এ * বা আইডিএ * এবং আপনি একই উত্তরটি আরও দ্রুত পাবেন।

ইউসিএস ব্যবহারের আরও কিছু সুবিধা হ'ল এটি যে আপনি কেবল 3 ভেরিয়েবল সরবরাহ করেছেন তার চেয়ে অনেক জটিল পরিস্থিতিতে অনুকূল castালাই অর্ডারটি খুঁজে পেতে পারে। আরও কিছু বিষয় যা সহজেই যুক্ত করা যায়:

  • সময়ের সাথে সাথে ক্ষতি
  • অন্যান্য বানানের কোলডাউন হ্রাস করতে মন্ত্রকে রিফ্রেশ করুন
  • তাড়াতাড়ি বানান অন্য মন্ত্রকে আরও দ্রুত কাস্ট করে তোলে।
  • ড্যামেজ বুস্টার অন্য মন্ত্রকে আরও ক্ষতির কারণ করে।

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


2

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


1

আপনাকে 'কাস্টিং টাইমের প্রতি ইউনিট ক্ষতি' (ডিপিসিটি) হিসাবে বিবেচনা করতে হবে - উদাহরণস্বরূপ, 3 সেকেন্ডের কাস্ট সহ একটি ফায়ারবল এবং 3000 ক্ষতি করলে 1000 ডিপিসিটি হবে do

যদি আপনি কন্ডোডাউনটি ingালার আগে 3 সেকেন্ড অপেক্ষা করতে থাকেন তবে এটি 500 ডিপিসিটি হ্রাস পাবে (3000 ক্ষতি, ওয়েটিং সহ মোট 6 সেকেন্ড দ্বারা বিভক্ত)

সুতরাং আপনার কেবলমাত্র প্রতিটি স্পেলের ক্ষতি-প্রতি-কাস্ট-সময় নির্ধারণ করতে হবে, কোলডাউনটির জন্য কোনও অবশিষ্ট অপেক্ষা সহ wait সর্বোচ্চ ডিপিসিটি দিয়ে একটিটি চয়ন করুন, প্রয়োজনে অপেক্ষা করুন, তারপরে এটি নিক্ষেপ করুন। বস মারা না যাওয়া পর্যন্ত পুনরাবৃত্তি করুন :)


সমস্যাটি হ'ল ডিপিসিটি খুব বিভ্রান্তিকর হতে পারে। উদাহরণস্বরূপ বলুন আমরা মিশ্রণে আরও 2 টি স্পেল যুক্ত করি ফায়ারবল: 3000 ক্ষতি, 3 সেকেন্ডের cast ক্ষতি, 3 দ্বিতীয় 3ালাই, 3 দ্বিতীয় কোলডাউন, ডিপিসিটি: 1 (মনে রাখবেন, কোলডাউন স্পেল কাস্ট করার মুহুর্তে শুরু হয়) তবুও বানান # 3 এর কম ডিপিসিটি থাকলেও এটি উচ্চ ডিপিএসের ফলস্বরূপ (১-০-১১-৩ ..) ।) বানান # 2 (1-2-1-2 ...) এর চেয়ে বেশি।
aaronfarr

1

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

আপনি সবসময় সমীকরণে অন্য উপাদান চাপিয়ে দিতে পারেন। মানা / ম্যাজিক পয়েন্টস প্লেয়ারকে এই পয়েন্টগুলির ব্যবহারের পক্ষে কি লাভজনক কিনা তা নির্ধারণের মাধ্যমে এই উদ্দেশ্যে কাজ করতে পারে।

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


0

এই অ্যালগরিদমটি বের করা হয়েছে যা আমার উদ্দেশ্যগুলির জন্য ভাল কাজ করে।

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

আমার অ্যালগোরিদম কেবলমাত্র সর্বোচ্চ ডিপিএস সহ মন্ত্রের ক্রমটি প্রদান করে। এটি একটি দ্রুত অ্যালগরিদম কারণ এটি যে সেটটি আপনি অনুসরণ করছেন তার আকারটি হ্রাস করে, অন্যান্য অনুসন্ধান গাছের কৌশলগুলির জ্ঞানের প্রয়োজন হয় না।

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

সুতরাং এটি বেসল স্পেলটি কন্ডাউনডে থাকা অবস্থায় অন্যান্য বানানে পূরণের বিষয় হয়ে ওঠে। (কাস্ট সময়) এবং (কলোডাউন - castালার সময়) এর মধ্যে। তবে কিছু ওভারল্যাপিং ঘটতে পারে (উপরের নিয়ম 2 টি মিথ্যা)।

এটি 2 নিয়ম লঙ্ঘন করে না এমন সমস্ত বানানের সিকোয়েন্সগুলি সন্ধান করার জন্য এটি সমস্ত বেস-বেসল স্প্যানের মাধ্যমে পুনরাবৃত্তি করার বিষয়টি হয়ে যায়।

যে মন্ত্রগুলি ওভারল্যাপ করে তার জন্য অবশ্যই বেসলাইন বানানটি করতে পারে তার সম্ভাব্য ক্ষতির জন্য তাদের অবশ্যই শাস্তি দিতে হবে (এটির সর্বোচ্চ ক্ষতি পর্যন্ত)।

উদাহরণস্বরূপ, 2 বানান নিন

1: 300 ড্যামেজ, 3 এস কাস্ট টাইম, 10 সেকেন্ড

2: 290 ক্ষতি, 3s timeালাই সময়, 3 এস cooldown

সর্বাধিক ক্ষতিটি 1 - 2 - 2 - 2 সিকোয়েন্স থেকে আসে যা সম্ভাব্য # 1 কাস্টের মধ্যে 2 সেকেন্ডের ওভারল্যাপের কারণ হয়। তবে এটি এখনও উপকারী কারণ আপনি যদি তৃতীয় বানানটি না ফেলে (যেমন 1 - 2 - 2) আপনি 1 সেকেন্ড বাদ দিয়ে 880 ক্ষতি করবেন। যদি আপনি অতিরিক্ত # 2 বানানটি ফেলে দেন তবে আপনি 1170 - # 1 এর 2 সেকেন্ড যা 200 হ'ল তাই 970 ক্ষতিটি আপনার আপেক্ষিক ক্ষতি।


-2

আপনি একটি সাধারণ "সুরক্ষা স্তর" স্টাইলের সুইচ কেস করতে পারেন।

এটি আমার মাথার শীর্ষের বাইরে তাই আমার ক্লান্ত রাষ্ট্রের চিন্তার মাত্রা ছাড়িয়ে যুক্তি ত্রুটিগুলি থেকে সাবধান থাকুন তবে আমি আশা করি এটি আপনাকে শুরু করতে পারে।

ধরে নিলাম আপনার সময়টি ব্লক ইন্টিজারে হয়েছে -

// after casting spell
int remainingTime = (coolDown - castTime);
switch(spellJustCast)
{
  // assuming the cast method will have some input validation for whether the spell
  // is off cooldown or not, pass the time as a parameter
  case 3 : castSpell1(remainingTime);
           castSpell2(remainingTime);
           break;
  case 1 : castSpell2(remainingTime);
           castSpell3(remainingTime);
           break;
  case 2 : castSpell1(remainingTime);
           castSpell3(remainingTime);
           break;
  default: System.out.println("Debug!");
           break;
}

কিছু পদ্ধতি কল আপনার বানানের সময়গুলির কারণে অপ্রয়োজনীয়, তবে সর্বদা এভাবে আপডেটের সুযোগ থাকে।

সম্পাদনা: আমি ঠিক বুঝতে পেরেছি, নতুন বানানটি কাস্ট করার পরে আপনার অবশিষ্ট সময়টি পুনরায় সেট করতে হবে, সম্ভবত এটি সেরা শ্রেণীর বৈশিষ্ট্য / ক্ষেত্র তৈরি করা এবং কাস্টস্পেল পদ্ধতিতে কল থেকে সেট করা ভাল।


আপনি এখানে কী পেতে চাইছেন তা সত্যিই আমার কোনও ধারণা নেই, তবে কোনও আধুনিক গেম ইঞ্জিনের কাস্টস্পেল 1 এবং কাস্টস্পেল 2 এর মতো ফাংশন নেই।

1
@ জো ফ্রেসনিগ আমি তার নিজস্ব কাস্টম গেম ক্লাসগুলিতে তার নিজস্ব পদ্ধতি হিসাবে বোঝাতে চেয়েছি, এটি কেবল একটি বিমূর্ত উদাহরণ, বিস্তারিত নয়।
কিমুলি

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

পছন্দ করুন আমি কেবল একটি উপায় দিয়ে যাচ্ছি যাতে সমস্যাটি সমাধান করা যায়। এই উদাহরণটি জাভাতে লেখা হয়েছে, কোনও ইঞ্জিন বা নির্দিষ্ট কাঠামোর জন্য নয়। আপনি যদি বলেন তবে এটি প্রয়োগ করা না গেলে, আমার উত্তর অকার্যকর।
কিমুলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.