Exemple #1
0
            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)
Exemple #2
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):