def __init__(self, min_cables, name='anonymous', level=0): """ Initialize the level, defining the dimensions of its cogs """ self.max_cables = int(2**np.ceil(np.log2(min_cables))) self.max_cables_per_cog = 8 self.max_bundles_per_cog = 4 self.max_cogs = self.max_cables / self.max_bundles_per_cog self.max_bundles = self.max_cogs * self.max_bundles_per_cog self.name = name self.level = level ziptie_name = ''.join(('ziptie_', self.name)) self.ziptie = ZipTie(self.max_cables, self.max_cogs, max_cables_per_bundle=self.max_cables_per_cog, mean_exponent=-2, name=ziptie_name) self.cogs = [] # TODO: only create cogs as needed for cog_index in range(self.max_cogs): self.cogs.append( Cog(self.max_cables_per_cog, self.max_bundles_per_cog, max_chains_per_bundle=self.max_cables_per_cog, name='cog' + str(cog_index), level=self.level)) self.cable_activities = np.zeros((self.max_cables, 1)) self.hub_cable_goals = np.zeros((self.max_cables, 1)) self.fill_fraction_threshold = .7 self.ACTIVITY_DECAY_RATE = 1. # real, 0 < x < 1 # Constants for adaptively rescaling the cable activities self.max_vals = np.zeros((self.max_cables, 1)) self.min_vals = np.zeros((self.max_cables, 1)) self.RANGE_DECAY_RATE = 10**-5
def __init__(self, max_cables, max_bundles, max_chains_per_bundle=None, name='anonymous', level=0): """ Initialize the cogs with a pre-determined maximum size """ self.name = name self.max_cables = max_cables self.max_bundles = max_bundles if max_chains_per_bundle is None: max_chains_per_bundle = int(max_cables**2 / max_bundles) self.daisychain = DaisyChain(max_cables, name=name) if max_bundles > 0: self.ziptie = ZipTie(max_cables**2, max_bundles, max_cables_per_bundle=max_chains_per_bundle, name=name)
def __init__(self, min_cables, name='anonymous', level=0): """ Initialize the level, defining the dimensions of its cogs """ self.max_cables = int(2**np.ceil(np.log2(min_cables))) self.max_cables_per_cog = 16 self.max_bundles_per_cog = 8 self.max_cogs = self.max_cables / self.max_bundles_per_cog self.max_bundles = self.max_cogs * self.max_bundles_per_cog self.name = name self.level = level ziptie_name = ''.join(('ziptie_', self.name)) self.ziptie = ZipTie(self.max_cables, self.max_cogs, max_cables_per_bundle=self.max_cables_per_cog, name=ziptie_name, in_gearbox=True) self.cogs = [] # TODO: only create cogs as needed for cog_index in range(self.max_cogs): self.cogs.append( Cog(self.max_cables_per_cog, self.max_bundles_per_cog, max_chains_per_bundle=self.max_cables_per_cog, name='cog' + str(cog_index), level=self.level)) self.cable_activities = np.zeros((self.max_cables, 1)) self.bundle_activities = np.zeros((self.max_bundles, 1)) self.raw_cable_activities = np.zeros((self.max_cables, 1)) self.previous_cable_activities = np.zeros((self.max_cables, 1)) self.hub_cable_goals = np.zeros((self.max_cables, 1)) self.fill_fraction_threshold = 0. self.step_multiplier = int(2**self.level) self.step_counter = 1000000 # The rate at which cable activities decay (float, 0 < x < 1) self.ACTIVITY_DECAY_RATE = 1. # Constants for adaptively rescaling the cable activities self.max_vals = np.zeros((self.max_cables, 1)) self.min_vals = np.zeros((self.max_cables, 1)) self.RANGE_DECAY_RATE = 10**-3