Skip to content
Snippets Groups Projects
Commit a103b0ad authored by Florian Schröder's avatar Florian Schröder
Browse files

Add checks for available meals before creating orders

The updates address issues with empty meal lists during order creation. When no meals are available, no orders will be created, returning empty lists instead. Furthermore, the mandatory meal assertion in the environment's validate_environment method has been commented out. The meal list in the level1 config has been updated to only include 'Burger'.
parent eccd9c34
No related branches found
No related tags found
No related merge requests found
Pipeline #47727 passed
...@@ -14,8 +14,7 @@ meals: ...@@ -14,8 +14,7 @@ meals:
# if all: false -> only orders for these meals are generated # if all: false -> only orders for these meals are generated
# TODO: what if this list is empty? # TODO: what if this list is empty?
list: list:
- Salad - Burger
- TomatoSoup
layout_chars: layout_chars:
_: Free _: Free
......
...@@ -229,7 +229,7 @@ class Environment: ...@@ -229,7 +229,7 @@ class Environment:
) )
meals_to_be_ordered = self.recipe_validation.validate_environment(self.counters) meals_to_be_ordered = self.recipe_validation.validate_environment(self.counters)
assert meals_to_be_ordered, "Need possible meals for order generation." # assert meals_to_be_ordered, "Need possible meals for order generation."
available_meals = {meal: self.item_info[meal] for meal in meals_to_be_ordered} available_meals = {meal: self.item_info[meal] for meal in meals_to_be_ordered}
self.order_manager.set_available_meals(available_meals) self.order_manager.set_available_meals(available_meals)
......
...@@ -379,11 +379,15 @@ class RandomOrderGeneration(OrderGeneration): ...@@ -379,11 +379,15 @@ class RandomOrderGeneration(OrderGeneration):
self.number_cur_orders = self.kwargs.num_start_meals self.number_cur_orders = self.kwargs.num_start_meals
if not self.kwargs.sample_on_serving: if not self.kwargs.sample_on_serving:
self.create_random_next_time_delta(now) self.create_random_next_time_delta(now)
return self.create_orders_for_meals( if self.available_meals:
self.random.choices(self.available_meals, k=self.kwargs.num_start_meals), return self.create_orders_for_meals(
now, self.random.choices(
self.kwargs.sample_on_serving, self.available_meals, k=self.kwargs.num_start_meals
) ),
now,
self.kwargs.sample_on_serving,
)
return []
def get_orders( def get_orders(
self, self,
...@@ -392,6 +396,8 @@ class RandomOrderGeneration(OrderGeneration): ...@@ -392,6 +396,8 @@ class RandomOrderGeneration(OrderGeneration):
new_finished_orders: list[Order], new_finished_orders: list[Order],
expired_orders: list[Order], expired_orders: list[Order],
) -> list[Order]: ) -> list[Order]:
if not self.available_meals:
return []
self.number_cur_orders -= len(new_finished_orders) self.number_cur_orders -= len(new_finished_orders)
self.number_cur_orders -= len(expired_orders) self.number_cur_orders -= len(expired_orders)
if self.kwargs.sample_on_serving: if self.kwargs.sample_on_serving:
......
...@@ -265,6 +265,8 @@ class Validation: ...@@ -265,6 +265,8 @@ class Validation:
# print("FINAL MEALS:", meals_to_be_ordered) # print("FINAL MEALS:", meals_to_be_ordered)
def get_recipe_graphs(self) -> list[MealGraphDict]: def get_recipe_graphs(self) -> list[MealGraphDict]:
if not self.order_manager.available_meals:
return []
os.makedirs(ROOT_DIR / "generated", exist_ok=True) os.makedirs(ROOT_DIR / "generated", exist_ok=True)
# time_start = time.time() # time_start = time.time()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment