الفهرس
Optimization(واجهة)DesignShippingNetworkRequest(رسالة)DesignShippingNetworkResponse(رسالة)SolveMathOptModelRequest(رسالة)SolveMathOptModelResponse(رسالة)SolveShiftGenerationRequest(رسالة)SolveShiftGenerationResponse(رسالة)SolveShiftSchedulingRequest(رسالة)SolveShiftSchedulingResponse(رسالة)
التحسين
واجهة برمجة تطبيقات من منصة One Platform تعرض مجموعة من أدوات الحلّ للتحسينات بشأن مشاكل أبحاث العمليات عالية المستوى وزارة التعليم: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 إلى true إلى حدوث خطأ. |
model_parameters |
اختياريّ. معلَمات للتحكّم في حلّ فردي خاص بنموذج الإدخال (يمكنك الاطّلاع على SolveparametersProto للاطّلاع على المعلَمات المستقلة في النموذج) |
SolveMathOptModelResponse
استجابة لحل أحادي عن بُعد في MathOpt.
| الحقول | |
|---|---|
result |
وصف ناتج حل النموذج في الطلب. |
messages[] |
في حال استخدام SolveparamsProto.enable_output، سيحتوي ذلك على رسائل السجل لأدوات الحل التي تدعم استدعاءات الرسائل. |
SolveShiftGenerationRequest
طلب حلّ مشكلة إنشاء Shift يتم توضيح قواعد إنشاء ورديات في كل نموذج ShiftTemplate. يمكن إنشاء متغيّرات متعددة في الردّ من نموذج ShiftTemplate واحد. يجب أن تلتزم الورديات التي تم إنشاؤها واختيارها من خلال أداة الحلّ بالقواعد الموضّحة في نموذج ShiftTemplate وتغطية طلب الموظفين المحدَّد.
| الحقول | |
|---|---|
solver_config |
اختياريّ. مَعلمات أداة الحلّ |
shift_templates[] |
مطلوبة. مجموعة من نماذج نوبات العمل التي تحدِّد قواعد إنشاء ورديات |
employee_demands[] |
مطلوبة. إجمالي طلبات الموظفين التي يجب أن تغطيها الورديات الناتجة عن " |
SolveShiftGenerationResponse
الاستجابة لمشكلة إنشاء Shift. إذا كانت قيمة solution_status التي تم عرضها هي SOLVED، سيتم في employee_schedules عرض مجموعة من المتغيرات الصالحة التي أنشأتها أداة الحلّ. للحصول على جدول ورديات صالح، تحتوي السمات التالية على:
- تلتزم كل نوبة عمل يتم إنشاؤها في
employee_schedulesبالقواعد المحدّدة فيShiftTemplateالمقابل. - يتقيّد كل حدث يتم اختياره في كل نوبة عمل بالقواعد المحدّدة في
ShiftTemplate.Eventالمقابل. - لا يتجاوز إجمالي عدد الموظفين المعيّنين لمجموعة نوبات العمل التي تم إنشاؤها من نموذج ShiftTemplate نفسه
maximum_employee_countمن هذا النموذج. - تغطّي مجموعة الموظفين المعيّنين الطلب في كل فترة محدّدة.
| الحقول | |
|---|---|
solution_status |
حالة الحل الذي تم إرجاعه. إذا لم يكن |
employee_schedules[] |
مجموعة من الورديات التي أنشأتها أداة الحلّ مع عدد الموظفين المخصصين لكل جدول زمني. |
demand_coverage_violations[] |
مخالفات تغطية الطلب استنادًا إلى |
SolveShiftSchedulingRequest
طلب واجهة برمجة التطبيقات لجدولة القوى العاملة ويحدِّد الطلب على الأقل مجموعة من الموظفين ومجموعة نوبات العمل ومجموعة الأدوار المحتملة التي يمكن للموظف أداؤها ومجموعة من متطلبات التغطية. تحدد متطلبات التغطية، على مدى فترة زمنية، عدد الموظفين اللازمين لأداء كل دور. ويتم أيضًا تعيين الموظفين المكلفين بموردية عمل إلى دور واحد (واحد فقط) لهذا الوردية، ولا يمكن تعيين الموظفين إلى مناوبتين متداخلتين. يمكنك الاطّلاع على SolveShiftSchedulingResponse أدناه للحصول على مزيد من التفاصيل حول العوامل التي تجعل مهمة الوردية صالحة.
يمكن تحديد قيود جدولة إضافية لكل موظف لتقييد المشكلة بشكل أكبر. يتم منح جميع قيود الجدولة ومتطلبات التغطية مستوى أولوية (إلزامي، مرتفع، متوسط، منخفض). يجب أن تستوفي أداة الحلّ جميع القيود ذات مستوى الأولوية PRIORITY_MANDATORY. يمكن لأداة الحلّ انتهاك القيود ذات الأولوية الأخرى، ولكن يتم تقليل هذه الانتهاكات بترتيب الأولوية. اطّلِع على التعداد Priority للحصول على مزيد من التفاصيل حول كيفية التعامل مع مستويات الأولوية لكل قيد.
وستحاول أداة الحلّ زيادة قيم ShiftPreference.preference لكل موظف إلى أقصى حد بما يتجاوز القيود المحدّدة. لن تنتهك أداة الحلّ أي قيد لتلبية المزيد من التفضيلات، ولكنها ستنتهك القيد فقط إذا كان تعيين الجدولة غير ممكن في ظل القيود المحددة.
ملاحظة عن الوقت: يتم تحديد جميع الأوقات في المشكلة باستخدام رسالة التاريخ والوقت. تتضمّن هذه الرسالة حقل "المنطقة الزمنية". يُفترض أن تكون المنطقة الزمنية بالتوقيت العالمي المنسّق (UTC) ما لم يحدّد المستخدم غير ذلك. يجب تحديد رسائل التاريخ والوقت إلى دقائق فقط، ويتم تجاهل كل الثواني ووحدات nanos.
| الحقول | |
|---|---|
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 |
إذا لم يكن |