সূচক
-
Optimization
(ইন্টারফেস) -
DesignShippingNetworkRequest
(বার্তা) -
DesignShippingNetworkResponse
(বার্তা) -
SolveMathOptModelRequest
(বার্তা) -
SolveMathOptModelResponse
(বার্তা) -
SolveShiftGenerationRequest
(বার্তা) -
SolveShiftGenerationResponse
(বার্তা) -
SolveShiftSchedulingRequest
(বার্তা) -
SolveShiftSchedulingResponse
(বার্তা)
অপ্টিমাইজেশান
একটি ওয়ান প্ল্যাটফর্ম API উচ্চ-স্তরের অপারেশন গবেষণা সমস্যার জন্য অপ্টিমাইজেশান সমাধানকারীর একটি সেট প্রকাশ করে। MOE:begin_strip
ডিজাইন শিপিং নেটওয়ার্ক |
---|
প্রদত্ত LSNDSP একটি জটিল অপ্টিমাইজেশান সমস্যা যা একটি লাইনার শিপিং নেটওয়ার্কের সর্বোত্তম নকশা এবং সময়সূচী খুঁজে পেতে চায়। লক্ষ্য হল নেটওয়ার্ক পরিচালনার মোট খরচ কমিয়ে আনা, যখন পোর্টের মধ্যে যতটা সম্ভব পণ্যসম্ভারের চাহিদা মেটানো। LSNDSP কে দুটি প্রধান উপসমস্যায় বিভক্ত করা যেতে পারে: নেটওয়ার্ক ডিজাইন এবং সময়সূচী। নেটওয়ার্ক ডিজাইনের উপ-সমস্যা নেটওয়ার্ক দ্বারা পরিবেশন করা পোর্টের সেট, প্রতিটি রুটে মোতায়েন করা জাহাজের সংখ্যা এবং জাহাজগুলি যে রুটগুলি নেবে তা নির্ধারণ করে। শিডিউলিং সাব-সমস্যা জাহাজগুলির জন্য পালতোলা সময়সূচী নির্ধারণ করে, বন্দরগুলির মধ্যে যাত্রা করতে যে সময় লাগে, কার্গো লোড এবং আনলোড করতে যে সময় লাগে এবং বন্দরের মধ্যে কার্গো পরিবহনের চাহিদা বিবেচনা করে। সহজ কথায়, LSNDSP হল কোন পোর্টে পরিষেবা দিতে হবে, কতগুলি জাহাজ ব্যবহার করতে হবে এবং কীভাবে জাহাজের সময়সূচী নির্ধারণ করতে হবে তা নির্ধারণ করার সমস্যা যাতে কার্গো চাহিদা পূরণের জন্য সর্বাধিক আয়ের সময় নেটওয়ার্ক পরিচালনার খরচ কম হয়। LSNDSP-এর একটি চ্যালেঞ্জিং সাবকম্পোনেন্ট হল কার্গো রাউটিং, যা নির্ধারণ করে কোন চাহিদা পূরণ করতে হবে এবং কোন রুটগুলিকে কার্গোতে বরাদ্দ করতে হবে রাজস্ব সর্বাধিক করার জন্য। |
SolveMathOptModel |
---|
ইনপুট মডেল সমাধান করে এবং একবারে ফলাফল প্রদান করে। যখন আপনার কলব্যাক, ইনক্রিমেন্টালিটি এবং সমাধানের অগ্রগতি ট্র্যাক করার প্রয়োজন নেই তখন এটি ব্যবহার করুন। |
সলভশিফট জেনারেশন |
---|
প্রদত্ত |
সল্ভশিফ্ট শিডিউলিং |
---|
প্রদত্ত |
ডিজাইনশিপিং নেটওয়ার্ক অনুরোধ
অনুরোধটি LSNDSP-এর একটি উদাহরণ ধারণ করে এবং এতে অবশ্যই পোর্টের একটি সেট, লেগ প্রার্থীদের একটি সেট, জাহাজের ক্লাসের একটি সেট এবং পূরণ করার জন্য পণ্যের চাহিদার একটি সেট থাকতে হবে।
ক্ষেত্র | |
---|---|
request_id | সমস্যা বা অনুরোধ আইডি. |
solver_parameters | সমাধানকারীর জন্য পরামিতি। |
ports[] | সম্ভাব্য বন্দরের তালিকা যা জাহাজ পরিষেবাগুলিতে ডাকা হবে। অনুরোধে শুধুমাত্র এই তালিকায় থাকা পোর্ট আইডি থাকতে হবে। |
leg_candidates[] | সম্ভাব্য লেগ প্রার্থীদের তালিকা যা জাহাজ পরিষেবাগুলিতে যোগ করা হবে। অনুরোধে শুধুমাত্র লেগ প্রার্থীর আইডি থাকতে হবে যা এই তালিকায় আছে। |
vessel_classes[] | জাহাজ পরিষেবা সঞ্চালনের জন্য জাহাজ ক্লাসের তালিকা। মনে রাখবেন যে একই শ্রেণীর সমস্ত জাহাজ সম্পূর্ণরূপে বিনিময়যোগ্য। অনুরোধে শুধুমাত্র এই তালিকায় থাকা জাহাজ শ্রেণীর আইডি থাকতে হবে। |
commodity_demands[] | সম্ভাব্য পণ্যের তালিকা (অর্থাৎ কন্টেইনার) যা জাহাজ পরিষেবা দ্বারা পূরণ করা হবে। |
vessel_services[] | বৈধ জাহাজ পরিষেবাগুলির একটি নেটওয়ার্ক (সাধারণত নেটওয়ার্কের বর্তমান অবস্থা) অপ্টিমাইজেশনের জন্য একটি সূচনা পয়েন্ট হিসাবে ব্যবহার করার জন্য প্রদান করা যেতে পারে। |
ডিজাইনশিপিংনেটওয়ার্ক রেসপন্স
প্রতিক্রিয়াটি অনুরোধে পাস করা LSNDSP উদাহরণের সমাধান ধারণ করে। এটিতে জাহাজ পরিষেবা এবং পণ্য চাহিদা পাথগুলির একটি বৈধ নেটওয়ার্ক রয়েছে৷ প্রতিটি পায়ের মধ্য দিয়ে যাওয়া মোট পণ্যের চাহিদা এই পায়ে পরিবেশনকারী জাহাজ শ্রেণীর ক্ষমতার বেশি হতে পারে না। মনে রাখবেন যে চাহিদা পূরণ না করে কোনো জাহাজ পরিষেবা না থাকা সবসময়ই লাইনার শিপিং নেটওয়ার্ক ডিজাইন এবং সময় নির্ধারণের সমস্যার একটি সম্ভাব্য সমাধান।
ক্ষেত্র | |
---|---|
request_id | অনুরোধের আইডি যেটির সাথে এই প্রতিক্রিয়া যুক্ত। |
vessel_services[] | জাহাজ পরিষেবা নেটওয়ার্ক. প্রতিটি জাহাজের শ্রেণীর জন্য, ব্যবহৃত জাহাজের মোট সংখ্যা এই শ্রেণীর জন্য উপলব্ধ জাহাজের সংখ্যা অতিক্রম করতে পারে না। |
commodity_demand_paths[] | সমস্ত পণ্য চাহিদা পথের তালিকা যার মাধ্যমে ইতিবাচক পণ্য চাহিদা পাঠানো হয়। নোট করুন যে কিছু পণ্য চাহিদা আইডি অন্তর্ভুক্ত নাও হতে পারে যদি কোনো চাহিদা পাঠানো না হয়। বিকল্পভাবে, একটি পণ্য চাহিদা আংশিকভাবে পূরণ করা যেতে পারে. প্রতিটি পণ্যের চাহিদার জন্য, মোট পরিপূর্ণ পরিমাণ মোট চাহিদার বেশি হতে পারে না। অবশেষে, পণ্য_চাহিদা_পথগুলি জাহাজের_পরিষেবাগুলির উপর নির্ভর করে (পণ্য চাহিদার সংজ্ঞা দেখুন)। |
SolveMathOptModelRequest
MathOpt এ একটি unary রিমোট সমাধানের জন্য অনুরোধ।
ক্ষেত্র | |
---|---|
solver_type | ঐচ্ছিক। সংখ্যাগতভাবে সমস্যা সমাধানের জন্য সমাধানকারী প্রকার। মনে রাখবেন যে যদি একটি সমাধানকারী মডেলের একটি নির্দিষ্ট বৈশিষ্ট্য সমর্থন না করে, তাহলে অপ্টিমাইজেশন পদ্ধতি সফল হবে না। |
model | প্রয়োজন। সমাধান করার জন্য অপ্টিমাইজেশন সমস্যার একটি গাণিতিক উপস্থাপনা। |
parameters | ঐচ্ছিক। একটি একক সমাধান নিয়ন্ত্রণ করার পরামিতি। enable_output প্যারামিটারটি বিশেষভাবে পরিচালনা করা হয়। সমাধানকারীদের জন্য যারা বার্তা কলব্যাক সমর্থন করে, এটিকে সত্যে সেট করলে সার্ভার একটি বার্তা কলব্যাক নিবন্ধন করবে। ফলস্বরূপ বার্তাগুলি SolveMathOptModelResponse.messages এ ফেরত দেওয়া হবে। অন্যান্য সমাধানকারীদের জন্য, enable_output সত্যে সেট করার ফলে একটি ত্রুটি দেখা দেবে। |
model_parameters | ঐচ্ছিক। ইনপুট মডেলের জন্য নির্দিষ্ট একটি একক সমাধান নিয়ন্ত্রণ করার পরামিতি (মডেল স্বাধীন প্যারামিটারের জন্য SolveParametersProto দেখুন)। |
SolveMathOptModelResponse
MathOpt এ একটি unary রিমোট সমাধানের জন্য প্রতিক্রিয়া।
ক্ষেত্র | |
---|---|
result | অনুরোধে মডেল সমাধানের আউটপুট বর্ণনা। |
messages[] | যদি SolveParametersProto.enable_output ব্যবহার করা হয়ে থাকে, তাহলে এতে সমাধানকারীদের জন্য লগ বার্তা থাকবে যা বার্তা কলব্যাক সমর্থন করে। |
সমাধান শিফট জেনারেশন অনুরোধ
শিফট জেনারেশন সমস্যা সমাধানের জন্য অনুরোধ। শিফট জেনারেট করার নিয়ম প্রতিটি ShiftTemplate এ বর্ণিত আছে। প্রতিক্রিয়াতে একাধিক শিফট একটি একক ShiftTemplate থেকে তৈরি করা যেতে পারে। সলভার দ্বারা উত্পন্ন এবং নির্বাচিত শিফটগুলিকে অবশ্যই ShiftTemplate-এ বর্ণিত নিয়মগুলি মেনে চলতে হবে এবং নির্দিষ্ট কর্মচারীর চাহিদা পূরণ করতে হবে।
ক্ষেত্র | |
---|---|
solver_config | ঐচ্ছিক। সমাধানকারীর জন্য পরামিতি। |
shift_templates[] | প্রয়োজন। শিফট জেনারেট করার নিয়ম উল্লেখ করে শিফট টেমপ্লেটের সেট। |
employee_demands[] | প্রয়োজন। মোট কর্মচারীদের দাবি যে |
সলভশিফট জেনারেশন রেসপন্স
শিফট জেনারেশন সমস্যার জন্য প্রতিক্রিয়া। যদি solution_status
ফেরত দেওয়া হয় SOLVED
, তাহলে সমাধানকারীর দ্বারা উত্পন্ন বৈধ শিফটের একটি সেট employee_schedules
এ ফেরত দেওয়া হয়। একটি বৈধ শিফট সময়সূচীর জন্য, নিম্নলিখিত বৈশিষ্ট্যগুলি ধারণ করে:
-
employee_schedules
এ উত্পন্ন প্রতিটি শিফট সংশ্লিষ্টShiftTemplate
এ উল্লিখিত নিয়ম মেনে চলে। - প্রতিটি শিফটে নির্বাচিত প্রতিটি ইভেন্ট সংশ্লিষ্ট
ShiftTemplate.Event
এ উল্লেখিত নিয়ম মেনে চলে। - একই ShiftTemplate থেকে উৎপন্ন শিফটের সেটে নিয়োগকৃত কর্মচারীর মোট সংখ্যা সেই টেমপ্লেটের
maximum_employee_count
বেশি নয়। - নির্ধারিত কর্মচারীদের সেট প্রতিটি নির্দিষ্ট ব্যবধানে চাহিদা কভার করে।
ক্ষেত্র | |
---|---|
solution_status | ফিরে আসা সমাধানের অবস্থা। যদি |
employee_schedules[] | প্রতিটি সময়সূচীতে নির্ধারিত কর্মচারীর সংখ্যা সহ সমাধানকারী দ্বারা উত্পন্ন শিফটের সেট। |
demand_coverage_violations[] | প্রদত্ত |
সল্ভশিফ্ট শিডিউলিং রিকোয়েস্ট
কর্মশক্তি সময়সূচী API জন্য অনুরোধ. সর্বনিম্নভাবে, অনুরোধটি কর্মচারীদের একটি সেট, শিফটের একটি সেট, একজন কর্মচারী সম্পাদন করতে পারে এমন সম্ভাব্য ভূমিকাগুলির একটি সেট এবং কভারেজ প্রয়োজনীয়তার একটি সেট নির্দিষ্ট করে৷ কভারেজ প্রয়োজনীয়তা নির্দিষ্ট করে, একটি সময় উইন্ডোতে, প্রতিটি ভূমিকা পালন করার জন্য প্রয়োজনীয় কর্মচারীর সংখ্যা। একটি শিফটে নিযুক্ত কর্মচারীদেরও সেই শিফটের জন্য একটি (এবং শুধুমাত্র একটি) ভূমিকাতে নিয়োগ করা হয় এবং কর্মচারীদের দুটি ওভারল্যাপিং শিফটে নিয়োগ করা যায় না। কোন শিফট অ্যাসাইনমেন্ট বৈধ করে সে সম্পর্কে আরও বিশদ বিবরণের জন্য নীচের SolveShiftSchedulingResponse
দেখুন।
সমস্যাটিকে আরও সীমাবদ্ধ করার জন্য প্রতিটি কর্মচারীর জন্য অতিরিক্ত সময় নির্ধারণের সীমাবদ্ধতা নির্দিষ্ট করা যেতে পারে। সমস্ত সময়সূচী সীমাবদ্ধতা এবং কভারেজ প্রয়োজনীয়তা একটি অগ্রাধিকার স্তর দেওয়া হয় (বাধ্যতামূলক, উচ্চ, মাঝারি, নিম্ন)। অগ্রাধিকার স্তর PRIORITY_MANDATORY
সহ সমস্ত সীমাবদ্ধতা সমাধানকারীকে অবশ্যই সন্তুষ্ট করতে হবে৷ অন্য কোনো অগ্রাধিকারের সাথে সীমাবদ্ধতা সমাধানকারীর দ্বারা লঙ্ঘন করা যেতে পারে, তবে এই লঙ্ঘনগুলি অগ্রাধিকারের ক্রমে ন্যূনতম করা হয়। প্রতিটি সীমাবদ্ধতার জন্য অগ্রাধিকার স্তরগুলি কীভাবে পরিচালনা করা হয় সে সম্পর্কে আরও বিশদ বিবরণের জন্য Priority
তালিকা দেখুন।
সমাধানকারী প্রদত্ত সীমাবদ্ধতার উপরে প্রতিটি কর্মচারীর জন্য ShiftPreference.preference
মান সর্বাধিক করার চেষ্টা করবে। সমাধানকারী আরও পছন্দগুলি সন্তুষ্ট করার জন্য কোনও সীমাবদ্ধতা লঙ্ঘন করবে না; এটি শুধুমাত্র একটি সীমাবদ্ধতা লঙ্ঘন করবে যদি প্রদত্ত সীমাবদ্ধতার অধীনে সময় নির্ধারণ অ্যাসাইনমেন্ট অকার্যকর হয়।
সময় সম্পর্কে দ্রষ্টব্য: সমস্যার সমস্ত সময় তারিখ সময় বার্তা ব্যবহার করে নির্দিষ্ট করা হয়েছে৷ এই বার্তাটিতে একটি TimeZone ক্ষেত্র অন্তর্ভুক্ত রয়েছে। টাইমজোনটিকে UTC বলে ধরে নেওয়া হয় যদি না ব্যবহারকারীর দ্বারা অন্যথায় নির্দিষ্ট করা হয়। তারিখের সময় বার্তাগুলি শুধুমাত্র মিনিটে নির্দিষ্ট করা উচিত; সমস্ত সেকেন্ড এবং ন্যানো উপেক্ষা করা হয়।
ক্ষেত্র | |
---|---|
request_id | সমস্যা বা অনুরোধ আইডি. |
solve_parameters | সমস্যার একটি একক সমাধান নিয়ন্ত্রণ করার পরামিতি। |
employees[] | সমস্ত উপলব্ধ কর্মচারী নির্ধারিত হবে. |
shifts[] | সময়সূচী গঠনের জন্য সমস্ত পরিবর্তন। |
coverage_requirements[] | সমগ্র পরিকল্পনা দিগন্তের জন্য কভারেজ প্রয়োজনীয়তা. এগুলি নির্দিষ্ট করে যে কর্মচারীদের প্রতিটি ভূমিকা পালন করতে হবে, বা একটি দক্ষতা থাকতে হবে, হয় একটি টাইম উইন্ডো বা শিফট আইডিগুলির একটি তালিকার সময়৷ সমস্ত কভারেজ প্রয়োজনীয়তা অবশ্যই টাইম উইন্ডো বা শিফট আইডিগুলির একটি তালিকার সাথে নির্দিষ্ট করতে হবে (কিন্তু উভয়ই নয়)৷ কভারেজ প্রয়োজনীয়তার জন্য সময় উইন্ডো (যদি দেওয়া হয়) প্রতিটি প্রদত্ত অবস্থানের জন্য ওভারল্যাপ করতে পারে না। এই প্রতিটি সীমাবদ্ধতার জন্য ডিফল্ট অগ্রাধিকার স্তর হল ভূমিকার প্রয়োজনীয়তার জন্য |
role_ids[] | কর্মশক্তি জুড়ে সম্ভাব্য সমস্ত ভূমিকার তালিকা। প্রতিটি কর্মচারীর কমপক্ষে একটি ভূমিকা থাকতে হবে যা তাদের একটি শিফটের জন্য নিযুক্ত করা যেতে পারে। একটি ভূমিকা একটি শিফটের সময় একটি নির্দিষ্ট কাজের অ্যাসাইনমেন্টকে বোঝায় (যেমন নিবন্ধিত নার্স, এক্সিকিউটিভ শেফ, ওয়েটার, ইত্যাদি)। যখন একজন কর্মচারীকে একটি শিফটে নিযুক্ত করা হয়, তখন তাদের একটি একক নির্দিষ্ট ভূমিকাতেও বরাদ্দ করা হয়। |
skill_ids[] | কর্মশক্তি জুড়ে সমস্ত সম্ভাব্য দক্ষতার তালিকা। একটি দক্ষতা বলতে একজন কর্মচারীর যে কোন অতিরিক্ত যোগ্যতা থাকতে পারে যা একটি নির্দিষ্ট নিয়োগযোগ্য কাজের সাথে সম্পর্কিত নয় (যেমন সার্টিফিকেশন, কথ্য ভাষা, ইত্যাদি)। এই তালিকা খালি হতে পারে. যখন একজন কর্মচারীকে একটি শিফটে নিয়োগ করা হয়, তখন তাদের অবশ্যই সেই শিফটের জন্য প্রয়োজনীয় সমস্ত দক্ষতা পূরণ করতে হবে। |
location_ids[] | সময়সূচীতে পরিবর্তনের সেটের জন্য সম্ভাব্য সমস্ত অবস্থানের তালিকা। এই তালিকা খালি হতে পারে. বিভিন্ন অবস্থান নির্দিষ্ট করা উপযোগী হতে পারে যখন, উদাহরণস্বরূপ, একজন নার্স ম্যানেজার একটি হাসপাতালে বিভিন্ন ইউনিট জুড়ে অনেক নার্সের সময়সূচী করতে চান বা, অন্য একটি উদাহরণের জন্য, একজন হোটেল ম্যানেজার একাধিক হোটেলে কর্মচারীদের সময়সূচী করতে চান। |
budget_requirements[] | সময়সূচী সমস্যার জন্য বাজেট স্পেসিফিকেশন। এই প্রতিটি প্রয়োজনীয়তার জন্য ডিফল্ট অগ্রাধিকার স্তর হল |
assignments_hint[] | সময়সূচী সমস্যায় একটি অস্থায়ী সমাধান (ওরফে সমাধান ইঙ্গিত) হিসাবে ব্যবহার করার জন্য অ্যাসাইনমেন্টগুলি স্থানান্তর করুন। অ্যাসাইনমেন্টের ইঙ্গিতগুলি উপেক্ষা করা হয় যদি অ্যাসাইনমেন্টটি অ-অর্পণযোগ্য স্থানান্তর বা সময়সূচীর অনুরোধের বিরোধিতা করে। |
সলভশিফ্ট শিডিউলিং রেসপন্স
কর্মশক্তি সময়সূচী API-এর জন্য প্রতিক্রিয়া। প্রতিটি প্রতিক্রিয়ার জন্য, shift_assignments
খালি থাকবে যদি solution_status
NOT_SOLVED_DEADLINE_EXCEEDED
বা INFEASIBLE
হয়। যদি solution_status
ফেরত দেওয়া হয় তা OPTIMAL
বা FEASIBLE
, তাহলে একটি বৈধ শিফট অ্যাসাইনমেন্ট shift_assignments
এ ফেরত দেওয়া হয়। একটি বৈধ শিফট অ্যাসাইনমেন্টের জন্য, নিম্নলিখিত বৈশিষ্ট্যগুলি ধারণ করে:
- অনুরোধে প্রদত্ত কর্মচারীদের সেটে প্রতিটি কর্মচারী আইডি থাকে।
- কর্মচারীকে বরাদ্দ করা প্রতিটি রোল আইডি প্রদত্ত কর্মচারীর জন্য রোল আইডিগুলির সেটে থাকে৷
- অনুরোধে প্রদত্ত শিফটের সেটে প্রতিটি শিফট আইডি থাকে।
- প্রতিটি শিফট আইডি প্রদত্ত কর্মচারীর জন্য অনির্ধারণযোগ্য শিফট আইডিগুলির একটি নয়৷
- একজন কর্মচারীকে কখনই দুটি ওভারল্যাপিং শিফটে নিয়োগ করা হবে না।
- প্রদত্ত সময়সূচীর জন্য, অগ্রাধিকার স্তরের
PRIORITY_MANDATORY
সহ কোনও বাধা বা অনুরোধ লঙ্ঘন করা হয়নি৷
ক্ষেত্র | |
---|---|
request_id | অনুরোধের আইডি যেটির সাথে এই প্রতিক্রিয়া যুক্ত। |
solution_status | ফিরে আসা সমাধানের অবস্থা। যদি সমাধানটি সম্ভাব্য বা অনুকূল না হয় তবে এই প্রোটোর অন্যান্য ক্ষেত্রগুলি খালি হতে পারে৷ যদি স্ট্যাটাসটি NOT_SOLVED_DEADLINE_EXCEEDED হয়, তাহলে একটি সম্ভাব্য সমাধান খুঁজে না পেয়ে বা একটি সম্ভাব্য সমাধান বিদ্যমান আছে কিনা তা নির্ধারণ না করেই সময়সীমা পৌঁছে গেছে। যদি অগ্রাধিকার স্তরের বাধ্যতামূলক সীমাবদ্ধতাগুলি সমস্ত সন্তুষ্ট না করা যায় তবে অনুরোধগুলি অকার্যকর হতে পারে৷ |
shift_assignments[] | সমস্ত অ্যাসাইনমেন্টের তালিকা। প্রতিটি |
status_message | |