#include <iostream>
#include <vector>
#include <cmath>
#include <ctime>
#include <cstdlib>

// Une structure de neurone pur sans aucune bibliothèque externe
class Neuron {
public:
    double value;
    std::vector<double> weights;
    double bias;

    Neuron(int prevLayerSize) {
        bias = ((double)rand() / (RAND_MAX));
        for (int i = 0; i < prevLayerSize; i++) {
            weights.push_back((double)rand() / (RAND_MAX));
        }
    }

    // Fonction d'activation Sigmoïde (La logique d'Aphrodite)
    double activate(double x) {
        return 1 / (1 + exp(-x));
    }

    void feedForward(const std::vector<Neuron>& prevLayer) {
        double sum = bias;
        for (int i = 0; i < prevLayer.size(); i++) {
            sum += prevLayer[i].value * weights[i];
        }
        value = activate(sum);
    }
};

class AphroditeEngine {
public:
    std::vector<std::vector<Neuron>> layers;

    AphroditeEngine(std::vector<int> topology) {
        srand(time(0));
        for (int i = 0; i < topology.size(); i++) {
            std::vector<Neuron> layer;
            int prevSize = (i == 0) ? 0 : topology[i - 1];
            for (int j = 0; j < topology[i]; j++) {
                layer.push_back(Neuron(prevSize));
            }
            layers.push_back(layer);
        }
    }

    void think(std::vector<double> inputs) {
        // Injection des données dans les capteurs (Input Layer)
        for (int i = 0; i < inputs.size(); i++) {
            layers[0][i].value = inputs[i];
        }

        // Propagation à travers les synapses (Hidden Layers)
        for (int i = 1; i < layers.size(); i++) {
            for (int j = 0; j < layers[i].size(); j++) {
                layers[i][j].feedForward(layers[i-1]);
            }
        }
    }

    void printOutput() {
        std::cout << "APHRODITE RÉPONSE (Brute) : ";
        for (auto& neuron : layers.back()) {
            std::cout << neuron.value << " ";
        }
        std::cout << std::endl;
    }
};

int main() {
    std::cout << "--- APHRODITE : ÉVEIL DU NOYAU NATIF ---" << std::endl;

    // Architecture : 3 entrées, 5 neurones cachés, 2 sorties
    std::vector<int> topology = {3, 5, 2};
    AphroditeEngine core(topology);

    // Simulation d'une pensée
    std::vector<double> signal = {0.5, 0.8, -0.2};
    core.think(signal);
    core.printOutput();

    return 0;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: