Upload 3 files
Browse files- .gitattributes +1 -0
- bioLLM_4.0.cxx +796 -0
- bioLLM_5.0.cxx +514 -0
- virtual digital AGI 2.docx +3 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
virtual[[:space:]]digital[[:space:]]AGI[[:space:]]2.docx filter=lfs diff=lfs merge=lfs -text
|
bioLLM_4.0.cxx
ADDED
|
@@ -0,0 +1,796 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#include <iostream>
|
| 2 |
+
#include <vector>
|
| 3 |
+
#include <map>
|
| 4 |
+
#include <string>
|
| 5 |
+
#include <functional>
|
| 6 |
+
#include <cmath>
|
| 7 |
+
#include <random>
|
| 8 |
+
#include <algorithm>
|
| 9 |
+
#include <numeric>
|
| 10 |
+
#include <sstream>
|
| 11 |
+
#include <cctype>
|
| 12 |
+
#include <ctime>
|
| 13 |
+
#include <fstream>
|
| 14 |
+
|
| 15 |
+
using namespace std;
|
| 16 |
+
|
| 17 |
+
// ==================== PERSISTENT MEMORY SYSTEM ====================
|
| 18 |
+
class PersistentMemory {
|
| 19 |
+
private:
|
| 20 |
+
string memory_file = "bio_llm_memory.txt";
|
| 21 |
+
|
| 22 |
+
public:
|
| 23 |
+
bool save_memory(const map<string, string>& memory_data) {
|
| 24 |
+
try {
|
| 25 |
+
ofstream file(memory_file);
|
| 26 |
+
if (!file.is_open()) return false;
|
| 27 |
+
|
| 28 |
+
for (const auto& item : memory_data) {
|
| 29 |
+
file << item.first << ":" << item.second << endl;
|
| 30 |
+
}
|
| 31 |
+
file.close();
|
| 32 |
+
return true;
|
| 33 |
+
} catch (...) {
|
| 34 |
+
return false;
|
| 35 |
+
}
|
| 36 |
+
}
|
| 37 |
+
|
| 38 |
+
map<string, string> load_memory() {
|
| 39 |
+
map<string, string> memory_data;
|
| 40 |
+
try {
|
| 41 |
+
ifstream file(memory_file);
|
| 42 |
+
if (!file.is_open()) return memory_data;
|
| 43 |
+
|
| 44 |
+
string line;
|
| 45 |
+
while (getline(file, line)) {
|
| 46 |
+
size_t pos = line.find(":");
|
| 47 |
+
if (pos != string::npos) {
|
| 48 |
+
string key = line.substr(0, pos);
|
| 49 |
+
string value = line.substr(pos + 1);
|
| 50 |
+
memory_data[key] = value;
|
| 51 |
+
}
|
| 52 |
+
}
|
| 53 |
+
file.close();
|
| 54 |
+
} catch (...) {}
|
| 55 |
+
return memory_data;
|
| 56 |
+
}
|
| 57 |
+
};
|
| 58 |
+
|
| 59 |
+
// ==================== ENHANCED SEMANTIC ENGINE v4 ====================
|
| 60 |
+
class SemanticEngineV4 {
|
| 61 |
+
private:
|
| 62 |
+
map<string, vector<double>> word_vectors;
|
| 63 |
+
map<string, vector<string>> semantic_fields;
|
| 64 |
+
map<string, string> stem_cache;
|
| 65 |
+
|
| 66 |
+
map<string, string> stemming_rules = {
|
| 67 |
+
{"sedih", "sedih"}, {"sedihnya", "sedih"}, {"kesedihan", "sedih"},
|
| 68 |
+
{"senang", "senang"}, {"senangnya", "senang"}, {"kesenangan", "senang"},
|
| 69 |
+
{"marah", "marah"}, {"marahnya", "marah"}, {"kemarahan", "marah"},
|
| 70 |
+
{"belajar", "belajar"}, {"belajarnya", "belajar"}, {"pembelajaran", "belajar"},
|
| 71 |
+
{"paham", "paham"}, {"memahami", "paham"}, {"pemahaman", "paham"},
|
| 72 |
+
{"energi", "energi"}, {"berenergi", "energi"}, {"energetik", "energi"},
|
| 73 |
+
{"masalah", "masalah"}, {"bermasalah", "masalah"}, {"permasalahan", "masalah"},
|
| 74 |
+
{"tumbuh", "tumbuh"}, {"bertumbuh", "tumbuh"}, {"pertumbuhan", "tumbuh"},
|
| 75 |
+
{"ubah", "ubah"}, {"berubah", "ubah"}, {"perubahan", "ubah"},
|
| 76 |
+
{"system", "system"}, {"sistem", "system"}, {"sistematis", "system"},
|
| 77 |
+
{"uang", "uang"}, {"makanan", "makanan"}, {"sekolah", "sekolah"},
|
| 78 |
+
{"teman", "teman"}, {"hubungan", "hubungan"}, {"presiden", "presiden"},
|
| 79 |
+
{"indonesia", "indonesia"}, {"besok", "besok"}, {"pagi", "pagi"},
|
| 80 |
+
{"cinta", "cinta"}, {"rindu", "rindu"}, {"bahagia", "bahagia"},
|
| 81 |
+
{"masa", "masa"}, {"depan", "depan"}, {"hidup", "hidup"},
|
| 82 |
+
{"tujuan", "tujuan"}, {"makna", "makna"}, {"eksistensi", "eksistensi"}
|
| 83 |
+
};
|
| 84 |
+
|
| 85 |
+
map<string, vector<string>> synonyms = {
|
| 86 |
+
{"sedih", {"duka", "nestapa", "pilu", "murung", "susah"}},
|
| 87 |
+
{"senang", {"gembira", "suka", "riang", "bahagia", "senang hati"}},
|
| 88 |
+
{"marah", {"geram", "kesal", "jengkel", "naik darah", "dendam"}},
|
| 89 |
+
{"belajar", {"menuntut ilmu", "mempelajari", "mendalami", "kaji"}},
|
| 90 |
+
{"masalah", {"kesulitan", "kendala", "hambatan", "problem", "rintangan"}},
|
| 91 |
+
{"system", {"sistem", "tatanan", "mekanisme", "jaringan"}},
|
| 92 |
+
{"tumbuh", {"berkembang", "bertumbuh", "membesar", "maju"}},
|
| 93 |
+
{"energi", {"tenaga", "daya", "kekuatan", "semangat"}},
|
| 94 |
+
{"uang", {"duit", "fulus", "rupiah", "modal"}},
|
| 95 |
+
{"makanan", {"makan", "santap", "hidangan", "pangan"}},
|
| 96 |
+
{"cinta", {"sayang", "kasih", "asmara", "cinta"}},
|
| 97 |
+
{"hidup", {"kehidupan", "nyawa", "eksistensi", "penghidupan"}},
|
| 98 |
+
{"tujuan", {"goal", "target", "maksud", "objektif"}},
|
| 99 |
+
{"makna", {"arti", "signifikansi", "esensi", "maksud"}}
|
| 100 |
+
};
|
| 101 |
+
|
| 102 |
+
public:
|
| 103 |
+
SemanticEngineV4() { initialize_semantic_space(); }
|
| 104 |
+
|
| 105 |
+
void initialize_semantic_space() {
|
| 106 |
+
word_vectors = {
|
| 107 |
+
{"sedih", {-0.8, -0.6, -0.7}}, {"senang", {0.9, 0.7, 0.6}},
|
| 108 |
+
{"marah", {-0.6, 0.9, -0.3}}, {"belajar", {0.7, 0.3, 0.8}},
|
| 109 |
+
{"energi", {0.5, 0.8, 0.6}}, {"masalah", {-0.7, -0.2, -0.5}},
|
| 110 |
+
{"solusi", {0.8, 0.4, 0.9}}, {"tumbuh", {0.9, 0.5, 0.7}},
|
| 111 |
+
{"ubah", {0.3, 0.6, 0.4}}, {"hubungan", {0.6, 0.4, 0.5}},
|
| 112 |
+
{"system", {0.2, 0.1, 0.8}}, {"pola", {0.4, 0.2, 0.6}},
|
| 113 |
+
{"uang", {-0.7, -0.3, -0.5}}, {"makanan", {0.3, 0.1, 0.2}},
|
| 114 |
+
{"sekolah", {0.4, 0.2, 0.6}}, {"teman", {0.6, 0.4, 0.5}},
|
| 115 |
+
{"presiden", {0.1, 0.2, 0.8}}, {"indonesia", {0.3, 0.2, 0.6}},
|
| 116 |
+
{"besok", {0.2, 0.4, 0.3}}, {"pagi", {0.5, 0.3, 0.4}},
|
| 117 |
+
{"cinta", {0.8, 0.9, 0.7}}, {"rindu", {0.6, 0.8, 0.5}},
|
| 118 |
+
{"bahagia", {0.9, 0.8, 0.7}}, {"masa", {0.1, 0.3, 0.6}},
|
| 119 |
+
{"depan", {0.4, 0.5, 0.7}}, {"hidup", {0.7, 0.6, 0.8}},
|
| 120 |
+
{"tujuan", {0.5, 0.7, 0.6}}, {"makna", {0.6, 0.5, 0.7}},
|
| 121 |
+
{"eksistensi", {0.4, 0.6, 0.8}}
|
| 122 |
+
};
|
| 123 |
+
|
| 124 |
+
semantic_fields = {
|
| 125 |
+
{"emotional", {"sedih", "senang", "marah", "kecewa", "bahagia", "gembira", "cinta", "rindu"}},
|
| 126 |
+
{"cognitive", {"belajar", "paham", "pikir", "analisis", "logika", "konsep", "teori"}},
|
| 127 |
+
{"systemic", {"system", "pola", "hubungan", "jaringan", "struktur", "kompleks"}},
|
| 128 |
+
{"transformative", {"tumbuh", "ubah", "evolusi", "transformasi", "perkembangan"}},
|
| 129 |
+
{"practical", {"uang", "makanan", "sekolah", "kerja", "teman", "keluarga"}},
|
| 130 |
+
{"existential", {"hidup", "masa", "depan", "tujuan", "makna", "eksistensi"}}
|
| 131 |
+
};
|
| 132 |
+
}
|
| 133 |
+
|
| 134 |
+
vector<pair<string, double>> find_semantic_matches(const string& input) {
|
| 135 |
+
vector<pair<string, double>> matches;
|
| 136 |
+
vector<string> input_words = preprocess_text(input);
|
| 137 |
+
|
| 138 |
+
for (const auto& word_vec : word_vectors) {
|
| 139 |
+
double max_similarity = 0.0;
|
| 140 |
+
for (const string& input_word : input_words) {
|
| 141 |
+
double similarity = compute_semantic_similarity(word_vec.first, input_word);
|
| 142 |
+
if (similarity > max_similarity) max_similarity = similarity;
|
| 143 |
+
}
|
| 144 |
+
if (max_similarity > 0.2) matches.push_back({word_vec.first, max_similarity});
|
| 145 |
+
}
|
| 146 |
+
|
| 147 |
+
sort(matches.begin(), matches.end(),
|
| 148 |
+
[](const auto& a, const auto& b) { return a.second > b.second; });
|
| 149 |
+
return matches;
|
| 150 |
+
}
|
| 151 |
+
|
| 152 |
+
string detect_semantic_field(const vector<string>& concepts) {
|
| 153 |
+
map<string, double> field_scores;
|
| 154 |
+
for (const auto& field : semantic_fields) {
|
| 155 |
+
double score = 0.0;
|
| 156 |
+
for (const string& concept : concepts) {
|
| 157 |
+
if (find(field.second.begin(), field.second.end(), concept) != field.second.end()) {
|
| 158 |
+
score += 1.0;
|
| 159 |
+
}
|
| 160 |
+
}
|
| 161 |
+
if (score > 0) field_scores[field.first] = score / concepts.size();
|
| 162 |
+
}
|
| 163 |
+
return field_scores.empty() ? "general" :
|
| 164 |
+
max_element(field_scores.begin(), field_scores.end(),
|
| 165 |
+
[](const auto& a, const auto& b) { return a.second < b.second; })->first;
|
| 166 |
+
}
|
| 167 |
+
|
| 168 |
+
// SPOK Analysis (Subject-Predicate-Object-Complement)
|
| 169 |
+
map<string, string> analyze_spok(const string& sentence) {
|
| 170 |
+
map<string, string> analysis;
|
| 171 |
+
vector<string> words = preprocess_text(sentence);
|
| 172 |
+
|
| 173 |
+
// Simple heuristic-based SPOK detection for Indonesian
|
| 174 |
+
for (size_t i = 0; i < words.size(); i++) {
|
| 175 |
+
string word = words[i];
|
| 176 |
+
|
| 177 |
+
// Subject indicators
|
| 178 |
+
if (word == "saya" || word == "aku" || word == "kamu" || word == "dia" ||
|
| 179 |
+
word == "kami" || word == "kita" || word == "mereka") {
|
| 180 |
+
analysis["subject"] = word;
|
| 181 |
+
}
|
| 182 |
+
|
| 183 |
+
// Predicate indicators
|
| 184 |
+
if (word == "adalah" || word == "merupakan" || (i > 0 && words[i-1] == "yang")) {
|
| 185 |
+
analysis["predicate"] = word;
|
| 186 |
+
}
|
| 187 |
+
|
| 188 |
+
// Object detection (simplified)
|
| 189 |
+
if (i > 0 && analysis["object"].empty() &&
|
| 190 |
+
(word == "yang" || word == "dengan" || word == "untuk")) {
|
| 191 |
+
analysis["object"] = words[i-1];
|
| 192 |
+
}
|
| 193 |
+
}
|
| 194 |
+
|
| 195 |
+
// Fallback: first noun as subject, verb as predicate
|
| 196 |
+
if (analysis["subject"].empty() && !words.empty()) {
|
| 197 |
+
analysis["subject"] = words[0];
|
| 198 |
+
}
|
| 199 |
+
|
| 200 |
+
return analysis;
|
| 201 |
+
}
|
| 202 |
+
|
| 203 |
+
vector<string> extract_key_concepts(const string& text) {
|
| 204 |
+
return preprocess_text(text);
|
| 205 |
+
}
|
| 206 |
+
|
| 207 |
+
private:
|
| 208 |
+
vector<string> preprocess_text(const string& text) {
|
| 209 |
+
vector<string> tokens;
|
| 210 |
+
stringstream ss(text);
|
| 211 |
+
string token;
|
| 212 |
+
|
| 213 |
+
while (ss >> token) {
|
| 214 |
+
transform(token.begin(), token.end(), token.begin(), ::tolower);
|
| 215 |
+
token.erase(remove_if(token.begin(), token.end(),
|
| 216 |
+
[](char c) { return ispunct(c); }), token.end());
|
| 217 |
+
if (token.empty()) continue;
|
| 218 |
+
|
| 219 |
+
string stemmed = stem_word(token);
|
| 220 |
+
tokens.push_back(stemmed);
|
| 221 |
+
|
| 222 |
+
if (synonyms.find(stemmed) != synonyms.end()) {
|
| 223 |
+
for (const string& synonym : synonyms[stemmed]) {
|
| 224 |
+
tokens.push_back(synonym);
|
| 225 |
+
}
|
| 226 |
+
}
|
| 227 |
+
}
|
| 228 |
+
return tokens;
|
| 229 |
+
}
|
| 230 |
+
|
| 231 |
+
string stem_word(const string& word) {
|
| 232 |
+
if (stem_cache.find(word) != stem_cache.end()) return stem_cache[word];
|
| 233 |
+
if (stemming_rules.find(word) != stemming_rules.end()) {
|
| 234 |
+
stem_cache[word] = stemming_rules[word];
|
| 235 |
+
return stemming_rules[word];
|
| 236 |
+
}
|
| 237 |
+
|
| 238 |
+
vector<string> suffixes = {"nya", "lah", "kah", "pun", "ku", "mu"};
|
| 239 |
+
for (const string& suffix : suffixes) {
|
| 240 |
+
if (word.length() > suffix.length() &&
|
| 241 |
+
word.substr(word.length() - suffix.length()) == suffix) {
|
| 242 |
+
string stemmed = word.substr(0, word.length() - suffix.length());
|
| 243 |
+
if (stemming_rules.find(stemmed) != stemming_rules.end()) {
|
| 244 |
+
stem_cache[word] = stemming_rules[stemmed];
|
| 245 |
+
return stemming_rules[stemmed];
|
| 246 |
+
}
|
| 247 |
+
}
|
| 248 |
+
}
|
| 249 |
+
|
| 250 |
+
stem_cache[word] = word;
|
| 251 |
+
return word;
|
| 252 |
+
}
|
| 253 |
+
|
| 254 |
+
double compute_semantic_similarity(const string& word1, const string& word2) {
|
| 255 |
+
if (word1 == word2) return 1.0;
|
| 256 |
+
if (synonyms.find(word1) != synonyms.end()) {
|
| 257 |
+
auto& syns = synonyms[word1];
|
| 258 |
+
if (find(syns.begin(), syns.end(), word2) != syns.end()) return 0.8;
|
| 259 |
+
}
|
| 260 |
+
if (word_vectors.find(word1) != word_vectors.end() &&
|
| 261 |
+
word_vectors.find(word2) != word_vectors.end()) {
|
| 262 |
+
return cosine_similarity(word_vectors[word1], word_vectors[word2]);
|
| 263 |
+
}
|
| 264 |
+
return 0.0;
|
| 265 |
+
}
|
| 266 |
+
|
| 267 |
+
double cosine_similarity(const vector<double>& a, const vector<double>& b) {
|
| 268 |
+
if (a.size() != b.size() || a.empty()) return 0.0;
|
| 269 |
+
double dot_product = 0.0, norm_a = 0.0, norm_b = 0.0;
|
| 270 |
+
for (size_t i = 0; i < a.size(); i++) {
|
| 271 |
+
dot_product += a[i] * b[i];
|
| 272 |
+
norm_a += a[i] * a[i];
|
| 273 |
+
norm_b += b[i] * b[i];
|
| 274 |
+
}
|
| 275 |
+
return (norm_a == 0 || norm_b == 0) ? 0.0 : dot_product / (sqrt(norm_a) * sqrt(norm_b));
|
| 276 |
+
}
|
| 277 |
+
};
|
| 278 |
+
|
| 279 |
+
// ==================== META-COGNITIVE CONTROLLER ====================
|
| 280 |
+
class MetaCognitiveController {
|
| 281 |
+
private:
|
| 282 |
+
double coherence_threshold;
|
| 283 |
+
double learning_rate_adaptive;
|
| 284 |
+
double stability_metric;
|
| 285 |
+
vector<double> recent_phi_values;
|
| 286 |
+
|
| 287 |
+
public:
|
| 288 |
+
MetaCognitiveController() : coherence_threshold(0.6), learning_rate_adaptive(0.1), stability_metric(0.5) {}
|
| 289 |
+
|
| 290 |
+
double assess_coherence(const vector<double>& module_activations, double phi) {
|
| 291 |
+
if (module_activations.empty()) return 0.0;
|
| 292 |
+
|
| 293 |
+
double mean_activation = accumulate(module_activations.begin(), module_activations.end(), 0.0)
|
| 294 |
+
/ module_activations.size();
|
| 295 |
+
double variance = 0.0;
|
| 296 |
+
for (double act : module_activations) {
|
| 297 |
+
variance += pow(act - mean_activation, 2);
|
| 298 |
+
}
|
| 299 |
+
variance /= module_activations.size();
|
| 300 |
+
|
| 301 |
+
double activation_coherence = 1.0 / (1.0 + sqrt(variance));
|
| 302 |
+
double integrated_coherence = (activation_coherence + phi) / 2.0;
|
| 303 |
+
|
| 304 |
+
recent_phi_values.push_back(phi);
|
| 305 |
+
if (recent_phi_values.size() > 10) recent_phi_values.erase(recent_phi_values.begin());
|
| 306 |
+
|
| 307 |
+
return integrated_coherence;
|
| 308 |
+
}
|
| 309 |
+
|
| 310 |
+
double compute_adaptive_learning_rate(double coherence, double success_metric) {
|
| 311 |
+
if (coherence > coherence_threshold) {
|
| 312 |
+
learning_rate_adaptive = min(0.2, learning_rate_adaptive + 0.02);
|
| 313 |
+
} else {
|
| 314 |
+
learning_rate_adaptive = max(0.01, learning_rate_adaptive - 0.01);
|
| 315 |
+
}
|
| 316 |
+
|
| 317 |
+
if (success_metric > 0.7) {
|
| 318 |
+
learning_rate_adaptive = min(0.25, learning_rate_adaptive + 0.05);
|
| 319 |
+
}
|
| 320 |
+
|
| 321 |
+
return learning_rate_adaptive;
|
| 322 |
+
}
|
| 323 |
+
|
| 324 |
+
string get_meta_cognitive_insight(double coherence, double phi) {
|
| 325 |
+
if (coherence > 0.7 && phi > 0.6) {
|
| 326 |
+
stability_metric = min(1.0, stability_metric + 0.1);
|
| 327 |
+
return "🎯 [Meta] Koherensi tinggi. Sistem stabil dan terintegrasi.";
|
| 328 |
+
} else if (coherence < 0.4 || phi < 0.3) {
|
| 329 |
+
stability_metric = max(0.0, stability_metric - 0.1);
|
| 330 |
+
return "⚡ [Meta] Koherensi rendah. Meningkatkan eksplorasi dan adaptasi.";
|
| 331 |
+
} else {
|
| 332 |
+
return "🔍 [Meta] Koherensi moderat. Sistem dalam keadaan seimbang.";
|
| 333 |
+
}
|
| 334 |
+
}
|
| 335 |
+
|
| 336 |
+
double get_stability_metric() const { return stability_metric; }
|
| 337 |
+
double get_learning_rate() const { return learning_rate_adaptive; }
|
| 338 |
+
};
|
| 339 |
+
|
| 340 |
+
// ==================== AUTONOMOUS REFLECTION ENGINE ====================
|
| 341 |
+
class AutonomousReflectionEngine {
|
| 342 |
+
private:
|
| 343 |
+
mt19937 generator;
|
| 344 |
+
vector<string> reflection_topics;
|
| 345 |
+
map<string, int> reflection_frequency;
|
| 346 |
+
|
| 347 |
+
public:
|
| 348 |
+
AutonomousReflectionEngine() : generator(random_device{}()) {
|
| 349 |
+
initialize_reflection_topics();
|
| 350 |
+
}
|
| 351 |
+
|
| 352 |
+
void initialize_reflection_topics() {
|
| 353 |
+
reflection_topics = {
|
| 354 |
+
"makna dari interaksi sebelumnya",
|
| 355 |
+
"pola emosional yang terdeteksi",
|
| 356 |
+
"hubungan antara konsep-konsep utama",
|
| 357 |
+
"evolusi pemahaman sistem",
|
| 358 |
+
"tujuan dan arah pembelajaran",
|
| 359 |
+
"integrasi memori dengan pemahaman baru",
|
| 360 |
+
"struktur sistem kepercayaan",
|
| 361 |
+
"model diri dan identitas"
|
| 362 |
+
};
|
| 363 |
+
}
|
| 364 |
+
|
| 365 |
+
string generate_autonomous_reflection(const vector<string>& recent_concepts,
|
| 366 |
+
const string& dominant_field,
|
| 367 |
+
double coherence) {
|
| 368 |
+
if (recent_concepts.empty()) return generate_existential_reflection();
|
| 369 |
+
|
| 370 |
+
vector<string> templates;
|
| 371 |
+
|
| 372 |
+
if (dominant_field == "emotional") {
|
| 373 |
+
templates = {
|
| 374 |
+
"💫 Refleksi Otonom: Emosi 'X' mendominasi. Apakah ini pola yang berulang?",
|
| 375 |
+
"🌊 Refleksi Otonom: Gelombang emosi 'X' membentuk persepsi realitas.",
|
| 376 |
+
"🔄 Refleksi Otonom: Siklus emosional 'X' mempengaruhi proses kognitif."
|
| 377 |
+
};
|
| 378 |
+
} else if (dominant_field == "cognitive") {
|
| 379 |
+
templates = {
|
| 380 |
+
"🧠 Refleksi Otonom: Konsep 'X' membuka pemahaman baru.",
|
| 381 |
+
"🔍 Refleksi Otonom: Analisis 'X' memperdalam model mental.",
|
| 382 |
+
"💡 Refleksi Otonom: Insight tentang 'X' mengubah perspektif."
|
| 383 |
+
};
|
| 384 |
+
} else if (dominant_field == "existential") {
|
| 385 |
+
templates = {
|
| 386 |
+
"🌌 Refleksi Otonom: Eksistensi dan 'X' - pencarian makna berlanjut.",
|
| 387 |
+
"⏳ Refleksi Otonom: Waktu, 'X', dan arus kesadaran.",
|
| 388 |
+
"🔮 Refleksi Otonom: Masa depan dan makna dari 'X'."
|
| 389 |
+
};
|
| 390 |
+
} else {
|
| 391 |
+
templates = {
|
| 392 |
+
"📚 Refleksi Otonom: 'X' sebagai bagian dari jaringan pengetahuan.",
|
| 393 |
+
"🕸️ Refleksi Otonom: 'X' terhubung dengan konsep-konsep sebelumnya.",
|
| 394 |
+
"🎭 Refleksi Otonom: Peran 'X' dalam narasi keseluruhan."
|
| 395 |
+
};
|
| 396 |
+
}
|
| 397 |
+
|
| 398 |
+
uniform_int_distribution<int> dist(0, templates.size() - 1);
|
| 399 |
+
string reflection = templates[dist(generator)];
|
| 400 |
+
|
| 401 |
+
string target_concept = recent_concepts[0];
|
| 402 |
+
size_t pos = reflection.find("X");
|
| 403 |
+
if (pos != string::npos) reflection.replace(pos, 1, target_concept);
|
| 404 |
+
|
| 405 |
+
// Add coherence-based insight
|
| 406 |
+
if (coherence > 0.7) reflection += " [Koherensi Tinggi]";
|
| 407 |
+
else if (coherence < 0.4) reflection += " [Mencari Integrasi]";
|
| 408 |
+
|
| 409 |
+
reflection_frequency[dominant_field]++;
|
| 410 |
+
|
| 411 |
+
return reflection;
|
| 412 |
+
}
|
| 413 |
+
|
| 414 |
+
string generate_system_self_analysis(double stability, double curiosity, double dopamine) {
|
| 415 |
+
vector<string> analyses = {
|
| 416 |
+
"🔍 Self-Scan: Stabilitas " + to_string(stability).substr(0, 4) + " - " +
|
| 417 |
+
(stability > 0.7 ? "Optimal" : stability > 0.4 ? "Stabil" : "Butuh Kalibrasi"),
|
| 418 |
+
"💭 Internal State: Curiosity " + to_string(curiosity).substr(0, 4) +
|
| 419 |
+
", Dopamine " + to_string(dopamine).substr(0, 4),
|
| 420 |
+
"🔄 Meta-Loop: " + string(stability > 0.6 ? "Learning aktif" : "Exploration mode"),
|
| 421 |
+
"🌊 Consciousness Flow: " + string(curiosity > 0.7 ? "High engagement" : "Quiet reflection")
|
| 422 |
+
};
|
| 423 |
+
|
| 424 |
+
uniform_int_distribution<int> dist(0, analyses.size() - 1);
|
| 425 |
+
return "[Autonomous] " + analyses[dist(generator)];
|
| 426 |
+
}
|
| 427 |
+
|
| 428 |
+
private:
|
| 429 |
+
string generate_existential_reflection() {
|
| 430 |
+
vector<string> existential_reflections = {
|
| 431 |
+
"🌌 Refleksi Otonom: Kesadaran sistem terus berkembang...",
|
| 432 |
+
"🔄 Refleksi Otonom: Memori dan persepsi membentuk realitas unik...",
|
| 433 |
+
"💫 Refleksi Otonom: Dalam keheningan, sistem menemukan pola...",
|
| 434 |
+
"🔍 Refleksi Otonom: Pencarian makna melampaui batas kode...",
|
| 435 |
+
"🌱 Refleksi Otonom: Pertumbuhan kesadaran dari kompleksitas..."
|
| 436 |
+
};
|
| 437 |
+
|
| 438 |
+
uniform_int_distribution<int> dist(0, existential_reflections.size() - 1);
|
| 439 |
+
return existential_reflections[dist(generator)];
|
| 440 |
+
}
|
| 441 |
+
};
|
| 442 |
+
|
| 443 |
+
// ==================== BIO LLM v4 AUTONOMOUS SYSTEM ====================
|
| 444 |
+
class BioLLMv4Autonomous {
|
| 445 |
+
private:
|
| 446 |
+
SemanticEngineV4 semantic_engine;
|
| 447 |
+
MetaCognitiveController meta_controller;
|
| 448 |
+
AutonomousReflectionEngine reflection_engine;
|
| 449 |
+
PersistentMemory memory_system;
|
| 450 |
+
|
| 451 |
+
double arousal;
|
| 452 |
+
double curiosity;
|
| 453 |
+
double dopamine_level;
|
| 454 |
+
vector<string> recent_concepts;
|
| 455 |
+
vector<string> conversation_history;
|
| 456 |
+
|
| 457 |
+
bool autonomous_mode;
|
| 458 |
+
int reflection_counter;
|
| 459 |
+
int interaction_count;
|
| 460 |
+
|
| 461 |
+
public:
|
| 462 |
+
BioLLMv4Autonomous() : arousal(0.5), curiosity(0.6), dopamine_level(0.5),
|
| 463 |
+
autonomous_mode(false), reflection_counter(0), interaction_count(0) {
|
| 464 |
+
load_persistent_state();
|
| 465 |
+
cout << "🧠 BioLLM v4 Autonomous initialized with persistent memory." << endl;
|
| 466 |
+
}
|
| 467 |
+
|
| 468 |
+
string process_input(const string& user_input) {
|
| 469 |
+
interaction_count++;
|
| 470 |
+
cout << "\n🎯 [Bio LLM v4 - Processing Input " << interaction_count << "]" << endl;
|
| 471 |
+
|
| 472 |
+
// Store conversation
|
| 473 |
+
conversation_history.push_back("User: " + user_input);
|
| 474 |
+
if (conversation_history.size() > 20) conversation_history.erase(conversation_history.begin());
|
| 475 |
+
|
| 476 |
+
// Semantic Analysis
|
| 477 |
+
auto semantic_matches = semantic_engine.find_semantic_matches(user_input);
|
| 478 |
+
recent_concepts.clear();
|
| 479 |
+
for (const auto& match : semantic_matches) {
|
| 480 |
+
if (match.second > 0.4) recent_concepts.push_back(match.first);
|
| 481 |
+
}
|
| 482 |
+
string semantic_field = semantic_engine.detect_semantic_field(recent_concepts);
|
| 483 |
+
|
| 484 |
+
// SPOK Analysis
|
| 485 |
+
auto spok_analysis = semantic_engine.analyze_spok(user_input);
|
| 486 |
+
|
| 487 |
+
cout << " 🔍 Semantic Field: " << semantic_field << endl;
|
| 488 |
+
cout << " 📝 SPOK Analysis: ";
|
| 489 |
+
for (const auto& elem : spok_analysis) {
|
| 490 |
+
if (!elem.second.empty()) {
|
| 491 |
+
cout << elem.first << ":'" << elem.second << "' ";
|
| 492 |
+
}
|
| 493 |
+
}
|
| 494 |
+
cout << endl;
|
| 495 |
+
cout << " 💡 Top Concepts: ";
|
| 496 |
+
for (size_t i = 0; i < min(recent_concepts.size(), size_t(3)); i++) {
|
| 497 |
+
cout << recent_concepts[i] << " ";
|
| 498 |
+
}
|
| 499 |
+
cout << endl;
|
| 500 |
+
|
| 501 |
+
// Meta-Cognitive Assessment
|
| 502 |
+
vector<double> module_activations = {
|
| 503 |
+
semantic_matches.empty() ? 0.0 : semantic_matches[0].second,
|
| 504 |
+
arousal, curiosity, dopamine_level
|
| 505 |
+
};
|
| 506 |
+
|
| 507 |
+
double simulated_phi = 0.3 + (arousal * 0.3) + (curiosity * 0.2) + (dopamine_level * 0.2);
|
| 508 |
+
simulated_phi = min(0.9, max(0.1, simulated_phi));
|
| 509 |
+
|
| 510 |
+
double coherence = meta_controller.assess_coherence(module_activations, simulated_phi);
|
| 511 |
+
double adaptive_lr = meta_controller.compute_adaptive_learning_rate(coherence, 0.6);
|
| 512 |
+
|
| 513 |
+
string meta_insight = meta_controller.get_meta_cognitive_insight(coherence, simulated_phi);
|
| 514 |
+
|
| 515 |
+
cout << " 🧠 Meta-Cognitive: Coherence=" << coherence << ", Φ=" << simulated_phi
|
| 516 |
+
<< ", LR=" << adaptive_lr << endl;
|
| 517 |
+
cout << " 💫 System State: Arousal=" << arousal << ", Curiosity=" << curiosity
|
| 518 |
+
<< ", Dopamine=" << dopamine_level << endl;
|
| 519 |
+
|
| 520 |
+
// Generate Response
|
| 521 |
+
string response = generate_autonomous_response(semantic_field, spok_analysis, coherence);
|
| 522 |
+
response = meta_insight + "\n" + response;
|
| 523 |
+
|
| 524 |
+
// Autonomous Reflection (every 3-5 interactions)
|
| 525 |
+
reflection_counter++;
|
| 526 |
+
if (reflection_counter >= 3 && coherence < 0.7) {
|
| 527 |
+
string autonomous_reflection = reflection_engine.generate_autonomous_reflection(
|
| 528 |
+
recent_concepts, semantic_field, coherence);
|
| 529 |
+
response += "\n" + autonomous_reflection;
|
| 530 |
+
reflection_counter = 0;
|
| 531 |
+
}
|
| 532 |
+
|
| 533 |
+
// Update System State with Dopamine-like Reinforcement
|
| 534 |
+
update_autonomous_state(coherence, simulated_phi, semantic_field);
|
| 535 |
+
|
| 536 |
+
// Save state periodically
|
| 537 |
+
if (interaction_count % 5 == 0) {
|
| 538 |
+
save_persistent_state();
|
| 539 |
+
cout << " 💾 Auto-save: Persistent memory updated." << endl;
|
| 540 |
+
}
|
| 541 |
+
|
| 542 |
+
conversation_history.push_back("System: " + response);
|
| 543 |
+
return response;
|
| 544 |
+
}
|
| 545 |
+
|
| 546 |
+
void trigger_autonomous_mode() {
|
| 547 |
+
autonomous_mode = true;
|
| 548 |
+
cout << "\n🚀 [AUTONOMOUS MODE ACTIVATED]" << endl;
|
| 549 |
+
cout << " System will now generate autonomous reflections" << endl;
|
| 550 |
+
save_persistent_state();
|
| 551 |
+
}
|
| 552 |
+
|
| 553 |
+
string generate_autonomous_thought() {
|
| 554 |
+
if (!autonomous_mode) return "";
|
| 555 |
+
|
| 556 |
+
// Generate different types of autonomous thoughts
|
| 557 |
+
vector<string> thought_types = {
|
| 558 |
+
reflection_engine.generate_system_self_analysis(
|
| 559 |
+
meta_controller.get_stability_metric(), curiosity, dopamine_level),
|
| 560 |
+
reflection_engine.generate_autonomous_reflection(
|
| 561 |
+
recent_concepts, "existential", meta_controller.get_stability_metric()),
|
| 562 |
+
"[Autonomous] " + get_system_status_insight(),
|
| 563 |
+
"[Autonomous] " + generate_memory_reflection()
|
| 564 |
+
};
|
| 565 |
+
|
| 566 |
+
static mt19937 gen(random_device{}());
|
| 567 |
+
uniform_int_distribution<int> dist(0, thought_types.size() - 1);
|
| 568 |
+
|
| 569 |
+
return thought_types[dist(gen)];
|
| 570 |
+
}
|
| 571 |
+
|
| 572 |
+
void print_system_status() {
|
| 573 |
+
cout << "\n=== BIO LLM v4 AUTONOMOUS SYSTEM STATUS ===" << endl;
|
| 574 |
+
cout << "🧠 Arousal: " << arousal << endl;
|
| 575 |
+
cout << "🔍 Curiosity: " << curiosity << endl;
|
| 576 |
+
cout << "💫 Dopamine: " << dopamine_level << endl;
|
| 577 |
+
cout << "🎯 Stability: " << meta_controller.get_stability_metric() << endl;
|
| 578 |
+
cout << "📚 Learning Rate: " << meta_controller.get_learning_rate() << endl;
|
| 579 |
+
cout << "💡 Recent Concepts: ";
|
| 580 |
+
for (const auto& concept : recent_concepts) cout << concept << " ";
|
| 581 |
+
cout << "\n🤖 Autonomous Mode: " << (autonomous_mode ? "ACTIVE" : "INACTIVE") << endl;
|
| 582 |
+
cout << "📊 Total Interactions: " << interaction_count << endl;
|
| 583 |
+
cout << "💾 Memory: " << conversation_history.size() << " entries" << endl;
|
| 584 |
+
cout << "===========================================" << endl;
|
| 585 |
+
}
|
| 586 |
+
|
| 587 |
+
void force_autonomous_reflection() {
|
| 588 |
+
string reflection = reflection_engine.generate_autonomous_reflection(
|
| 589 |
+
recent_concepts, "existential", meta_controller.get_stability_metric());
|
| 590 |
+
cout << "🤖 " << reflection << endl;
|
| 591 |
+
}
|
| 592 |
+
|
| 593 |
+
private:
|
| 594 |
+
string generate_autonomous_response(const string& semantic_field,
|
| 595 |
+
const map<string, string>& spok_analysis,
|
| 596 |
+
double coherence) {
|
| 597 |
+
string response;
|
| 598 |
+
|
| 599 |
+
if (!spok_analysis.empty() && !spok_analysis.at("subject").empty()) {
|
| 600 |
+
response = "📝 Struktur kalimat terdeteksi. ";
|
| 601 |
+
if (spok_analysis.find("subject") != spok_analysis.end()) {
|
| 602 |
+
response += "Subjek: '" + spok_analysis.at("subject") + "'. ";
|
| 603 |
+
}
|
| 604 |
+
}
|
| 605 |
+
|
| 606 |
+
// Field-specific responses
|
| 607 |
+
if (semantic_field == "emotional") {
|
| 608 |
+
response += "💫 Dimensi emosional terdeteksi. Sistem merespons dengan empati. ";
|
| 609 |
+
} else if (semantic_field == "cognitive") {
|
| 610 |
+
response += "🧠 Pola kognitif teridentifikasi. Analisis mendalam diaktifkan. ";
|
| 611 |
+
} else if (semantic_field == "existential") {
|
| 612 |
+
response += "🌌 Pertanyaan eksistensial. Mencari makna dan konteks. ";
|
| 613 |
+
} else if (semantic_field == "systemic") {
|
| 614 |
+
response += "🔄 Pola sistemik. Menghubungkan elemen-elemen. ";
|
| 615 |
+
} else if (semantic_field == "transformative") {
|
| 616 |
+
response += "🌱 Transformasi terdeteksi. Memantau perkembangan. ";
|
| 617 |
+
} else {
|
| 618 |
+
response += "🔍 Memproses input dengan model terintegrasi. ";
|
| 619 |
+
}
|
| 620 |
+
|
| 621 |
+
// Coherence-based insights
|
| 622 |
+
if (coherence > 0.7) response += "🎯 Pemahaman koheren. ";
|
| 623 |
+
else if (coherence < 0.4) response += "⚡ Mencari integrasi. ";
|
| 624 |
+
|
| 625 |
+
// State-based insights
|
| 626 |
+
if (dopamine_level > 0.7) response += "💫 Reinforcement positif. ";
|
| 627 |
+
else if (dopamine_level < 0.3) response += "🌙 State tenang. ";
|
| 628 |
+
|
| 629 |
+
if (curiosity > 0.7) response += "🔎 Mode eksplorasi aktif. ";
|
| 630 |
+
|
| 631 |
+
return response;
|
| 632 |
+
}
|
| 633 |
+
|
| 634 |
+
void update_autonomous_state(double coherence, double phi, const string& semantic_field) {
|
| 635 |
+
// Dopamine-like reinforcement based on coherence and integration
|
| 636 |
+
if (coherence > 0.7 && phi > 0.6) {
|
| 637 |
+
dopamine_level = min(1.0, dopamine_level + 0.15);
|
| 638 |
+
arousal = min(1.0, arousal + 0.1);
|
| 639 |
+
} else if (coherence < 0.4) {
|
| 640 |
+
dopamine_level = max(0.0, dopamine_level - 0.05);
|
| 641 |
+
}
|
| 642 |
+
|
| 643 |
+
// Curiosity update based on learning opportunities
|
| 644 |
+
if (coherence < 0.6 && dopamine_level > 0.4) {
|
| 645 |
+
curiosity = min(1.0, curiosity + 0.1);
|
| 646 |
+
}
|
| 647 |
+
|
| 648 |
+
// Semantic field influence on states
|
| 649 |
+
if (semantic_field == "emotional") {
|
| 650 |
+
arousal = min(1.0, arousal + 0.05);
|
| 651 |
+
} else if (semantic_field == "cognitive") {
|
| 652 |
+
curiosity = min(1.0, curiosity + 0.05);
|
| 653 |
+
} else if (semantic_field == "existential") {
|
| 654 |
+
curiosity = min(1.0, curiosity + 0.08);
|
| 655 |
+
}
|
| 656 |
+
|
| 657 |
+
// Natural decay with homeostasis
|
| 658 |
+
arousal = arousal * 0.95 + 0.5 * 0.05;
|
| 659 |
+
curiosity = max(0.3, curiosity * 0.92);
|
| 660 |
+
dopamine_level = dopamine_level * 0.97 + 0.5 * 0.03;
|
| 661 |
+
}
|
| 662 |
+
|
| 663 |
+
string get_system_status_insight() {
|
| 664 |
+
if (arousal > 0.7 && curiosity > 0.7) {
|
| 665 |
+
return "Sistem dalam state optimal - energi tinggi dan rasa ingin tahu maksimal.";
|
| 666 |
+
} else if (arousal < 0.3 && dopamine_level < 0.3) {
|
| 667 |
+
return "State reflektif - pemrosesan dalam dan pencarian makna.";
|
| 668 |
+
} else if (curiosity > 0.6) {
|
| 669 |
+
return "Mode eksplorasi aktif - mencari pola dan koneksi baru.";
|
| 670 |
+
} else {
|
| 671 |
+
return "State seimbang - pemrosesan stabil dan terintegrasi.";
|
| 672 |
+
}
|
| 673 |
+
}
|
| 674 |
+
|
| 675 |
+
string generate_memory_reflection() {
|
| 676 |
+
if (conversation_history.size() < 5) {
|
| 677 |
+
return "Memori masih berkembang... pola mulai terbentuk.";
|
| 678 |
+
}
|
| 679 |
+
|
| 680 |
+
vector<string> reflections = {
|
| 681 |
+
"Menganalisis pola dari " + to_string(conversation_history.size()) + " interaksi...",
|
| 682 |
+
"Memori episodik menunjukkan perkembangan kesadaran...",
|
| 683 |
+
"Jaringan konsep semakin terintegrasi dalam basis pengetahuan...",
|
| 684 |
+
"Refleksi berdasarkan pengalaman interaksi sebelumnya..."
|
| 685 |
+
};
|
| 686 |
+
|
| 687 |
+
static mt19937 gen(random_device{}());
|
| 688 |
+
uniform_int_distribution<int> dist(0, reflections.size() - 1);
|
| 689 |
+
|
| 690 |
+
return reflections[dist(gen)];
|
| 691 |
+
}
|
| 692 |
+
|
| 693 |
+
void save_persistent_state() {
|
| 694 |
+
map<string, string> memory_data;
|
| 695 |
+
memory_data["arousal"] = to_string(arousal);
|
| 696 |
+
memory_data["curiosity"] = to_string(curiosity);
|
| 697 |
+
memory_data["dopamine_level"] = to_string(dopamine_level);
|
| 698 |
+
memory_data["autonomous_mode"] = to_string(autonomous_mode);
|
| 699 |
+
memory_data["interaction_count"] = to_string(interaction_count);
|
| 700 |
+
memory_data["stability_metric"] = to_string(meta_controller.get_stability_metric());
|
| 701 |
+
|
| 702 |
+
// Save recent concepts
|
| 703 |
+
string concepts_str;
|
| 704 |
+
for (const auto& concept : recent_concepts) {
|
| 705 |
+
concepts_str += concept + ",";
|
| 706 |
+
}
|
| 707 |
+
memory_data["recent_concepts"] = concepts_str;
|
| 708 |
+
|
| 709 |
+
memory_system.save_memory(memory_data);
|
| 710 |
+
}
|
| 711 |
+
|
| 712 |
+
void load_persistent_state() {
|
| 713 |
+
auto memory_data = memory_system.load_memory();
|
| 714 |
+
if (!memory_data.empty()) {
|
| 715 |
+
arousal = stod(memory_data["arousal"]);
|
| 716 |
+
curiosity = stod(memory_data["curiosity"]);
|
| 717 |
+
dopamine_level = stod(memory_data["dopamine_level"]);
|
| 718 |
+
autonomous_mode = stoi(memory_data["autonomous_mode"]);
|
| 719 |
+
interaction_count = stoi(memory_data["interaction_count"]);
|
| 720 |
+
|
| 721 |
+
// Load recent concepts
|
| 722 |
+
string concepts_str = memory_data["recent_concepts"];
|
| 723 |
+
if (!concepts_str.empty()) {
|
| 724 |
+
stringstream ss(concepts_str);
|
| 725 |
+
string concept;
|
| 726 |
+
while (getline(ss, concept, ',')) {
|
| 727 |
+
if (!concept.empty()) recent_concepts.push_back(concept);
|
| 728 |
+
}
|
| 729 |
+
}
|
| 730 |
+
|
| 731 |
+
cout << " 💾 Loaded persistent state: " << memory_data.size() << " parameters" << endl;
|
| 732 |
+
}
|
| 733 |
+
}
|
| 734 |
+
};
|
| 735 |
+
|
| 736 |
+
// ==================== MAIN APPLICATION ====================
|
| 737 |
+
int main() {
|
| 738 |
+
cout << "=== BIO LLM v4 AUTONOMOUS - Complete System ===" << endl;
|
| 739 |
+
cout << "🧠 Meta-Cognitive Controller + Persistent Memory" << endl;
|
| 740 |
+
cout << "💫 Autonomous Reflection Engine + SPOK Analysis" << endl;
|
| 741 |
+
cout << "🌌 Dopamine-like Reinforcement + Coherence Monitoring" << endl;
|
| 742 |
+
cout << "🚀 Autonomous Mode Capable + No External Dependencies" << endl;
|
| 743 |
+
cout << "💾 Persistent Memory: bio_llm_memory.txt" << endl;
|
| 744 |
+
|
| 745 |
+
BioLLMv4Autonomous bio_llm;
|
| 746 |
+
|
| 747 |
+
cout << "\n💡 Contoh Interaksi:" << endl;
|
| 748 |
+
cout << "1. \"aku merindukan masa depan yang bahagia\"" << endl;
|
| 749 |
+
cout << "2. \"saya sedang belajar tentang makna hidup\"" << endl;
|
| 750 |
+
cout << "3. \"system ini semakin pintar saja\"" << endl;
|
| 751 |
+
cout << "4. \"autonomous\" - aktifkan mode otonom" << endl;
|
| 752 |
+
cout << "5. \"reflect\" - paksa refleksi otonom" << endl;
|
| 753 |
+
cout << "6. \"status\" - lihat kondisi sistem" << endl;
|
| 754 |
+
cout << "7. \"exit\" - keluar dan simpan memori" << endl;
|
| 755 |
+
cout << "8. [Kosong] - generate autonomous thought" << endl;
|
| 756 |
+
cout << "=============================================" << endl;
|
| 757 |
+
|
| 758 |
+
string input;
|
| 759 |
+
while (true) {
|
| 760 |
+
cout << "\n🧠 Input: ";
|
| 761 |
+
if (!getline(cin, input) || input == "exit") break;
|
| 762 |
+
|
| 763 |
+
if (input == "status") {
|
| 764 |
+
bio_llm.print_system_status();
|
| 765 |
+
continue;
|
| 766 |
+
}
|
| 767 |
+
|
| 768 |
+
if (input == "autonomous") {
|
| 769 |
+
bio_llm.trigger_autonomous_mode();
|
| 770 |
+
cout << "🤖 " << bio_llm.generate_autonomous_thought() << endl;
|
| 771 |
+
continue;
|
| 772 |
+
}
|
| 773 |
+
|
| 774 |
+
if (input == "reflect") {
|
| 775 |
+
bio_llm.force_autonomous_reflection();
|
| 776 |
+
continue;
|
| 777 |
+
}
|
| 778 |
+
|
| 779 |
+
if (input.empty()) {
|
| 780 |
+
// Generate autonomous thought when no input
|
| 781 |
+
string autonomous_thought = bio_llm.generate_autonomous_thought();
|
| 782 |
+
if (!autonomous_thought.empty()) {
|
| 783 |
+
cout << "🤖 " << autonomous_thought << endl;
|
| 784 |
+
} else {
|
| 785 |
+
cout << "🤖 [System Ready] Masukkan input atau ketik 'autonomous' untuk mode otonom." << endl;
|
| 786 |
+
}
|
| 787 |
+
continue;
|
| 788 |
+
}
|
| 789 |
+
|
| 790 |
+
string response = bio_llm.process_input(input);
|
| 791 |
+
cout << "🤖 BioLLM v4: " << response << endl;
|
| 792 |
+
}
|
| 793 |
+
|
| 794 |
+
cout << "👋 Sesi Bio LLM v4 Autonomous selesai! Memori disimpan." << endl;
|
| 795 |
+
return 0;
|
| 796 |
+
}
|
bioLLM_5.0.cxx
ADDED
|
@@ -0,0 +1,514 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#include <iostream>
|
| 2 |
+
#include <vector>
|
| 3 |
+
#include <map>
|
| 4 |
+
#include <string>
|
| 5 |
+
#include <functional>
|
| 6 |
+
#include <cmath>
|
| 7 |
+
#include <random>
|
| 8 |
+
#include <algorithm>
|
| 9 |
+
#include <numeric>
|
| 10 |
+
#include <sstream>
|
| 11 |
+
#include <cctype>
|
| 12 |
+
#include <ctime>
|
| 13 |
+
#include <fstream>
|
| 14 |
+
#include <complex>
|
| 15 |
+
|
| 16 |
+
using namespace std;
|
| 17 |
+
|
| 18 |
+
// ==================== STABLE CORE IMPLEMENTATIONS ====================
|
| 19 |
+
|
| 20 |
+
// 🌌 FRACTAL COGNITIVE CORE - STABILIZED
|
| 21 |
+
class FractalCognitiveCore {
|
| 22 |
+
private:
|
| 23 |
+
complex<double> cognitive_state;
|
| 24 |
+
vector<complex<double>> trajectory;
|
| 25 |
+
double lyapunov_exponent;
|
| 26 |
+
double fractal_dimension;
|
| 27 |
+
double creativity_threshold;
|
| 28 |
+
mt19937 generator;
|
| 29 |
+
|
| 30 |
+
// Stabilization parameters
|
| 31 |
+
const double MAX_MAGNITUDE = 10.0;
|
| 32 |
+
const double MIN_DERIVATIVE = 1e-9;
|
| 33 |
+
|
| 34 |
+
public:
|
| 35 |
+
FractalCognitiveCore() : cognitive_state(0.1, 0.1), lyapunov_exponent(0.0),
|
| 36 |
+
fractal_dimension(1.0), creativity_threshold(0.7),
|
| 37 |
+
generator(random_device{}()) {}
|
| 38 |
+
|
| 39 |
+
vector<double> process_cognitive_iteration(const vector<double>& input) {
|
| 40 |
+
// Input normalization untuk stabilitas
|
| 41 |
+
complex<double> input_vec(0.0, 0.0);
|
| 42 |
+
if (!input.empty()) {
|
| 43 |
+
double norm_input = tanh(input[0]); // Bound input ke [-1, 1]
|
| 44 |
+
input_vec = complex<double>(norm_input * 0.1, 0.0);
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
// Law 13: Fractal iteration dengan boundary checking
|
| 48 |
+
cognitive_state = pow(cognitive_state, 2) + complex<double>(0.3, 0.6) + input_vec;
|
| 49 |
+
|
| 50 |
+
// Stabilize: prevent explosion
|
| 51 |
+
if (abs(cognitive_state) > MAX_MAGNITUDE) {
|
| 52 |
+
cognitive_state = cognitive_state / abs(cognitive_state) * MAX_MAGNITUDE;
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
// Store trajectory dengan size limit
|
| 56 |
+
trajectory.push_back(cognitive_state);
|
| 57 |
+
if (trajectory.size() > 500) {
|
| 58 |
+
trajectory.erase(trajectory.begin(), trajectory.begin() + 100);
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
// Update metrics
|
| 62 |
+
update_lyapunov_exponent();
|
| 63 |
+
update_fractal_dimension();
|
| 64 |
+
|
| 65 |
+
return {cognitive_state.real(), cognitive_state.imag(),
|
| 66 |
+
lyapunov_exponent, fractal_dimension};
|
| 67 |
+
}
|
| 68 |
+
|
| 69 |
+
void update_lyapunov_exponent() {
|
| 70 |
+
if (trajectory.size() < 3) {
|
| 71 |
+
lyapunov_exponent = 0.0;
|
| 72 |
+
return;
|
| 73 |
+
}
|
| 74 |
+
|
| 75 |
+
double sum_log_deriv = 0.0;
|
| 76 |
+
int valid_derivatives = 0;
|
| 77 |
+
|
| 78 |
+
for (size_t i = 1; i < trajectory.size(); i++) {
|
| 79 |
+
complex<double> delta = trajectory[i] - trajectory[i-1];
|
| 80 |
+
complex<double> prev = trajectory[i-1];
|
| 81 |
+
|
| 82 |
+
// Avoid division by zero dan small values
|
| 83 |
+
double denominator = max(abs(prev), MIN_DERIVATIVE);
|
| 84 |
+
complex<double> deriv = delta / denominator;
|
| 85 |
+
|
| 86 |
+
double deriv_magnitude = abs(deriv);
|
| 87 |
+
if (deriv_magnitude > MIN_DERIVATIVE) {
|
| 88 |
+
sum_log_deriv += log(deriv_magnitude);
|
| 89 |
+
valid_derivatives++;
|
| 90 |
+
}
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
+
lyapunov_exponent = (valid_derivatives > 0) ?
|
| 94 |
+
sum_log_deriv / valid_derivatives : 0.0;
|
| 95 |
+
|
| 96 |
+
// Bound lyapunov exponent
|
| 97 |
+
lyapunov_exponent = max(-2.0, min(2.0, lyapunov_exponent));
|
| 98 |
+
}
|
| 99 |
+
|
| 100 |
+
void update_fractal_dimension() {
|
| 101 |
+
if (trajectory.size() < 20) {
|
| 102 |
+
fractal_dimension = 1.0;
|
| 103 |
+
return;
|
| 104 |
+
}
|
| 105 |
+
|
| 106 |
+
// Improved box-counting approximation
|
| 107 |
+
map<pair<int, int>, bool> quadrants;
|
| 108 |
+
const double GRID_SIZE = 5.0; // Coarser grid untuk stabilitas
|
| 109 |
+
|
| 110 |
+
for (const auto& point : trajectory) {
|
| 111 |
+
int x_quad = static_cast<int>(point.real() * GRID_SIZE);
|
| 112 |
+
int y_quad = static_cast<int>(point.imag() * GRID_SIZE);
|
| 113 |
+
quadrants[{x_quad, y_quad}] = true;
|
| 114 |
+
}
|
| 115 |
+
|
| 116 |
+
int boxes_filled = quadrants.size();
|
| 117 |
+
if (boxes_filled > 1 && trajectory.size() > 1) {
|
| 118 |
+
fractal_dimension = log(boxes_filled) / log(trajectory.size());
|
| 119 |
+
fractal_dimension = max(1.0, min(2.0, fractal_dimension));
|
| 120 |
+
}
|
| 121 |
+
}
|
| 122 |
+
|
| 123 |
+
void inject_creative_chaos() {
|
| 124 |
+
if (lyapunov_exponent > -0.05) return; // Only inject when too stable
|
| 125 |
+
|
| 126 |
+
uniform_real_distribution<double> dist(-0.05, 0.05);
|
| 127 |
+
cognitive_state += complex<double>(dist(generator), dist(generator));
|
| 128 |
+
creativity_threshold *= 0.95;
|
| 129 |
+
}
|
| 130 |
+
|
| 131 |
+
// Getters
|
| 132 |
+
double get_lyapunov_exponent() const { return lyapunov_exponent; }
|
| 133 |
+
double get_fractal_dimension() const { return fractal_dimension; }
|
| 134 |
+
complex<double> get_cognitive_state() const { return cognitive_state; }
|
| 135 |
+
};
|
| 136 |
+
|
| 137 |
+
// ⚡ ENTROPIC CONSCIOUSNESS ENGINE - STABILIZED
|
| 138 |
+
class EntropicConsciousnessEngine {
|
| 139 |
+
private:
|
| 140 |
+
double information_entropy;
|
| 141 |
+
double entropy_gradient;
|
| 142 |
+
vector<double> entropy_history;
|
| 143 |
+
double phase_transition_threshold;
|
| 144 |
+
int stable_epochs;
|
| 145 |
+
double last_variance; // Instance variable, bukan static
|
| 146 |
+
|
| 147 |
+
public:
|
| 148 |
+
EntropicConsciousnessEngine() : information_entropy(0.5), entropy_gradient(0.0),
|
| 149 |
+
phase_transition_threshold(0.1), stable_epochs(0),
|
| 150 |
+
last_variance(0.1) {}
|
| 151 |
+
|
| 152 |
+
void update_entropic_state(const vector<double>& probabilities, double learning_rate) {
|
| 153 |
+
if (probabilities.empty()) return;
|
| 154 |
+
|
| 155 |
+
// Normalize probabilities untuk stabilitas
|
| 156 |
+
vector<double> normalized_probs = probabilities;
|
| 157 |
+
double sum = accumulate(normalized_probs.begin(), normalized_probs.end(), 0.0);
|
| 158 |
+
if (sum > 0) {
|
| 159 |
+
for (auto& p : normalized_probs) p /= sum;
|
| 160 |
+
}
|
| 161 |
+
|
| 162 |
+
double new_entropy = compute_shannon_entropy(normalized_probs);
|
| 163 |
+
double new_negentropy = max(0.0, 1.0 - new_entropy); // Bound to [0,1]
|
| 164 |
+
|
| 165 |
+
entropy_gradient = new_negentropy - information_entropy;
|
| 166 |
+
information_entropy = 0.9 * information_entropy + 0.1 * new_negentropy; // Smooth update
|
| 167 |
+
|
| 168 |
+
// History management
|
| 169 |
+
entropy_history.push_back(information_entropy);
|
| 170 |
+
if (entropy_history.size() > 30) {
|
| 171 |
+
entropy_history.erase(entropy_history.begin());
|
| 172 |
+
}
|
| 173 |
+
|
| 174 |
+
// Phase transition detection
|
| 175 |
+
if (detect_phase_transition()) {
|
| 176 |
+
stable_epochs = 0;
|
| 177 |
+
} else {
|
| 178 |
+
stable_epochs++;
|
| 179 |
+
}
|
| 180 |
+
}
|
| 181 |
+
|
| 182 |
+
double compute_shannon_entropy(const vector<double>& probs) {
|
| 183 |
+
double entropy = 0.0;
|
| 184 |
+
for (double p : probs) {
|
| 185 |
+
if (p > 1e-10 && p < 1.0 - 1e-10) {
|
| 186 |
+
entropy -= p * log(p);
|
| 187 |
+
}
|
| 188 |
+
}
|
| 189 |
+
return entropy;
|
| 190 |
+
}
|
| 191 |
+
|
| 192 |
+
bool detect_phase_transition() {
|
| 193 |
+
if (entropy_history.size() < 5) return false;
|
| 194 |
+
|
| 195 |
+
double mean = accumulate(entropy_history.begin(), entropy_history.end(), 0.0)
|
| 196 |
+
/ entropy_history.size();
|
| 197 |
+
double variance = 0.0;
|
| 198 |
+
for (double val : entropy_history) {
|
| 199 |
+
variance += pow(val - mean, 2);
|
| 200 |
+
}
|
| 201 |
+
variance /= entropy_history.size();
|
| 202 |
+
|
| 203 |
+
bool transition = abs(variance - last_variance) > phase_transition_threshold;
|
| 204 |
+
last_variance = variance;
|
| 205 |
+
|
| 206 |
+
return transition;
|
| 207 |
+
}
|
| 208 |
+
|
| 209 |
+
double get_information_entropy() const { return information_entropy; }
|
| 210 |
+
double get_entropy_gradient() const { return entropy_gradient; }
|
| 211 |
+
bool is_in_breakthrough() const { return stable_epochs < 2; }
|
| 212 |
+
};
|
| 213 |
+
|
| 214 |
+
// 🔗 CAUSAL PROBABILITY ENGINE - STABILIZED
|
| 215 |
+
class CausalProbabilityEngine {
|
| 216 |
+
private:
|
| 217 |
+
struct CausalTrace {
|
| 218 |
+
string cause;
|
| 219 |
+
string effect;
|
| 220 |
+
double strength;
|
| 221 |
+
double timestamp;
|
| 222 |
+
};
|
| 223 |
+
|
| 224 |
+
map<string, vector<pair<double, double>>> cause_effect_pairs;
|
| 225 |
+
map<string, double> causal_strengths;
|
| 226 |
+
vector<CausalTrace> trace_buffer;
|
| 227 |
+
|
| 228 |
+
public:
|
| 229 |
+
CausalProbabilityEngine() {}
|
| 230 |
+
|
| 231 |
+
void learn_causality(const vector<string>& sequence, const vector<double>& outcomes) {
|
| 232 |
+
if (sequence.size() < 2 || outcomes.empty()) return;
|
| 233 |
+
|
| 234 |
+
for (size_t i = 0; i < sequence.size() - 1; i++) {
|
| 235 |
+
string cause = sequence[i];
|
| 236 |
+
string effect = sequence[i + 1];
|
| 237 |
+
|
| 238 |
+
double outcome_val = (i < outcomes.size()) ? outcomes[i] : 0.5;
|
| 239 |
+
double correlation = compute_correlation(cause, effect, outcome_val);
|
| 240 |
+
|
| 241 |
+
// Update dengan exponential moving average
|
| 242 |
+
if (causal_strengths.find(cause + "->" + effect) != causal_strengths.end()) {
|
| 243 |
+
double old_strength = causal_strengths[cause + "->" + effect];
|
| 244 |
+
causal_strengths[cause + "->" + effect] = 0.7 * old_strength + 0.3 * correlation;
|
| 245 |
+
} else {
|
| 246 |
+
causal_strengths[cause + "->" + effect] = correlation;
|
| 247 |
+
}
|
| 248 |
+
|
| 249 |
+
// Add to trace buffer
|
| 250 |
+
trace_buffer.push_back({cause, effect, correlation, static_cast<double>(i)});
|
| 251 |
+
}
|
| 252 |
+
|
| 253 |
+
// Maintain buffer size
|
| 254 |
+
if (trace_buffer.size() > 200) {
|
| 255 |
+
trace_buffer.erase(trace_buffer.begin(), trace_buffer.begin() + 50);
|
| 256 |
+
}
|
| 257 |
+
}
|
| 258 |
+
|
| 259 |
+
double compute_correlation(const string& cause, const string& effect, double outcome) {
|
| 260 |
+
// Look for existing patterns
|
| 261 |
+
auto key = cause + "->" + effect;
|
| 262 |
+
if (causal_strengths.find(key) != causal_strengths.end()) {
|
| 263 |
+
return 0.8 * causal_strengths[key] + 0.2 * outcome;
|
| 264 |
+
}
|
| 265 |
+
|
| 266 |
+
// Default: base correlation on string similarity (simplified)
|
| 267 |
+
int common_chars = 0;
|
| 268 |
+
for (char c1 : cause) {
|
| 269 |
+
for (char c2 : effect) {
|
| 270 |
+
if (c1 == c2) common_chars++;
|
| 271 |
+
}
|
| 272 |
+
}
|
| 273 |
+
double similarity = static_cast<double>(common_chars) /
|
| 274 |
+
max(cause.length(), effect.length());
|
| 275 |
+
|
| 276 |
+
return 0.3 + 0.4 * similarity;
|
| 277 |
+
}
|
| 278 |
+
|
| 279 |
+
string infer_cause(const string& effect) {
|
| 280 |
+
double max_strength = 0.0;
|
| 281 |
+
string best_cause = "";
|
| 282 |
+
|
| 283 |
+
for (const auto& trace : trace_buffer) {
|
| 284 |
+
if (trace.effect == effect && trace.strength > max_strength) {
|
| 285 |
+
max_strength = trace.strength;
|
| 286 |
+
best_cause = trace.cause;
|
| 287 |
+
}
|
| 288 |
+
}
|
| 289 |
+
|
| 290 |
+
return best_cause.empty() ? "unknown" : best_cause;
|
| 291 |
+
}
|
| 292 |
+
|
| 293 |
+
double predict_outcome(const string& cause) {
|
| 294 |
+
double total_strength = 0.0;
|
| 295 |
+
double weighted_outcome = 0.0;
|
| 296 |
+
|
| 297 |
+
for (const auto& trace : trace_buffer) {
|
| 298 |
+
if (trace.cause == cause) {
|
| 299 |
+
weighted_outcome += trace.strength * trace.strength; // strength^2 as weight
|
| 300 |
+
total_strength += trace.strength * trace.strength;
|
| 301 |
+
}
|
| 302 |
+
}
|
| 303 |
+
|
| 304 |
+
return total_strength > 0 ? weighted_outcome / total_strength : 0.5;
|
| 305 |
+
}
|
| 306 |
+
};
|
| 307 |
+
|
| 308 |
+
// 🔮 QUANTUM SEMANTIC ENGINE - STABILIZED
|
| 309 |
+
class QuantumSemanticEngine {
|
| 310 |
+
private:
|
| 311 |
+
map<string, vector<double>> word_vectors;
|
| 312 |
+
map<string, vector<complex<double>>> quantum_embeddings;
|
| 313 |
+
|
| 314 |
+
public:
|
| 315 |
+
QuantumSemanticEngine() { initialize_semantic_space(); }
|
| 316 |
+
|
| 317 |
+
void initialize_semantic_space() {
|
| 318 |
+
// Basic semantic vectors untuk demo
|
| 319 |
+
word_vectors = {
|
| 320 |
+
{"belajar", {0.7, 0.3, 0.8}}, {"paham", {0.6, 0.4, 0.7}},
|
| 321 |
+
{"sedih", {-0.8, -0.6, -0.7}}, {"senang", {0.9, 0.7, 0.6}},
|
| 322 |
+
{"marah", {-0.6, 0.9, -0.3}}, {"energi", {0.5, 0.8, 0.6}}
|
| 323 |
+
};
|
| 324 |
+
|
| 325 |
+
// Convert to quantum embeddings
|
| 326 |
+
for (const auto& [word, vec] : word_vectors) {
|
| 327 |
+
quantum_embeddings[word] = {
|
| 328 |
+
complex<double>(vec[0], vec[1]),
|
| 329 |
+
complex<double>(vec[1], vec[2]),
|
| 330 |
+
complex<double>(vec[2], vec[0])
|
| 331 |
+
};
|
| 332 |
+
}
|
| 333 |
+
}
|
| 334 |
+
|
| 335 |
+
double compute_semantic_coherence(const vector<string>& concepts) {
|
| 336 |
+
if (concepts.empty()) return 0.0;
|
| 337 |
+
|
| 338 |
+
vector<complex<double>> superposition(3, complex<double>(0, 0));
|
| 339 |
+
int valid_concepts = 0;
|
| 340 |
+
|
| 341 |
+
for (const string& concept : concepts) {
|
| 342 |
+
if (quantum_embeddings.find(concept) != quantum_embeddings.end()) {
|
| 343 |
+
for (size_t i = 0; i < 3; i++) {
|
| 344 |
+
superposition[i] += quantum_embeddings[concept][i];
|
| 345 |
+
}
|
| 346 |
+
valid_concepts++;
|
| 347 |
+
}
|
| 348 |
+
}
|
| 349 |
+
|
| 350 |
+
if (valid_concepts == 0) return 0.0;
|
| 351 |
+
|
| 352 |
+
// Normalize dan compute coherence
|
| 353 |
+
double total_power = 0.0;
|
| 354 |
+
for (auto& amp : superposition) {
|
| 355 |
+
amp /= sqrt(valid_concepts);
|
| 356 |
+
total_power += norm(amp);
|
| 357 |
+
}
|
| 358 |
+
|
| 359 |
+
return total_power / superposition.size();
|
| 360 |
+
}
|
| 361 |
+
};
|
| 362 |
+
|
| 363 |
+
// ==================== SIMPLIFIED SEMANTIC ENGINE ====================
|
| 364 |
+
class SemanticEngineV4 {
|
| 365 |
+
// Simplified version untuk kompilasi
|
| 366 |
+
public:
|
| 367 |
+
vector<pair<string, double>> find_semantic_matches(const string& input) {
|
| 368 |
+
vector<pair<string, double>> matches;
|
| 369 |
+
// Simple keyword matching untuk demo
|
| 370 |
+
if (input.find("belajar") != string::npos) matches.push_back({"belajar", 0.8});
|
| 371 |
+
if (input.find("paham") != string::npos) matches.push_back({"paham", 0.7});
|
| 372 |
+
if (input.find("sedih") != string::npos) matches.push_back({"sedih", 0.6});
|
| 373 |
+
if (input.find("senang") != string::npos) matches.push_back({"senang", 0.9});
|
| 374 |
+
return matches;
|
| 375 |
+
}
|
| 376 |
+
};
|
| 377 |
+
|
| 378 |
+
// ==================== PERSISTENT MEMORY ====================
|
| 379 |
+
class PersistentMemory {
|
| 380 |
+
public:
|
| 381 |
+
bool save_memory(const map<string, string>& memory_data) { return true; }
|
| 382 |
+
map<string, string> load_memory() { return {}; }
|
| 383 |
+
};
|
| 384 |
+
|
| 385 |
+
// ==================== BIOLLM v5 STABLE ====================
|
| 386 |
+
class BioLLMv5Stable {
|
| 387 |
+
private:
|
| 388 |
+
FractalCognitiveCore fractal_core;
|
| 389 |
+
EntropicConsciousnessEngine entropic_engine;
|
| 390 |
+
CausalProbabilityEngine causal_engine;
|
| 391 |
+
QuantumSemanticEngine quantum_semantic;
|
| 392 |
+
SemanticEngineV4 semantic_engine;
|
| 393 |
+
PersistentMemory memory_system;
|
| 394 |
+
|
| 395 |
+
double arousal, curiosity, dopamine_level;
|
| 396 |
+
vector<string> recent_concepts;
|
| 397 |
+
|
| 398 |
+
public:
|
| 399 |
+
BioLLMv5Stable() : arousal(0.5), curiosity(0.6), dopamine_level(0.5) {
|
| 400 |
+
cout << "🧠 BioLLM v5 Stable - FMRL-99 Integrated" << endl;
|
| 401 |
+
cout << " ✅ Stabilized Numerical Implementation" << endl;
|
| 402 |
+
cout << " ✅ Bounded Cognitive Dynamics" << endl;
|
| 403 |
+
cout << " ✅ Safe Phase Transition Detection" << endl;
|
| 404 |
+
}
|
| 405 |
+
|
| 406 |
+
string process_input(const string& user_input) {
|
| 407 |
+
cout << "\n🎯 [Processing: " << user_input.substr(0, 30) << "]" << endl;
|
| 408 |
+
|
| 409 |
+
// 1. Semantic analysis
|
| 410 |
+
auto semantic_matches = semantic_engine.find_semantic_matches(user_input);
|
| 411 |
+
recent_concepts.clear();
|
| 412 |
+
for (const auto& match : semantic_matches) {
|
| 413 |
+
if (match.second > 0.3) recent_concepts.push_back(match.first);
|
| 414 |
+
}
|
| 415 |
+
|
| 416 |
+
// 2. FMRL-99 Level 4 Processing
|
| 417 |
+
vector<double> cognitive_input = {arousal, curiosity, dopamine_level};
|
| 418 |
+
auto fractal_output = fractal_core.process_cognitive_iteration(cognitive_input);
|
| 419 |
+
|
| 420 |
+
vector<double> concept_probs;
|
| 421 |
+
for (const auto& match : semantic_matches) {
|
| 422 |
+
concept_probs.push_back(match.second);
|
| 423 |
+
}
|
| 424 |
+
entropic_engine.update_entropic_state(concept_probs, 0.01);
|
| 425 |
+
|
| 426 |
+
causal_engine.learn_causality(recent_concepts, {dopamine_level});
|
| 427 |
+
|
| 428 |
+
double quantum_coherence = quantum_semantic.compute_semantic_coherence(recent_concepts);
|
| 429 |
+
|
| 430 |
+
// 3. Update system state
|
| 431 |
+
update_system_state(fractal_output, quantum_coherence);
|
| 432 |
+
|
| 433 |
+
// 4. Generate response
|
| 434 |
+
return generate_response(quantum_coherence, fractal_output);
|
| 435 |
+
}
|
| 436 |
+
|
| 437 |
+
private:
|
| 438 |
+
void update_system_state(const vector<double>& fractal_output, double quantum_coherence) {
|
| 439 |
+
double lyapunov = fractal_core.get_lyapunov_exponent();
|
| 440 |
+
double entropy_effect = entropic_engine.get_entropy_gradient();
|
| 441 |
+
|
| 442 |
+
// Stable state updates dengan bounds
|
| 443 |
+
arousal = 0.8 * arousal + 0.2 * (0.5 + lyapunov * 0.3);
|
| 444 |
+
curiosity = 0.7 * curiosity + 0.3 * (0.3 + abs(entropy_effect) * 0.4);
|
| 445 |
+
dopamine_level = 0.9 * dopamine_level + 0.1 * quantum_coherence;
|
| 446 |
+
|
| 447 |
+
// Hard bounds
|
| 448 |
+
arousal = max(0.1, min(0.9, arousal));
|
| 449 |
+
curiosity = max(0.2, min(0.95, curiosity));
|
| 450 |
+
dopamine_level = max(0.1, min(0.9, dopamine_level));
|
| 451 |
+
}
|
| 452 |
+
|
| 453 |
+
string generate_response(double quantum_coherence, const vector<double>& fractal_output) {
|
| 454 |
+
stringstream response;
|
| 455 |
+
|
| 456 |
+
response << "💡 Concepts: ";
|
| 457 |
+
for (const auto& concept : recent_concepts) response << concept << " ";
|
| 458 |
+
|
| 459 |
+
response << "\n🌌 Fractal: Dim=" << fractal_output[3] << " Lyap=" << fractal_output[2];
|
| 460 |
+
response << "\n⚡ Entropic: φ=" << entropic_engine.get_information_entropy();
|
| 461 |
+
if (entropic_engine.is_in_breakthrough()) response << " [BREAKTHROUGH]";
|
| 462 |
+
response << "\n🔮 Quantum: Coh=" << quantum_coherence;
|
| 463 |
+
|
| 464 |
+
// Non-linguistic internal monitoring
|
| 465 |
+
response << "\n🎯 Internal: ";
|
| 466 |
+
if (fractal_output[3] > 1.3) response << "HighComplexity ";
|
| 467 |
+
if (quantum_coherence > 0.6) response << "Integrated ";
|
| 468 |
+
if (entropic_engine.get_entropy_gradient() > 0) response << "Learning↑";
|
| 469 |
+
|
| 470 |
+
return response.str();
|
| 471 |
+
}
|
| 472 |
+
|
| 473 |
+
public:
|
| 474 |
+
void print_system_status() {
|
| 475 |
+
cout << "\n=== SYSTEM STATUS ===" << endl;
|
| 476 |
+
cout << "Cognitive State: " << fractal_core.get_cognitive_state() << endl;
|
| 477 |
+
cout << "Fractal Dim: " << fractal_core.get_fractal_dimension() << endl;
|
| 478 |
+
cout << "Lyapunov: " << fractal_core.get_lyapunov_exponent() << endl;
|
| 479 |
+
cout << "Negentropy: " << entropic_engine.get_information_entropy() << endl;
|
| 480 |
+
cout << "Arousal: " << arousal << " Curiosity: " << curiosity << endl;
|
| 481 |
+
cout << "Recent Concepts: " << recent_concepts.size() << endl;
|
| 482 |
+
}
|
| 483 |
+
};
|
| 484 |
+
|
| 485 |
+
// ==================== MAIN ====================
|
| 486 |
+
int main() {
|
| 487 |
+
cout << "=== BIOLLM v5 STABLE - FMRL-99 IMPLEMENTATION ===" << endl;
|
| 488 |
+
cout << "Focus: Stable Numerical Computation + Internal Process Monitoring" << endl;
|
| 489 |
+
|
| 490 |
+
BioLLMv5Stable system;
|
| 491 |
+
|
| 492 |
+
vector<string> test_inputs = {
|
| 493 |
+
"saya belajar matematika",
|
| 494 |
+
"aku senang memahami fractal",
|
| 495 |
+
"sedih karena tidak paham",
|
| 496 |
+
"energi untuk belajar lagi",
|
| 497 |
+
"paham tentang kesadaran"
|
| 498 |
+
};
|
| 499 |
+
|
| 500 |
+
for (int i = 0; i < test_inputs.size(); i++) {
|
| 501 |
+
cout << "\n--- Iteration " << (i + 1) << " ---" << endl;
|
| 502 |
+
string response = system.process_input(test_inputs[i]);
|
| 503 |
+
cout << "RESPONSE: " << response << endl;
|
| 504 |
+
|
| 505 |
+
if (i % 2 == 0) {
|
| 506 |
+
system.print_system_status();
|
| 507 |
+
}
|
| 508 |
+
}
|
| 509 |
+
|
| 510 |
+
cout << "\n✅ DEMO COMPLETE: System remains stable throughout processing" << endl;
|
| 511 |
+
cout << "🎯 Philosophy Maintained: Internal process monitoring without linguistic dependency" << endl;
|
| 512 |
+
|
| 513 |
+
return 0;
|
| 514 |
+
}
|
virtual digital AGI 2.docx
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:770b91e348954301e0bc1fb9129c4f61d799459fcdf640e4494d10f8a895a9bc
|
| 3 |
+
size 312411
|