Source code for hop.hexabundle_allocation.problem_operations.conflicts.blocked_magnet

import sys

from ...hector.magnets.pickup_areas import tangential_right, tangential_left, radial_inward,radial_outward,inward,outward

[docs]class conflicted_magnet: # initializing class of magnets with conflicts def __init__(self,blocking_magnet,blocked_magnet,blocked_pickup_area): self.blocking_magnet = blocking_magnet self.blocked_magnet = blocked_magnet self.blocked_pickup_area = blocked_pickup_area # removing the pickup areas which are blocked from the list of pickup areas
[docs] def remove_blocked_pickup_areas_from_list_available_pickup(self): if self.blocked_pickup_area in self.blocked_magnet.pickup_areas: self.blocked_magnet.pickup_areas.remove(self.blocked_pickup_area)
# checking if circular magnet is fully blocked by its pickup directions
[docs]def circular_magnet_is_fully_blocked(list_of_blocked_pickup_areas): # initializing all pickup directions being blocked as false [blocked_tangential_right,\ blocked_tangential_left,\ blocked_radial_inward,\ blocked_radial_outward] = [False, False, False, False] # checking for each pickup direction to see if it's blocked for blocked_pickup_area in list_of_blocked_pickup_areas: if isinstance(blocked_pickup_area,tangential_right): blocked_tangential_right = True if isinstance(blocked_pickup_area,tangential_left): blocked_tangential_left = True if isinstance(blocked_pickup_area,radial_inward): blocked_radial_inward = True if isinstance(blocked_pickup_area,radial_outward): blocked_radial_outward = True # if all pickup directions are blocked, function returns True for magnet being fully blocked or else False if blocked_tangential_right and blocked_tangential_left and blocked_radial_inward and blocked_radial_outward: return True else: return False
# checking if rectangular magnet is fully blocked by its pickup directions
[docs]def rectangular_magnet_is_fully_blocked(list_of_blocked_pickup_areas): # initializing all pickup directions being blocked as false [blocked_inward, blocked_outward] = [False, False] # checking for each pickup direction to see if it's blocked for pickup_area in list_of_blocked_pickup_areas: if isinstance(pickup_area,inward): blocked_inward = True if isinstance(pickup_area,outward): blocked_outward = True # if all pickup directions are blocked, function returns True for magnet being fully blocked or else False if blocked_inward and blocked_outward: return True else: return False
# print out the fully blocked magnets list on terminal, and write them in the conflicts record file