Spaces:
Build error
Build error
Update system.py
Browse files
system.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
| 1 |
import numpy as np
|
|
|
|
| 2 |
|
| 3 |
|
| 4 |
class DrMoagiArchitecture:
|
|
@@ -10,20 +11,16 @@ class DrMoagiArchitecture:
|
|
| 10 |
self.Xi = np.random.randn(dim)
|
| 11 |
self.Omega = np.random.randn(dim)
|
| 12 |
self.M = np.zeros(dim)
|
| 13 |
-
self.I = np.ones(dim)
|
| 14 |
self.archive = []
|
| 15 |
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
def evolve_overlay(self):
|
| 20 |
noise = np.random.normal(0, 0.01, size=self.Xi.shape)
|
| 21 |
self.Xi += noise
|
| 22 |
self.Omega = 0.99 * self.Omega + 0.01 * self.Xi
|
| 23 |
|
| 24 |
-
# ------------------------
|
| 25 |
-
# Predictive Knowledge Field
|
| 26 |
-
# ------------------------
|
| 27 |
def predictive_K(self):
|
| 28 |
Psi = np.linalg.norm(self.Xi)
|
| 29 |
Lambda = 1.5
|
|
@@ -40,9 +37,22 @@ class DrMoagiArchitecture:
|
|
| 40 |
+ (Psi * Lambda * Phi) / (Omega + 1)
|
| 41 |
)
|
| 42 |
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
def stability_zone(self):
|
| 47 |
if len(self.archive) < 2:
|
| 48 |
return "Initializing"
|
|
@@ -50,15 +60,12 @@ class DrMoagiArchitecture:
|
|
| 50 |
dK = abs(self.archive[-1] - self.archive[-2])
|
| 51 |
|
| 52 |
if dK < 0.01:
|
| 53 |
-
return "Green
|
| 54 |
elif dK < 1.0:
|
| 55 |
-
return "Yellow
|
| 56 |
else:
|
| 57 |
-
return "Red
|
| 58 |
|
| 59 |
-
# ------------------------
|
| 60 |
-
# Core Step
|
| 61 |
-
# ------------------------
|
| 62 |
def step(self, Psi_input):
|
| 63 |
self.Xi += 0.05 * Psi_input
|
| 64 |
self.M = 0.9 * self.M + 0.1 * self.Xi
|
|
@@ -68,4 +75,15 @@ class DrMoagiArchitecture:
|
|
| 68 |
K = self.predictive_K()
|
| 69 |
self.archive.append(K)
|
| 70 |
|
| 71 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
import numpy as np
|
| 2 |
+
from fractal_gpu import fractal_field
|
| 3 |
|
| 4 |
|
| 5 |
class DrMoagiArchitecture:
|
|
|
|
| 11 |
self.Xi = np.random.randn(dim)
|
| 12 |
self.Omega = np.random.randn(dim)
|
| 13 |
self.M = np.zeros(dim)
|
|
|
|
| 14 |
self.archive = []
|
| 15 |
|
| 16 |
+
self.running = False
|
| 17 |
+
self.tick_counter = 0
|
| 18 |
+
|
| 19 |
def evolve_overlay(self):
|
| 20 |
noise = np.random.normal(0, 0.01, size=self.Xi.shape)
|
| 21 |
self.Xi += noise
|
| 22 |
self.Omega = 0.99 * self.Omega + 0.01 * self.Xi
|
| 23 |
|
|
|
|
|
|
|
|
|
|
| 24 |
def predictive_K(self):
|
| 25 |
Psi = np.linalg.norm(self.Xi)
|
| 26 |
Lambda = 1.5
|
|
|
|
| 37 |
+ (Psi * Lambda * Phi) / (Omega + 1)
|
| 38 |
)
|
| 39 |
|
| 40 |
+
def entropy(self):
|
| 41 |
+
p = np.abs(self.Xi)
|
| 42 |
+
p = p / (np.sum(p) + 1e-8)
|
| 43 |
+
return -np.sum(p * np.log(p + 1e-8))
|
| 44 |
+
|
| 45 |
+
def bounded_update(self, Psi_input):
|
| 46 |
+
entropy_before = self.entropy()
|
| 47 |
+
self.step(Psi_input)
|
| 48 |
+
entropy_after = self.entropy()
|
| 49 |
+
|
| 50 |
+
if entropy_after > entropy_before + 0.5:
|
| 51 |
+
self.Xi *= 0.95
|
| 52 |
+
|
| 53 |
+
def lyapunov_energy(self):
|
| 54 |
+
return np.linalg.norm(self.Xi) ** 2
|
| 55 |
+
|
| 56 |
def stability_zone(self):
|
| 57 |
if len(self.archive) < 2:
|
| 58 |
return "Initializing"
|
|
|
|
| 60 |
dK = abs(self.archive[-1] - self.archive[-2])
|
| 61 |
|
| 62 |
if dK < 0.01:
|
| 63 |
+
return "Green"
|
| 64 |
elif dK < 1.0:
|
| 65 |
+
return "Yellow"
|
| 66 |
else:
|
| 67 |
+
return "Red"
|
| 68 |
|
|
|
|
|
|
|
|
|
|
| 69 |
def step(self, Psi_input):
|
| 70 |
self.Xi += 0.05 * Psi_input
|
| 71 |
self.M = 0.9 * self.M + 0.1 * self.Xi
|
|
|
|
| 75 |
K = self.predictive_K()
|
| 76 |
self.archive.append(K)
|
| 77 |
|
| 78 |
+
self.tick_counter += 1
|
| 79 |
+
|
| 80 |
+
return K
|
| 81 |
+
|
| 82 |
+
def compute_fractal(self):
|
| 83 |
+
return fractal_field(self.Xi)
|
| 84 |
+
|
| 85 |
+
def start(self):
|
| 86 |
+
self.running = True
|
| 87 |
+
|
| 88 |
+
def stop(self):
|
| 89 |
+
self.running = False
|