আপনার সমস্যাটি মনে হচ্ছে না, "" এজেন্টদের "যোগফলটি হ'ল শক্তির একটি বিচ্ছিন্ন অংশ সরবরাহ করে বা প্রতিটি একক দাবির জন্য কিছুই দেয় না ...", ঠিক? অথবা আপনি আমাকে বুঝতে পারেন না। সুতরাং আমি আমার সমস্যাটি আরও ভালভাবে বর্ণনা করার চেষ্টা করব, কারণ আমি একটি সমাধান পেয়েছি।
আমার সমস্যায়, আমার এজেন্টগুলির একটি সেট রয়েছে যেখানে প্রত্যেকের কাছে কিছু নির্দিষ্ট সংস্থার বাজেট থাকে, যারা কাজগুলির ব্যয় ভাগ করে নিতে পারে, যা 1 বার "সম্পাদিত" হওয়া উচিত বা না হওয়া (বহু-থেকে-বহু-অ্যাসাইনমেন্ট প্রয়োজন ছাড়াই) প্রতিটি কাজ "চালানো")। এর অর্থ: টাস্ক এক্সের জন্য এজেন্টদের আংশিক সমাধানের যোগফল টাস্ক এক্সের ব্যয়ের চেয়ে কম বা সমান হওয়া উচিত। উদ্দেশ্য হ'ল এজেন্টরা প্রদান করতে পারে এমন সর্বাধিক মান সহ কাজের সেটটি সন্ধান করা।
আমি গ্যামস সফটওয়্যার নিয়ে কাজ করছি তাই আমি এটিকে গ্যামস-স্টাইলে বর্ণনা করি: এজেন্ট সেট করুন, টি টাস্কগুলির প্যারামিটার ব্যয় (টি), মান (টি) প্যারামিটার সংস্থান (ক)
পজিটিভ ভেরিয়েবল y (ক, টি) (নন-ইনট), এজেন্টের অংশ টাস্ক টি উদ্দেশ্য ব্যয়ের জন্য:
maxvalue =e= sum((a,t), value(t) * y(a,t) / cost(t) );
agentresource_max_constraint(a).. sum(t, y(a,t)) =l= resources(a);
taskcost_max_constraint.. sum(a, y(a,t)) =l= cost(t);
আমি যেমন লিখেছি, আমার একটি সমাধান ছিল তবে আংশিক টাস্ক সমাধানগুলি কীভাবে পৃথক করা যায় তা আমি জানতাম না। তবে এখন আমি জানতে পেরেছি যে আমি একটি দিয়ে বাধা তৈরি করতে পারি
বাইনারি পরিবর্তনশীল z(t)
taskcost_bin_constraint z(t) =e= sum(a, y(a,t)) / cost(t);
sum(a, y(a,t)) / cost(t)
সমীকরণ গঠনে 0 এবং 1 এর মধ্যে কিছু হয় এবং এই সীমাবদ্ধতার দ্বারা z
1 এর 1 এবং 1 এর চেয়ে কম 0 এর জন্য এই taskcost_bin_constraint
উদ্দেশ্যটি হ'ল :
maxvalue =e= sum(t, value(t) * z(t));
আমি ভাবছিলাম কিন্তু এটি কাজ করে এবং আমাকে একটি সীমাবদ্ধতার অধীনে আরও ভাল সমাধান দেয় যাতে কোনও কাজ পূর্ণ করা যায় না।
হয়তো আপনিও এ জাতীয় বাধা যুক্ত করতে পারেন? 0 থেকে 1 এর মধ্যে মান সহ একটি অভিব্যক্তিতে প্রকাশিত দাবিগুলি হুবহু পূর্ণ করার জন্য একটি প্রতিবন্ধক।