الفهرس
Optimization
(واجهة)DesignShippingNetworkRequest
(رسالة)DesignShippingNetworkResponse
(رسالة)SolveMathOptModelRequest
(رسالة)SolveMathOptModelResponse
(رسالة)SolveShiftGenerationRequest
(رسالة)SolveShiftGenerationResponse
(رسالة)SolveShiftSchedulingRequest
(رسالة)SolveShiftSchedulingResponse
(رسالة)
التحسين
واجهة برمجة تطبيقات من نظام أساسي واحد تعرض مجموعة من أدوات حلّ التحسين لمسائل أبحاث العمليات عالية المستوى MOE:begin_strip
DesignShippingNetwork |
---|
حلّ مسألة تصميم شبكة شحن البطانة وجدولتها (LSNDSP) من يمثل LSNDSP مشكلة تحسين معقدة تبحث عن التصميم الأمثل وجدولة شبكة شحن البطانات. الهدف هو تقليل التكلفة الإجمالية لتشغيل الشبكة مع تلبية أكبر قدر ممكن من طلب الشحن بين المنافذ. يمكن تقسيم LSNDSP إلى مشكلتين فرعيتين رئيسيتين: تصميم الشبكة والجدولة. تحدد مشكلة تصميم الشبكة الفرعية مجموعة المنافذ التي ستخدمها الشبكة، وعدد السفن التي سيتم نشرها على كل مسار، والمسارات التي ستسلكها السفن. تحدد مشكلة الجدولة الفرعية جداول الإبحار للسفن، مع الأخذ في الاعتبار الوقت الذي يستغرقه الإبحار بين المنافذ، والوقت الذي يستغرقه تحميل وتفريغ البضائع، والطلب على نقل البضائع بين الموانئ. بعبارة بسيطة، تكمن مشكلة LSNDSP في تحديد الموانئ التي سيتم خدمتها، وعدد السفن التي يجب استخدامها، وكيفية جدولة السفن بحيث يتم تقليل تكلفة تشغيل الشبكة مع زيادة الإيرادات إلى أقصى حد لتلبية طلب الشحن. يعد توجيه البضائع من المكوّنات الفرعية الصعبة في LSNDSP تحديد الطلبات التي يجب تلبيتها والمسارات التي ينبغي تخصيصها للشحن من أجل زيادة الإيرادات إلى أقصى حد. |
SolveMathOptModel |
---|
لحل نموذج الإدخال وعرض النتيجة مرة واحدة. استخدِم هذا الخيار عندما لا تحتاج إلى طلبات معاودة الاتصال أو التزايد أو عندما لا تحتاج إلى تتبُّع مستوى تقدّم عملية الحل. |
SolveShiftGeneration |
---|
تحلّ مشكلة تحويل نوبات العمل من |
SolveShiftScheduling |
---|
تحلّ مشكلة جدولة نوبات العمل الثابتة من |
DesignShippingNetworkRequest
يتضمن الطلب مثيلاً من LSNDSP ويجب أن يحتوي على مجموعة من المنافذ ومجموعة من السلال المرشحة ومجموعة من فئات السفن ومجموعة من طلبات السلع التي يجب الوفاء بها.
الحقول | |
---|---|
request_id |
معرّف المشكلة أو الطلب |
solver_parameters |
معلَمات أداة الحلّ |
ports[] |
قائمة بالمنافذ المحتملة المطلوب طلبها في خدمات السفن. يجب أن يحتوي الطلب فقط على معرّفات المنافذ الواردة في هذه القائمة. |
leg_candidates[] |
قائمة بالمرشحين المحتملين الذين يمكن إضافتهم إلى خدمات السفينة يجب أن يحتوي الطلب فقط على المُعرّفات المرشحة للمراحل الواردة في هذه القائمة. |
vessel_classes[] |
قائمة بفئات السفن لتقديم خدمات السفن. لاحظ أن جميع السفن من نفس الفئة قابلة للتبديل بالكامل. يجب أن يحتوي الطلب فقط على معرّفات فئة السفينة في هذه القائمة. |
commodity_demands[] |
قائمة بالطلبات المحتملة للسلع (أي الحاويات) التي يجب أن تلبيها خدمات السفن. |
vessel_services[] |
يمكن توفير شبكة من خدمات السفن الصالحة (عادةً الحالة الحالية للشبكة) لاستخدامها كنقطة بداية لعملية التحسين. |
DesignShippingNetworkResponse
تحتفظ الاستجابة بالحلّ الخاص بمثيل LSNDSP الذي تم تمريره في الطلب. وهي تحتوي على شبكة صالحة من خدمات السفن ومسارات الطلب على السلع. ولا يمكن أن يتجاوز إجمالي الطلب على السلع التي تمر في كل مرحلة سعة فئة السفينة التي تغطي هذه المرحلة. تجدر الإشارة إلى أنّ عدم توفّر خدمات السفن بدون تلبية طلب معيّن هو دائمًا حل عملي لمشكلة تصميم شبكة شحن السفن وجدولتها.
الحقول | |
---|---|
request_id |
رقم تعريف الطلب الذي يرتبط به هذا الرد. |
vessel_services[] |
شبكة من خدمات السفن. بالنسبة إلى كل فئة سفينة، لا يمكن أن يتجاوز إجمالي عدد السفن المستخدمة عدد السفن المتاحة لهذه الفئة. |
commodity_demand_paths[] |
قائمة بجميع مسارات الطلب على السلع التي يتم من خلالها شحن الطلب الإيجابي على السلع. يُرجى العلم أنّه قد لا يتم تضمين بعض معرّفات الطلب على السلع في حال عدم شحن الطلب. بدلاً من ذلك، يمكن تلبية الطلب على السلع بشكل جزئي. يجب ألا يتجاوز إجمالي الكمية التي تم توصيلها الطلب الإجمالي لكل طلب. أخيرًا، تعتمد commodity_demand_paths على vessel_services (اطّلِع على تعريف CommodityDemandPath). |
SolveMathOptModelRequest
طلب حل أحادي عن بُعد في MathOpt.
الحقول | |
---|---|
solver_type |
اختياريّ. نوع أداة الحلّ لحلّ المسألة رقميًا. يُرجى العِلم أنّه إذا كانت أداة الحلّ لا تتيح ميزة معيّنة في النموذج، لن تنجح عملية التحسين. |
model |
مطلوبة. تمثيل رياضي لمسألة التحسين المطلوب حلها. |
parameters |
اختياريّ. معلَمات للتحكّم في حل واحد. ويتم التعامل مع المعلمةenable_output بشكل محدد. بالنسبة إلى برامج الحل التي تتيح عمليات استدعاء الرسائل، سيؤدي ضبطها على "صحيح" إلى تسجيل الخادم لرد استدعاء الرسالة. سيتم عرض الرسائل الناتجة في SolveMathOptModelResponse.messages. بالنسبة إلى أدوات الحلّ الأخرى، سيؤدي ضبطenable_output على "صحيح" إلى حدوث خطأ. |
model_parameters |
اختياريّ. المعلَمات التي يمكنها التحكّم في حل واحد والخاص بنموذج الإدخال (يُرجى الاطّلاع على SolveParametersProto لمعرفة المعلمات المستقلة في النموذج). |
SolveMathOptModelResponse
ردّ على حل أحادي عن بُعد في MathOpt.
الحقول | |
---|---|
result |
وصف ناتج حل النموذج في الطلب. |
messages[] |
في حال استخدام SolveParametersProto.enable_output، سيحتوي ذلك على رسائل سجلّ أدوات الحلّ التي تتيح عمليات استدعاء الرسائل. |
SolveShiftGenerationRequest
طلب لحل مشكلة "إنشاء التحول". يتم تحديد قواعد إنشاء التحولات في كل ShiftTemplate. يمكن إنشاء تغييرات متعددة في الردّ من ShiftTemplate واحد. يجب أن تتقيّد الورديات التي يتم إنشاؤها واختيارها من خلال أداة الحلّ بالقواعد الموضّحة في ShiftTemplate وتغطية طلب الموظفين المحدّد.
الحقول | |
---|---|
solver_config |
اختياريّ. معلَمات أداة الحلّ |
shift_templates[] |
مطلوبة. مجموعة من نماذج نوبات العمل التي تحدِّد قواعد إنشاء نوبات العمل |
employee_demands[] |
مطلوبة. يشير هذا المقياس إلى إجمالي طلبات الموظفين التي يجب أن تشملها الورديات الناتجة عن " |
SolveShiftGenerationResponse
الردّ على مشكلة "إنشاء نوبات العمل" إذا كانت قيمة solution_status
هي SOLVED
، سيتم عرض مجموعة من التحولات الصالحة التي أنشأتها أداة الحلّ في employee_schedules
. بالنسبة إلى جدول نوبات العمل الصالح، تحتفظ السمات التالية بما يلي:
- تتقيّد كل عملية تبديل يتم إنشاؤها في
employee_schedules
بالقواعد المحدّدة فيShiftTemplate
المقابلة. - يتقيّد كل حدث يتم اختياره في كل وردية بالقواعد المحدّدة في
ShiftTemplate.Event
المقابلة. - لا يتجاوز إجمالي عدد الموظفين المعينين لمجموعة الورديات الناتجة من ShiftTemplate نفسه
maximum_employee_count
من هذا النموذج. - تقوم مجموعة الموظفين المعينين بتغطية الطلب في كل فترة زمنية محددة.
الحقول | |
---|---|
solution_status |
حالة الحلّ الذي تم إرجاعه وإذا لم يكن الحقل |
employee_schedules[] |
مجموعة من نوبات العمل التي تم إنشاؤها بواسطة أداة الحلّ بالإضافة إلى عدد الموظفين المعيَّنين لكل جدول زمني |
SolveShiftSchedulingRequest
طلب واجهة برمجة تطبيقات جدولة القوى العاملة كحد أدنى، يحدد الطلب مجموعة من الموظفين، ومجموعة من نوبات العمل، ومجموعة من الأدوار المحتملة التي يمكن للموظف القيام بها، ومجموعة من متطلبات التغطية. تحدّد متطلبات التغطية، على مدار فترة زمنية معيّنة، عدد الموظفين اللازمين لأداء كل دور. يتم أيضًا تعيين الموظفين المعينين لمناوبة واحدة (فقط واحد) لهذا الوردية، ولا يمكن تعيين الموظفين لنوبتين متداخلتين. يمكنك الاطّلاع على SolveShiftSchedulingResponse
أدناه لمعرفة المزيد من التفاصيل حول العوامل التي تجعل تعيين نوبات العمل صالحًا.
يمكن تحديد قيود جدولة إضافية لكل موظف لتقييد المشكلة بشكل أكبر. يتم منح جميع قيود الجدولة ومتطلبات التغطية مستوى أولوية ("أساسي" و"مرتفع" و"متوسط" و"منخفض"). على أداة الحلّ استيفاء جميع القيود ذات مستوى الأولوية PRIORITY_MANDATORY
. يمكن أن تخالف أداة الحلّ القيود ذات الأولوية الأخرى، ولكن يتم تقليل هذه الانتهاكات حسب ترتيب الأولوية. راجِع التعداد Priority
لمزيد من التفاصيل حول كيفية التعامل مع مستويات الأولوية لكل قيد.
ستحاول أداة الحلّ زيادة قيم ShiftPreference.preference
لكل موظف إلى أقصى حد بما يتجاوز القيود المحدّدة. لن ينتهك الحلّ أحد القيد من أجل تلبية المزيد من التفضيلات، ولن ينتهك القيد إلا إذا كان تعيين الجدولة غير ممكن بموجب القيود المحددة.
ملاحظة حول الوقت: يتم تحديد جميع الأوقات في المشكلة باستخدام الرسالة DateTime. تحتوي هذه الرسالة على حقل منطقة زمنية. يُفترض أن تكون المنطقة الزمنية حسب التوقيت العالمي المنسَّق ما لم يحدّد المستخدم خلاف ذلك. يجب تحديد رسائل التاريخ والوقت بالدقائق فقط، ويتم تجاهل كل الثواني والنانو.
الحقول | |
---|---|
request_id |
معرّف المشكلة أو الطلب |
solve_parameters |
يشير ذلك المصطلح إلى معلَمات للتحكّم في حل واحد للمشكلة. |
employees[] |
ستتم جدولة جميع الموظفين المتاحين. |
shifts[] |
جميع الورديات لتشكيل الجدول الزمني. |
coverage_requirements[] |
متطلبات التغطية لأفق التخطيط بالكامل. تحدد هذه عدد الموظفين الذين يجب عليهم أداء كل دور، أو امتلاك مهارة، خلال فترة زمنية أو قائمة معرفات نوبات العمل. يجب تحديد جميع متطلبات التغطية باستخدام فترات زمنية أو بقائمة من معرّفات نوبات العمل (وليس كليهما). لا يمكن أن تتداخل الفترات الزمنية (إذا تم منحها) لمتطلبات التغطية لكل موقع جغرافي محدّد. مستوى الأولوية التلقائي لكلّ من هذه القيود هو |
role_ids[] |
قائمة بجميع الأدوار المحتملة لمجال العمل. يجب أن يكون لكل موظف دور واحد على الأقل يمكن إسناده لنوبة عمل. يشير الدور إلى تكليف وظيفة معينة أثناء الوردية (مثل ممرض مسجل، وطاهٍ تنفيذي، ونادل، وما إلى ذلك). عندما يتم تعيين موظف في وردية، يتم تكليفه أيضًا بدور واحد محدد. |
skill_ids[] |
قائمة بجميع المهارات الممكنة لمجال العمل. تشير المهارة إلى أي مؤهلات إضافية قد يمتلكها الموظف ولا تتعلق بوظيفة محددة قابلة للتعيين (مثل الشهادات واللغات المنطوقة وما إلى ذلك). وقد تكون هذه القائمة فارغة. عندما يتم تعيين موظف في وردية، يجب عليه تلبية جميع المهارات اللازمة لهذا الوردية. |
location_ids[] |
قائمة بجميع المواقع الجغرافية المحتمَلة لمجموعة الورديات في الجدول الزمني وقد تكون هذه القائمة فارغة. يمكن أن يكون تحديد مواقع جغرافية مختلفة مفيدًا عندما يريد، على سبيل المثال، مدير تمريض، جدولة العديد من الممرضات عبر وحدات مختلفة في مستشفى أو، على سبيل المثال، يريد مدير فندق جدولة الموظفين عبر فنادق متعددة. |
budget_requirements[] |
مواصفات الميزانية لمشكلة الجدولة. مستوى الأولوية التلقائي لكل من هذه المتطلبات هو |
assignments_hint[] |
قم بتبديل المهام لاستخدامها كحل مؤقت (المعروف أيضًا باسم تلميح الحل) إلى مشكلة الجدولة. يتم تجاهل تعديلات المهام إذا كان المهمة تتعارض مع وردية لا يمكن تعيينها أو طلب الجدولة. |
SolveShiftSchedulingResponse
رد على واجهة برمجة تطبيقات جدولة القوى العاملة بالنسبة إلى كل استجابة، سيكون shift_assignments
فارغًا إذا كان solution_status
المعروض هو NOT_SOLVED_DEADLINE_EXCEEDED
أو INFEASIBLE
. إذا كانت قيمة solution_status
المعروضة هي OPTIMAL
أو FEASIBLE
، يتم عرض قيمة shift صالحة في shift_assignments
. بالنسبة إلى تخصيص shift صالح، تحتفظ السمات التالية بما يلي:
- يتم تضمين كل معرّف موظف في مجموعة الموظفين الواردة في الطلب.
- يتم تضمين كل رقم تعريف دور يتم تعيينه للموظف في مجموعة معرّفات الأدوار للموظف المحدّد.
- ويتم تضمين كل رقم تعريف وردية في مجموعة الورديات الواردة في الطلب.
- إنّ كل معرّف وردية ليس واحدًا من معرّفات نوبات العمل غير القابلة للتعيين للموظف المحدّد.
- لن يتم تعيين الموظف أبدًا لنوبتين متداخلتين.
- بالنسبة إلى الجدول الزمني المحدّد، لم تتم مخالفة أي من القيود أو الطلبات ذات مستوى الأولوية
PRIORITY_MANDATORY
.
الحقول | |
---|---|
request_id |
رقم تعريف الطلب الذي يرتبط به هذا الرد. |
solution_status |
حالة الحلّ الذي تم إرجاعه إذا لم يكن الحل مناسبًا أو محسنًا، فقد تكون الحقول الأخرى في هذا النموذج الأوّلي فارغة. إذا كانت الحالة NOT_SOLVED_DEADLINE_EXCEEDED، فهذا يعني أنه تم الوصول إلى الحد الزمني بدون إيجاد حل ممكن أو تحديد ما إذا كان هناك حل ممكن أم لا. قد تكون الطلبات غير قابلة للتنفيذ في حال تعذّر استيفاء جميع قيود مستوى الأولوية MANDATORY. |
shift_assignments[] |
قائمة بجميع المهام يحدّد كل |
status_message |
إذا لم تكن السمة |