output.load(d.id, w.id, item.pt_id, 1) print(" * loading drone " + str(d.id) + " with product " + str(item.pt_id)) print(" $ stock of " + str(item.pt_id) + " at warehouse " + str(w.id) + " was " + str(w.stock[item.pt_id]) + ", is now " + str(w.stock[item.pt_id] - 1)) w.stock[item.pt_id] -= 1 # every load command takes one turn turns_till_idle_again += 1 # drone has to get to order turns_till_idle_again += distance(w.pos, o.pos) print(" * sending drone " + str(d.id) + " to order " + str(o.id) + " pos " + str(o.pos[0]) + "-" + str(o.pos[1]) + " (distance: " + str(distance(w.pos, o.pos)) + ")") # drone has to unload for item in items_to_deliver: output.deliver(d.id, o.id, item.pt_id, 1) print(" * unloading drone " + str(d.id) + " with product " + str(item.pt_id)) # every deliver command takes one turn turns_till_idle_again += 1 item.delivered = True if o.delivered(): delivered_orders = [o for o in state.open_orders if o.delivered()] print(" # delivered " + str(len(delivered_orders)) + " out of " + str(len(state.open_orders)) + " orders") if len(delivered_orders) == len(state.open_orders): print("end, no more orders!") output.write_to_file() sys.exit(0)
from_pos = w.pos for o_id, items_by_pt_id in chunk.items_by_o_id_and_pt_id.items(): o = state.open_orders[o_id] # TODO: somehow plan the route between orders!!! right now it is random # drone has to get to order turns_till_idle_again += distance(from_pos, o.pos) print(" * sending drone " + str(d.id) + " to order " + str(o.id) + " pos " + str(o.pos[0]) + "-" + str(o.pos[1]) + " (distance: " + str(distance(from_pos, o.pos)) + ")") # drone has to unload for pt_id, items in items_by_pt_id.items(): qty = len(items) output.deliver(d.id, o.id, pt_id, qty) print(" * unloading drone " + str(d.id) + " with product " + str(pt_id) + " of qty " + str(qty)) # every deliver command takes one turn turns_till_idle_again += 1 for item in items: item.delivered = True from_pos = o.pos if o.delivered(): delivered_orders = [o for o in state.open_orders if o.delivered()] print(" # delivered " + str(len(delivered_orders)) + " out of " + str(len(state.open_orders)) + " orders") if len(delivered_orders) == len(state.open_orders):