العودة إلى المدونة
نصائح AnyLogic
الدفعات الديناميكية
إليك خدعة صغيرة أستخدمها لإنشاء دفعات ديناميكية، وهي دفعات ذات حجم ديناميكي حيث تأتي المنتجات التي تحتاج إلى تجميعها بطريقة غير منظمة.
لنفترض مثلاً أنه يجب علينا تجميع المنتجات في صناديق، وكل منتج يحمل ملصقاً باسم العميل وكل صندوق يمكن أن يحتوي فقط على منتجات لذلك العميل. كذلك تصل المنتجات بشكل عشوائي وليس من الممكن معرفة لأي عميل تم تخصيص المنتج التالي. كيف يمكننا حل هذا في AnyLogic؟
إحدى الطرق هي استخدام الهيكل التالي:
وفي كل مرة يدخل فيها منتج كتلة الانتظار، باستخدام الكود التالي:
List <Product> products=findAll(wait,p->p.client.equals(agent.client));
if(products.size()==agent.batchSize){
batch.set_batchSize(agent.batchSize);
for(Product p :products){
wait.free(p);
}
}
إذا كان لديك وكيل عميل وحجم ثابت للدفعة، بدلاً من استخدام ذلك الهيكل، من الممكن أيضاً إرسال الوكيل الوارد إلى العميل المناسب من خلال كتلة خروج باستخدام شيء مثل لأخذ الوكيل إلى كتلة الدخول في العميل الصحيح:
agent.client.enter.take(agent); 