예제 #1
0
def set_up(time, r, b):
    global counter
    counter = 1
    global finished
    finished = False
    swarm_group = swarm(r)
    box_group = boxes(b, swarm_group)

    warehouse_map = warehouse.map()
    warehouse_map.warehouse_map(width, height)
    warehouse_map.gen()
    swarm_group.map = warehouse_map

    swarm_group.robot_iterate(box_group)
    box_group.box_iterate(swarm_group)

    while counter <= time:
        if finished == False:
            swarm_group.robot_iterate(box_group)
        if finished == False:
            box_group.box_iterate(swarm_group)
        if finished == True:
            return (1, counter)
            exit()
    sr = 0
    for i in range(b):
        if box_group.delivered[i] == True:
            sr += 1
    if sr > 0:
        sr = int(sr / b)
    return (sr, counter)
예제 #2
0
def set_up(time,r,b):
	#global counter
	#counter = 1
	#global finished 
	#finished = False
	swarm_group = swarm(r)
	box_group = boxes(b,swarm_group)
		
	warehouse_map = warehouse.map()
	warehouse_map.warehouse_map(width,height)
	warehouse_map.gen()
	swarm_group.map = warehouse_map
	
	swarm_group.robot_iterate(box_group)
	box_group.box_iterate(swarm_group)
	
	while swarm_group.counter <= time:
		if False in box_group.delivered: 
			swarm_group.robot_iterate(box_group)
		if False in box_group.delivered: 
			box_group.box_iterate(swarm_group)
		if False not in box_group.delivered: 
			print(box_group.box_times)
			return (1,swarm_group.counter)
			exit()
	sr = 0 
	print(box_group.box_times)

	for i in range(b):
		if box_group.delivered[i] == True:
			sr += 1
	if sr > 0:
		sr = float(sr/b)
	return (sr,swarm_group.counter)
예제 #3
0
def set_up(time, r, b):
    global counter
    counter = 1
    global finished
    finished = False
    num_agents = r
    num_boxes = b
    swarm_group = swarm(num_agents)
    box_group = boxes(num_boxes)
    swarm_group.gen_agents()
    box_group.check_for_boxes_set_up(swarm_group)

    box_group.check_for_boxes(swarm_group)

    warehouse_map = warehouse.map()
    warehouse_map.warehouse_map(width, height)
    warehouse_map.gen()
    swarm_group.map = warehouse_map
    swarm_group.iterate(box_group)
    box_group.iterate(swarm_group)

    while counter <= time:
        swarm_group.iterate(box_group)
        box_group.iterate(swarm_group)
        if finished == True:
            return (1.0, counter)
            exit()
    sr = 0
    for i in range(num_boxes):
        if box_group.delivered[i] == True:
            sr += 1
    if sr > 0:
        sr = sr / num_boxes
    return (sr, counter)
예제 #4
0
def set_up(time, r, b):
    global counter
    counter = 1
    global finished
    finished = False
    num_agents = r
    num_boxes = b
    swarm_group = swarm(num_agents)
    box_group = boxes(num_boxes)
    swarm_group.gen_agents()
    box_group.check_for_boxes_set_up(swarm_group)

    box_group.check_for_boxes(swarm_group)

    warehouse_map = warehouse.map()
    warehouse_map.warehouse_map(width, height)
    warehouse_map.gen()
    swarm_group.map = warehouse_map
    swarm_group.robot_iterate(box_group)
    box_group.box_iterate(swarm_group)

    while counter <= time:
        swarm_group.robot_iterate(box_group)
        box_group.box_iterate(swarm_group)
        if finished == True:
            return counter
            exit()
    return time
    def __init__(self,num_agents,anim,limit):
        self.num_agents = num_agents
        self.robots = swarm(self.num_agents)
        self.time = limit
        self.anim = anim
        self.counter = 0

        warehouse_map = warehouse.map()
        warehouse_map.warehouse_map(width,height)
        warehouse_map.gen()
        self.robots.map = warehouse_map

        self.data_collect()
	def __init__(self,num_agents,num_boxes,anim,limit):
		self.num_agents = num_agents
		self.num_boxes = num_boxes
		self.robots = swarm(self.num_agents)
		self.items = boxes(self.num_boxes,self.robots)
		self.time = limit
		self.anim = anim

		warehouse_map = warehouse.map()
		warehouse_map.warehouse_map(width,height)
		warehouse_map.gen()
		self.robots.map = warehouse_map

		self.data_collect()
예제 #7
0
    def __init__(self, num_agents, anim, limit, vertical_value):
        self.num_agents = num_agents
        self.robots = swarm(self.num_agents)
        self.time = limit
        self.anim = anim
        self.counter = 0
        self.new_square = square()
        self.absolute_value = vertical_value

        warehouse_map = warehouse.map()
        warehouse_map.warehouse_map(width, height)
        warehouse_map.gen()
        self.robots.map = warehouse_map

        self.data_collect()
