Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
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,
    )
Exemplo n.º 4
0
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,
    )
Exemplo n.º 5
0
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')