def generate_micro_column(max_x, max_y, max_z, inputs_count, outputs_count, connection_generation_frequency): """ Создание микроколонки :param max_x: максимальный размер по оси X :param max_y: масимальный размер по оси Y :param max_z: максимальный размер по оси Z :param inputs_count: Количество входящих нейронов :param outputs_count: Количество исходящих нейронов :param connection_generation_frequency: Частота соединений на входных аксонах :return: NeucortexMicroColumn """ neurons = [] input_neurons = [] output_neurons = [] connections = [] allowed_connections = [] input_locations = [] if inputs_count == 1: input_locations.append( location.Location( math.ceil(max_x / 2), math.ceil(max_y / 2), 0, )) if inputs_count > 1: raise Exception( "Количество входных нейронов не может быть более 1-го." "Напишите распределение для большего количества вручную") per_layer = max_z / 6 layers_ranges = { 1: [0, per_layer * 1], 2: [per_layer * 1, per_layer * 2], 3: [per_layer * 2, per_layer * 3], 4: [per_layer * 3, per_layer * 4], 5: [per_layer * 4, per_layer * 5], 6: [per_layer * 5, per_layer * 6], } for input_location in input_locations: allowed_connections += neurolocator.Neurolocator.get_connection_points( input_location, location.Location( input_location.x, input_location.y, layers_ranges[6][0] + (layers_ranges[6][1] - layers_ranges[6][0]) / 2, ), connection_generation_frequency, ) return NeucortexMicroColumn(neurons, input_neurons, output_neurons, connections, allowed_connections)
def get_connection_points( from_location, to_location, connection_generation_frequency, ): """ Генерирует точки возможные точки соединения. :param from_location: Начальная точка (ядро нейрона) :param to_location: Конечная точка (конец аксона) :param connection_generation_frequency: количество точек между началом и концом :return: массив Location """ connection_generation_frequency += 1 from_caret = from_location.get_caret() to_caret = to_location.get_caret() mult_increment = helpers.multiplier_increment( from_caret, to_caret, connection_generation_frequency, ) arr = [] for i in range(1, connection_generation_frequency): arr.append( location.Location( from_location.x * (mult_increment[0] * i), from_location.y * (mult_increment[1] * i), from_location.z * (mult_increment[2] * i), )) return arr
def create_base_neurons_function(x, y, z): return neuron.Neuron( location=location.Location( x, y, z, ), set_up_function=base_neuron_set_up_function, inactivity_function=neuron_inactivity_function, apply_signal_function=neuron_apply_signal_function, check_spike_function=neuron_check_spike_function, current_milliseconds=0, before_spike_function=None, after_spike_function=neuron_after_spike_function, get_spike_power_function=get_spike_power_function, is_output=False, is_input=False, )
def create_output_neuron_function(x, y, z): # Выходные нейроны не будут просчитываться через функцию неактивности return neuron.Neuron( location=location.Location( x, y, z, ), set_up_function=output_neuron_set_up_function, inactivity_function=neuron_inactivity_function, apply_signal_function=neuron_apply_signal_function, check_spike_function=neuron_check_spike_function, current_milliseconds=0, before_spike_function=None, after_spike_function=output_neuron_after_spike_function, get_spike_power_function=get_spike_power_function, is_output=True, is_input=False, )
description = "The dingy, seedy dock of the Renault. A place to make your fortune! Or get yourself killed." adjoins = [] objects = [crate] npcs = [shady_dock_worker] grid = [['X', 'X', 'X', 'X', 'X', 'X', 'X'], ['X', ' ', ' ', ' ', ' ', ' ', 'X'], ['X', ' ', ' ', ' ', ' ', ' ', 'X'], ['X', crate.crate, ' ', ' ', ' ', ' ', 'D'], ['X', ' ', ' ', ' ', ' ', ' ', 'X'], ['X', ' ', ' ', ' ', ' ', ' ', 'X'], [ 'X', ' ', ' ', shady_dock_worker.shady_dock_worker, ' ', shady_dock_worker.shady_dock_worker, 'X' ], ['X', 'X', 'X', 'X', 'X', 'X', 'X']] character = character_list.anaxio dock = location.Location(name, adjoins, description, npcs, objects, grid, character, 1, 1) def main(): dock.enter_room() dock.room_map() exited = False while not exited: user_command = input('').lower() if user_command == 'exit': exited = True # movement commands elif user_command == 'w': dock.move_character('west') elif user_command == "e": dock.move_character('east')