예제 #8
0
def run(num_box):
#n = int(sys.argv[1]) # num of robots
#b = int(sys.argv[2])  # num of boxes
	b = num_box
	num_trials = 5
	time_for_trial = 10000
	time_taken_dict = {}
	
	for n in range(5,150,5):
		time_taken_dict[n] = time_for_trial
		for trial in range(num_trials):
			time_taken = 0.
			boxes_delivered = []
			collecting_robot_numbers = []
			box_to_collect_num = []
			average_time = []
			num_box_del = 0.
			swarm_group = swarm(n)
			box_group = boxes(b)
			this_swarm = swarm_group
			this_swarm.gen_agents()

			warehouse_map = warehouse.map() # call the warehouse script to generate the warehouse walls
			warehouse_map.warehouse_map(width,height) # create a warehouse of size width by height (as seen from bove). Width and height are both declared at the start of the code by the variables 'width' and 'height'
			warehouse_map.gen() # generates the wall obstacles and limits
			this_swarm.map = warehouse_map # declares the warhouse as the map that the swarm is in 
			these_boxes = box_group
			these_boxes.check_for_boxes_set_up(this_swarm)
			these_boxes.check_for_boxes(this_swarm)
			
			for t in range(time_for_trial):
				this_swarm.iterate(these_boxes)
				num_box_delivered = these_boxes.iterate(this_swarm)
				num_box_del = num_box_delivered.count(True)
				if num_box_del == these_boxes.num_boxes: 
					num_box_del = 0 
					average_time.append(t)
					break
				if t == time_for_trial-1 and num_box_del < these_boxes.num_boxes:
					average_time.append(time_for_trial)
					average_time.append(time_for_trial)
		time_a = np.median(average_time)
		time_taken_dict[n] = time_a
		boxes_delivered.append(num_box_del)
		#robot_dict[rob] = num_box_del
	return time_taken_dict
예제 #9
0
def set_up(time, r, b, p):

    swarm_group = swarm(r, p)
    box_group = boxes(b, swarm_group)

    warehouse_map = warehouse.map()
    warehouse_map.warehouse_map(width, height)
    warehouse_map.gen()
    swarm_group.map = warehouse_map

    swarm_group.iterate(box_group)

    while swarm_group.counter <= time:
        swarm_group.iterate(box_group)
        if box_group.delivered == box_group.num_boxes:
            return (1, swarm_group.counter)
            exit()
    sr = box_group.delivered
    #print(box_group.box_times)
    if sr > 0:
        sr = float(sr / box_group.num_boxes)
    return (sr, swarm_group.counter)
예제 #10
0
def set_up(time, r, b):
    global counter
    counter = 1
    global finished
    finished = False
    swarm_group = swarm(r)
    box_group = boxes(b, swarm_group)

    warehouse_map = warehouse.map()
    warehouse_map.warehouse_map(width, height)
    warehouse_map.gen()
    swarm_group.map = warehouse_map

    swarm_group.robot_iterate(box_group)
    box_group.box_iterate(swarm_group)

    rob_positions_x = []
    rob_positions_y = []
    box_positions_x = []
    box_positions_y = []

    while counter <= time:
        if finished == False:
            swarm_group.robot_iterate(box_group)
            rob_positions_x.append(swarm_group.rob_c.T[0])
            rob_positions_y.append(swarm_group.rob_c.T[1])
        if finished == False:
            box_group.box_iterate(swarm_group)
            box_positions_x.append(box_group.box_c.T[0])
            box_positions_y.append(box_group.box_c.T[1])
        if finished == True:
            return (rob_positions_x, rob_positions_y, box_positions_x,
                    box_positions_y)
            exit()

    return (rob_positions_x, rob_positions_y, box_positions_x, box_positions_y)
예제 #11
0
			exit()
	sr = 0 
	print(box_group.box_times)

	for i in range(b):
		if box_group.delivered[i] == True:
			sr += 1
	if sr > 0:
		sr = float(sr/b)
	return (sr,swarm_group.counter)

if ani == True: 
	swarm = swarm(num_agents)
	boxes = boxes(num_boxes,swarm)
	
	warehouse_map = warehouse.map()
	warehouse_map.warehouse_map(width,height)
	warehouse_map.gen()
	swarm.map = warehouse_map
	
	swarm.robot_iterate(boxes)
	boxes.box_iterate(swarm)
	
	fig = plt.figure()
	ax = plt.axes(xlim=(0, width), ylim=(0, height))
	dot, = ax.plot([swarm.rob_c[i,0] for i in range(swarm.num_agents)],[swarm.rob_c[i,1] for i in range(num_agents)],
				  'ko',
				  markersize = marker_size, fillstyle = 'none')
	
	box, = ax.plot([boxes.box_c[i,0] for i in range(boxes.num_boxes)],[boxes.box_c[i,1] for i in range(boxes.num_boxes)], 'rs', markersize = marker_size-5)
	seq, = ax.plot([boxes.box_c[0,0]],[boxes.box_c[0,1]],'ks',markersize = marker_size-5)