Esempio n. 1
0
 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
Esempio n. 2
0
File: cog.py Progetto: 00mjk/becca
 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)
Esempio n. 3
0
 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