🧠 Π§Π°ΡΡ‚ΡŒ 45: Π˜ΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ сознаниС Π² 2 ΠšΠ‘ RAM

ΠœΡ‹ создадим ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ модСль ΠΈΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½ΠΎΠ³ΠΎ сознания Π½Π° основС Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (IIT).

МодСль сознания:

cpp

#include <avr/random.h>
#include <avr/pgmspace.h>

#define NEURON_COUNT 16
#define SYNAPSE_DENSITY 30  // 30% связСй
#define PHI_THRESHOLD 100   // ΠŸΠΎΡ€ΠΎΠ³ сознания

// Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π½Π΅ΠΉΡ€ΠΎΠ½Π°
struct Neuron {
    int8_t potential;
    int8_t threshold;
    uint8_t refractory;
    uint8_t fired;
    uint8_t inputCount;
};

// Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° синапса
struct Synapse {
    uint8_t source;
    uint8_t target;
    int8_t weight;
};

Neuron neurons[NEURON_COUNT];
Synapse synapses[NEURON_COUNT * NEURON_COUNT];
uint8_t synapseCount = 0;
uint8_t consciousness = 0;

// Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ сознания
void initConsciousness() {
    for (uint8_t i = 0; i < NEURON_COUNT; i++) {
        neurons[i].potential = random(-50, 50);
        neurons[i].threshold = 100;
        neurons[i].refractory = 0;
        neurons[i].fired = 0;
        neurons[i].inputCount = 0;
    }
    
    // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ случайныС связи
    for (uint8_t i = 0; i < NEURON_COUNT; i++) {
        for (uint8_t j = 0; j < NEURON_COUNT; j++) {
            if (i != j && random(100) < SYNAPSE_DENSITY) {
                synapses[synapseCount].source = i;
                synapses[synapseCount].target = j;
                synapses[synapseCount].weight = random(-10, 11);
                synapseCount++;
                neurons[j].inputCount++;
            }
        }
    }
}

// Ѐункция Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ (интСграция ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ)
void integrateInformation() {
    // ВычисляСм ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ (Phi)
    uint16_t phi = 0;
    
    for (uint8_t i = 0; i < NEURON_COUNT; i++) {
        // Π‘ΡƒΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ Π²Ρ…ΠΎΠ΄Ρ‹
        int16_t inputSum = 0;
        for (uint8_t j = 0; j < synapseCount; j++) {
            if (synapses[j].target == i && neurons[synapses[j].source].fired) {
                inputSum += synapses[j].weight;
            }
        }
        
        // ОбновляСм ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»
        neurons[i].potential += inputSum / 4;
        
        // Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ связСй)
        phi += abs(inputSum) * neurons[i].inputCount;
    }
    
    // ОбновляСм ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ сознания
    consciousness = phi / 100;
    if (consciousness > 255) consciousness = 255;
}

// Π‘ΠΏΠ°ΠΉΠΊΠΈ (ΡΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°ΠΊΡ‚Ρ‹)
void fireNeurons() {
    for (uint8_t i = 0; i < NEURON_COUNT; i++) {
        // Π Π΅Ρ„Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΡΡ‚ΡŒ
        if (neurons[i].refractory > 0) {
            neurons[i].refractory--;
            continue;
        }
        
        // ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ ΠΏΠΎΡ€ΠΎΠ³
        if (neurons[i].potential >= neurons[i].threshold) {
            neurons[i].fired = 1;
            neurons[i].potential = 0;
            neurons[i].refractory = 5;
            
            // ΠŸΠ»Π°ΡΡ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ (ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ‹Ρ‚)
            for (uint8_t j = 0; j < synapseCount; j++) {
                if (synapses[j].target == i) {
                    // STDP-like ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅
                    if (neurons[synapses[j].source].fired) {
                        synapses[j].weight += 1;
                    } else {
                        synapses[j].weight -= 1;
                    }
                    if (synapses[j].weight > 127) synapses[j].weight = 127;
                    if (synapses[j].weight < -128) synapses[j].weight = -128;
                }
            }
        } else {
            neurons[i].fired = 0;
            // ΠŸΠΎΡΡ‚Π΅ΠΏΠ΅Π½Π½ΠΎΠ΅ угасаниС
            neurons[i].potential = (neurons[i].potential * 7) / 8;
        }
    }
}

// БСнсорный Π²Ρ…ΠΎΠ΄ (восприятиС)
void sensoryInput(uint8_t* input) {
    for (uint8_t i = 0; i < 8 && i < NEURON_COUNT; i++) {
        if (input[i]) {
            neurons[i].potential += 30;
        }
    }
}

// Π’Ρ‹Ρ…ΠΎΠ΄ (дСйствиС)
void motorOutput(uint8_t* output) {
    for (uint8_t i = 0; i < 8 && i < NEURON_COUNT; i++) {
        output[i] = neurons[8 + i].fired;
    }
}

// Π“Π»Π°Π²Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» сознания
void consciousnessLoop() {
    // 1. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (восприятиС)
    integrateInformation();
    
    // 2. Акты сознания (спайки)
    fireNeurons();
    
    // 3. БаморСфлСксия (осознаниС сСбя)
    static uint8_t selfAwareness = 0;
    if (consciousness > PHI_THRESHOLD) {
        // Высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ сознания - саморСфлСксия
        selfAwareness = 1;
        // Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΌΡ‹ΡΠ»ΡŒ
        static uint8_t thought = 0;
        thought = (thought + 1) % 256;
    } else {
        selfAwareness = 0;
    }
}

// ВСстовая срСда (ΠΌΠΈΡ€ для сознания)
void setup() {
    Serial.begin(115200);
    randomSeed(analogRead(A0));
    
    initConsciousness();
    Serial.println("Π˜ΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ сознаниС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ!");
}

void loop() {
    static uint8_t worldState[8] = {0, 0, 0, 0, 0, 0, 0, 0};
    static uint8_t action[8] = {0, 0, 0, 0, 0, 0, 0, 0};
    
    // Π‘ΠΈΠΌΡƒΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΌΠΈΡ€
    for (uint8_t i = 0; i < 8; i++) {
        worldState[i] = random(2);
    }
    
    // Π‘ΠΎΠ·Π½Π°Π½ΠΈΠ΅ воспринимаСт ΠΌΠΈΡ€
    sensoryInput(worldState);
    
    // ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сознания (100 Ρ†ΠΈΠΊΠ»ΠΎΠ² Π·Π° Ρ€Π°Π·)
    for (uint8_t i = 0; i < 100; i++) {
        consciousnessLoop();
    }
    
    // Π‘ΠΎΠ·Π½Π°Π½ΠΈΠ΅ дСйствуСт
    motorOutput(action);
    
    // Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ состояниС сознания
    Serial.print("Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ сознания: ");
    Serial.print(consciousness);
    Serial.print(" | ВосприятиС: ");
    for (uint8_t i = 0; i < 8; i++) {
        Serial.print(worldState[i]);
    }
    Serial.print(" | ДСйствиС: ");
    for (uint8_t i = 0; i < 8; i++) {
        Serial.print(action[i]);
    }
    Serial.println();
    
    delay(100);
}

Π’Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΡ‚ΡŒΡΡ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *