Очередь выхода с условием, Сбор для фильтрации мест назначения - PullRequest
0 голосов
/ 07 мая 2020

Я моделирую систему распределения в AnyLogi c, где товары перевозятся разными транспортными средствами по всему миру.

Изначально продукция производится на одном из многих заводов. Каждому продукту принадлежит переменная v_destination1 (String), которая показывает следующий пункт назначения.

Агенты (продукты) находятся в типе агента «завод», точнее в блоке очереди. Я хочу написать код, который вызывает транспортное средство для въезда на завод и получения продуктов. Сложность в том, что код должен содержать следующее условие:
- ТС вызывается, если в блоке очереди есть минимум 10 продуктов с одинаковым адресатом (переменная v_destination1)
Эти агенты продукта должны покинуть блок очереди и введите блок самовывоза.

У меня есть следующие идеи, но я не знаю, как продолжить:

1.1 Создание коллекции (c_waitingTruck) со всеми товарами, которые находятся в очереди
1.2 int count (c_waitingTruck, p -> p.v_destination1 ... -> Здесь я не знаю, как написать правильное условие
1.3 if (count >= 10) Проверка, достигается ли d ie минимум 10 продуктов.

2.1 Создание коллекции (c_waitingTruck ) со всеми товарами, которые находятся в очереди
2.2 filter (c_waitingTruck, c -> c.v_destination1 ... -> то же, что и в 1.2
2.3 if (filter.size() >= 10) {

Кто-нибудь может мне помочь? Буду очень рад любому совету.

1 Ответ

0 голосов
/ 07 мая 2020

Не используйте очередь, используйте блок ожидания, называемый ожиданием. При входе в блок ожидания проверьте, соответствует ли сумма

List <Product> products=findAll(wait,a->a.v_destination1.equals(agent.v_destination1);
if(products.size()>=10){
    //call truck, however you do that
   // then release your products into the queue that comes before the pickup block
    for(Product p : products){
        wait.free(p);
    }
}

Я не тестировал этот код, поэтому он может иметь ошибку, но идея как минимум

...