tnfr 4.5.2__py3-none-any.whl → 8.5.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of tnfr might be problematic. Click here for more details.
- tnfr/__init__.py +334 -50
- tnfr/__init__.pyi +33 -0
- tnfr/_compat.py +10 -0
- tnfr/_generated_version.py +34 -0
- tnfr/_version.py +49 -0
- tnfr/_version.pyi +7 -0
- tnfr/alias.py +214 -37
- tnfr/alias.pyi +108 -0
- tnfr/backends/__init__.py +354 -0
- tnfr/backends/jax_backend.py +173 -0
- tnfr/backends/numpy_backend.py +238 -0
- tnfr/backends/optimized_numpy.py +420 -0
- tnfr/backends/torch_backend.py +408 -0
- tnfr/cache.py +149 -556
- tnfr/cache.pyi +13 -0
- tnfr/cli/__init__.py +51 -16
- tnfr/cli/__init__.pyi +26 -0
- tnfr/cli/arguments.py +344 -32
- tnfr/cli/arguments.pyi +29 -0
- tnfr/cli/execution.py +676 -50
- tnfr/cli/execution.pyi +70 -0
- tnfr/cli/interactive_validator.py +614 -0
- tnfr/cli/utils.py +18 -3
- tnfr/cli/utils.pyi +7 -0
- tnfr/cli/validate.py +236 -0
- tnfr/compat/__init__.py +85 -0
- tnfr/compat/dataclass.py +136 -0
- tnfr/compat/jsonschema_stub.py +61 -0
- tnfr/compat/matplotlib_stub.py +73 -0
- tnfr/compat/numpy_stub.py +155 -0
- tnfr/config/__init__.py +224 -0
- tnfr/config/__init__.pyi +10 -0
- tnfr/{constants_glyphs.py → config/constants.py} +26 -20
- tnfr/config/constants.pyi +12 -0
- tnfr/config/defaults.py +54 -0
- tnfr/{constants/core.py → config/defaults_core.py} +59 -6
- tnfr/config/defaults_init.py +33 -0
- tnfr/config/defaults_metric.py +104 -0
- tnfr/config/feature_flags.py +81 -0
- tnfr/config/feature_flags.pyi +16 -0
- tnfr/config/glyph_constants.py +31 -0
- tnfr/config/init.py +77 -0
- tnfr/config/init.pyi +8 -0
- tnfr/config/operator_names.py +254 -0
- tnfr/config/operator_names.pyi +36 -0
- tnfr/config/physics_derivation.py +354 -0
- tnfr/config/presets.py +83 -0
- tnfr/config/presets.pyi +7 -0
- tnfr/config/security.py +927 -0
- tnfr/config/thresholds.py +114 -0
- tnfr/config/tnfr_config.py +498 -0
- tnfr/constants/__init__.py +51 -133
- tnfr/constants/__init__.pyi +92 -0
- tnfr/constants/aliases.py +33 -0
- tnfr/constants/aliases.pyi +27 -0
- tnfr/constants/init.py +3 -1
- tnfr/constants/init.pyi +12 -0
- tnfr/constants/metric.py +9 -15
- tnfr/constants/metric.pyi +19 -0
- tnfr/core/__init__.py +33 -0
- tnfr/core/container.py +226 -0
- tnfr/core/default_implementations.py +329 -0
- tnfr/core/interfaces.py +279 -0
- tnfr/dynamics/__init__.py +213 -633
- tnfr/dynamics/__init__.pyi +83 -0
- tnfr/dynamics/adaptation.py +267 -0
- tnfr/dynamics/adaptation.pyi +7 -0
- tnfr/dynamics/adaptive_sequences.py +189 -0
- tnfr/dynamics/adaptive_sequences.pyi +14 -0
- tnfr/dynamics/aliases.py +23 -0
- tnfr/dynamics/aliases.pyi +19 -0
- tnfr/dynamics/bifurcation.py +232 -0
- tnfr/dynamics/canonical.py +229 -0
- tnfr/dynamics/canonical.pyi +48 -0
- tnfr/dynamics/coordination.py +385 -0
- tnfr/dynamics/coordination.pyi +25 -0
- tnfr/dynamics/dnfr.py +2699 -398
- tnfr/dynamics/dnfr.pyi +26 -0
- tnfr/dynamics/dynamic_limits.py +225 -0
- tnfr/dynamics/feedback.py +252 -0
- tnfr/dynamics/feedback.pyi +24 -0
- tnfr/dynamics/fused_dnfr.py +454 -0
- tnfr/dynamics/homeostasis.py +157 -0
- tnfr/dynamics/homeostasis.pyi +14 -0
- tnfr/dynamics/integrators.py +496 -102
- tnfr/dynamics/integrators.pyi +36 -0
- tnfr/dynamics/learning.py +310 -0
- tnfr/dynamics/learning.pyi +33 -0
- tnfr/dynamics/metabolism.py +254 -0
- tnfr/dynamics/nbody.py +796 -0
- tnfr/dynamics/nbody_tnfr.py +783 -0
- tnfr/dynamics/propagation.py +326 -0
- tnfr/dynamics/runtime.py +908 -0
- tnfr/dynamics/runtime.pyi +77 -0
- tnfr/dynamics/sampling.py +10 -5
- tnfr/dynamics/sampling.pyi +7 -0
- tnfr/dynamics/selectors.py +711 -0
- tnfr/dynamics/selectors.pyi +85 -0
- tnfr/dynamics/structural_clip.py +207 -0
- tnfr/errors/__init__.py +37 -0
- tnfr/errors/contextual.py +492 -0
- tnfr/execution.py +77 -55
- tnfr/execution.pyi +45 -0
- tnfr/extensions/__init__.py +205 -0
- tnfr/extensions/__init__.pyi +18 -0
- tnfr/extensions/base.py +173 -0
- tnfr/extensions/base.pyi +35 -0
- tnfr/extensions/business/__init__.py +71 -0
- tnfr/extensions/business/__init__.pyi +11 -0
- tnfr/extensions/business/cookbook.py +88 -0
- tnfr/extensions/business/cookbook.pyi +8 -0
- tnfr/extensions/business/health_analyzers.py +202 -0
- tnfr/extensions/business/health_analyzers.pyi +9 -0
- tnfr/extensions/business/patterns.py +183 -0
- tnfr/extensions/business/patterns.pyi +8 -0
- tnfr/extensions/medical/__init__.py +73 -0
- tnfr/extensions/medical/__init__.pyi +11 -0
- tnfr/extensions/medical/cookbook.py +88 -0
- tnfr/extensions/medical/cookbook.pyi +8 -0
- tnfr/extensions/medical/health_analyzers.py +181 -0
- tnfr/extensions/medical/health_analyzers.pyi +9 -0
- tnfr/extensions/medical/patterns.py +163 -0
- tnfr/extensions/medical/patterns.pyi +8 -0
- tnfr/flatten.py +29 -50
- tnfr/flatten.pyi +21 -0
- tnfr/gamma.py +66 -53
- tnfr/gamma.pyi +36 -0
- tnfr/glyph_history.py +144 -57
- tnfr/glyph_history.pyi +35 -0
- tnfr/glyph_runtime.py +19 -0
- tnfr/glyph_runtime.pyi +8 -0
- tnfr/immutable.py +70 -30
- tnfr/immutable.pyi +36 -0
- tnfr/initialization.py +22 -16
- tnfr/initialization.pyi +65 -0
- tnfr/io.py +5 -241
- tnfr/io.pyi +13 -0
- tnfr/locking.pyi +7 -0
- tnfr/mathematics/__init__.py +79 -0
- tnfr/mathematics/backend.py +453 -0
- tnfr/mathematics/backend.pyi +99 -0
- tnfr/mathematics/dynamics.py +408 -0
- tnfr/mathematics/dynamics.pyi +90 -0
- tnfr/mathematics/epi.py +391 -0
- tnfr/mathematics/epi.pyi +65 -0
- tnfr/mathematics/generators.py +242 -0
- tnfr/mathematics/generators.pyi +29 -0
- tnfr/mathematics/metrics.py +119 -0
- tnfr/mathematics/metrics.pyi +16 -0
- tnfr/mathematics/operators.py +239 -0
- tnfr/mathematics/operators.pyi +59 -0
- tnfr/mathematics/operators_factory.py +124 -0
- tnfr/mathematics/operators_factory.pyi +11 -0
- tnfr/mathematics/projection.py +87 -0
- tnfr/mathematics/projection.pyi +33 -0
- tnfr/mathematics/runtime.py +182 -0
- tnfr/mathematics/runtime.pyi +64 -0
- tnfr/mathematics/spaces.py +256 -0
- tnfr/mathematics/spaces.pyi +83 -0
- tnfr/mathematics/transforms.py +305 -0
- tnfr/mathematics/transforms.pyi +62 -0
- tnfr/metrics/__init__.py +47 -9
- tnfr/metrics/__init__.pyi +20 -0
- tnfr/metrics/buffer_cache.py +163 -0
- tnfr/metrics/buffer_cache.pyi +24 -0
- tnfr/metrics/cache_utils.py +214 -0
- tnfr/metrics/coherence.py +1510 -330
- tnfr/metrics/coherence.pyi +129 -0
- tnfr/metrics/common.py +23 -16
- tnfr/metrics/common.pyi +35 -0
- tnfr/metrics/core.py +251 -36
- tnfr/metrics/core.pyi +13 -0
- tnfr/metrics/diagnosis.py +709 -110
- tnfr/metrics/diagnosis.pyi +86 -0
- tnfr/metrics/emergence.py +245 -0
- tnfr/metrics/export.py +60 -18
- tnfr/metrics/export.pyi +7 -0
- tnfr/metrics/glyph_timing.py +233 -43
- tnfr/metrics/glyph_timing.pyi +81 -0
- tnfr/metrics/learning_metrics.py +280 -0
- tnfr/metrics/learning_metrics.pyi +21 -0
- tnfr/metrics/phase_coherence.py +351 -0
- tnfr/metrics/phase_compatibility.py +349 -0
- tnfr/metrics/reporting.py +63 -28
- tnfr/metrics/reporting.pyi +25 -0
- tnfr/metrics/sense_index.py +1126 -43
- tnfr/metrics/sense_index.pyi +9 -0
- tnfr/metrics/trig.py +215 -23
- tnfr/metrics/trig.pyi +13 -0
- tnfr/metrics/trig_cache.py +148 -24
- tnfr/metrics/trig_cache.pyi +10 -0
- tnfr/multiscale/__init__.py +32 -0
- tnfr/multiscale/hierarchical.py +517 -0
- tnfr/node.py +646 -140
- tnfr/node.pyi +139 -0
- tnfr/observers.py +160 -45
- tnfr/observers.pyi +31 -0
- tnfr/ontosim.py +23 -19
- tnfr/ontosim.pyi +28 -0
- tnfr/operators/__init__.py +1358 -106
- tnfr/operators/__init__.pyi +31 -0
- tnfr/operators/algebra.py +277 -0
- tnfr/operators/canonical_patterns.py +420 -0
- tnfr/operators/cascade.py +267 -0
- tnfr/operators/cycle_detection.py +358 -0
- tnfr/operators/definitions.py +4108 -0
- tnfr/operators/definitions.pyi +78 -0
- tnfr/operators/grammar.py +1164 -0
- tnfr/operators/grammar.pyi +140 -0
- tnfr/operators/hamiltonian.py +710 -0
- tnfr/operators/health_analyzer.py +809 -0
- tnfr/operators/jitter.py +107 -38
- tnfr/operators/jitter.pyi +11 -0
- tnfr/operators/lifecycle.py +314 -0
- tnfr/operators/metabolism.py +618 -0
- tnfr/operators/metrics.py +2138 -0
- tnfr/operators/network_analysis/__init__.py +27 -0
- tnfr/operators/network_analysis/source_detection.py +186 -0
- tnfr/operators/nodal_equation.py +395 -0
- tnfr/operators/pattern_detection.py +660 -0
- tnfr/operators/patterns.py +669 -0
- tnfr/operators/postconditions/__init__.py +38 -0
- tnfr/operators/postconditions/mutation.py +236 -0
- tnfr/operators/preconditions/__init__.py +1226 -0
- tnfr/operators/preconditions/coherence.py +305 -0
- tnfr/operators/preconditions/dissonance.py +236 -0
- tnfr/operators/preconditions/emission.py +128 -0
- tnfr/operators/preconditions/mutation.py +580 -0
- tnfr/operators/preconditions/reception.py +125 -0
- tnfr/operators/preconditions/resonance.py +364 -0
- tnfr/operators/registry.py +74 -0
- tnfr/operators/registry.pyi +9 -0
- tnfr/operators/remesh.py +1415 -91
- tnfr/operators/remesh.pyi +26 -0
- tnfr/operators/structural_units.py +268 -0
- tnfr/operators/unified_grammar.py +105 -0
- tnfr/parallel/__init__.py +54 -0
- tnfr/parallel/auto_scaler.py +234 -0
- tnfr/parallel/distributed.py +384 -0
- tnfr/parallel/engine.py +238 -0
- tnfr/parallel/gpu_engine.py +420 -0
- tnfr/parallel/monitoring.py +248 -0
- tnfr/parallel/partitioner.py +459 -0
- tnfr/py.typed +0 -0
- tnfr/recipes/__init__.py +22 -0
- tnfr/recipes/cookbook.py +743 -0
- tnfr/rng.py +75 -151
- tnfr/rng.pyi +26 -0
- tnfr/schemas/__init__.py +8 -0
- tnfr/schemas/grammar.json +94 -0
- tnfr/sdk/__init__.py +107 -0
- tnfr/sdk/__init__.pyi +19 -0
- tnfr/sdk/adaptive_system.py +173 -0
- tnfr/sdk/adaptive_system.pyi +21 -0
- tnfr/sdk/builders.py +370 -0
- tnfr/sdk/builders.pyi +51 -0
- tnfr/sdk/fluent.py +1121 -0
- tnfr/sdk/fluent.pyi +74 -0
- tnfr/sdk/templates.py +342 -0
- tnfr/sdk/templates.pyi +41 -0
- tnfr/sdk/utils.py +341 -0
- tnfr/secure_config.py +46 -0
- tnfr/security/__init__.py +70 -0
- tnfr/security/database.py +514 -0
- tnfr/security/subprocess.py +503 -0
- tnfr/security/validation.py +290 -0
- tnfr/selector.py +59 -22
- tnfr/selector.pyi +19 -0
- tnfr/sense.py +92 -67
- tnfr/sense.pyi +23 -0
- tnfr/services/__init__.py +17 -0
- tnfr/services/orchestrator.py +325 -0
- tnfr/sparse/__init__.py +39 -0
- tnfr/sparse/representations.py +492 -0
- tnfr/structural.py +639 -263
- tnfr/structural.pyi +83 -0
- tnfr/telemetry/__init__.py +35 -0
- tnfr/telemetry/cache_metrics.py +226 -0
- tnfr/telemetry/cache_metrics.pyi +64 -0
- tnfr/telemetry/nu_f.py +422 -0
- tnfr/telemetry/nu_f.pyi +108 -0
- tnfr/telemetry/verbosity.py +36 -0
- tnfr/telemetry/verbosity.pyi +15 -0
- tnfr/tokens.py +2 -4
- tnfr/tokens.pyi +36 -0
- tnfr/tools/__init__.py +20 -0
- tnfr/tools/domain_templates.py +478 -0
- tnfr/tools/sequence_generator.py +846 -0
- tnfr/topology/__init__.py +13 -0
- tnfr/topology/asymmetry.py +151 -0
- tnfr/trace.py +300 -126
- tnfr/trace.pyi +42 -0
- tnfr/tutorials/__init__.py +38 -0
- tnfr/tutorials/autonomous_evolution.py +285 -0
- tnfr/tutorials/interactive.py +1576 -0
- tnfr/tutorials/structural_metabolism.py +238 -0
- tnfr/types.py +743 -12
- tnfr/types.pyi +357 -0
- tnfr/units.py +68 -0
- tnfr/units.pyi +13 -0
- tnfr/utils/__init__.py +282 -0
- tnfr/utils/__init__.pyi +215 -0
- tnfr/utils/cache.py +4223 -0
- tnfr/utils/cache.pyi +470 -0
- tnfr/{callback_utils.py → utils/callbacks.py} +26 -39
- tnfr/utils/callbacks.pyi +49 -0
- tnfr/utils/chunks.py +108 -0
- tnfr/utils/chunks.pyi +22 -0
- tnfr/utils/data.py +428 -0
- tnfr/utils/data.pyi +74 -0
- tnfr/utils/graph.py +85 -0
- tnfr/utils/graph.pyi +10 -0
- tnfr/utils/init.py +821 -0
- tnfr/utils/init.pyi +80 -0
- tnfr/utils/io.py +559 -0
- tnfr/utils/io.pyi +66 -0
- tnfr/{helpers → utils}/numeric.py +51 -24
- tnfr/utils/numeric.pyi +21 -0
- tnfr/validation/__init__.py +257 -0
- tnfr/validation/__init__.pyi +85 -0
- tnfr/validation/compatibility.py +460 -0
- tnfr/validation/compatibility.pyi +6 -0
- tnfr/validation/config.py +73 -0
- tnfr/validation/graph.py +139 -0
- tnfr/validation/graph.pyi +18 -0
- tnfr/validation/input_validation.py +755 -0
- tnfr/validation/invariants.py +712 -0
- tnfr/validation/rules.py +253 -0
- tnfr/validation/rules.pyi +44 -0
- tnfr/validation/runtime.py +279 -0
- tnfr/validation/runtime.pyi +28 -0
- tnfr/validation/sequence_validator.py +162 -0
- tnfr/validation/soft_filters.py +170 -0
- tnfr/validation/soft_filters.pyi +32 -0
- tnfr/validation/spectral.py +164 -0
- tnfr/validation/spectral.pyi +42 -0
- tnfr/validation/validator.py +1266 -0
- tnfr/validation/window.py +39 -0
- tnfr/validation/window.pyi +1 -0
- tnfr/visualization/__init__.py +98 -0
- tnfr/visualization/cascade_viz.py +256 -0
- tnfr/visualization/hierarchy.py +284 -0
- tnfr/visualization/sequence_plotter.py +784 -0
- tnfr/viz/__init__.py +60 -0
- tnfr/viz/matplotlib.py +278 -0
- tnfr/viz/matplotlib.pyi +35 -0
- tnfr-8.5.0.dist-info/METADATA +573 -0
- tnfr-8.5.0.dist-info/RECORD +353 -0
- {tnfr-4.5.2.dist-info → tnfr-8.5.0.dist-info}/entry_points.txt +1 -0
- {tnfr-4.5.2.dist-info → tnfr-8.5.0.dist-info}/licenses/LICENSE.md +1 -1
- tnfr/collections_utils.py +0 -300
- tnfr/config.py +0 -32
- tnfr/grammar.py +0 -344
- tnfr/graph_utils.py +0 -84
- tnfr/helpers/__init__.py +0 -71
- tnfr/import_utils.py +0 -228
- tnfr/json_utils.py +0 -162
- tnfr/logging_utils.py +0 -116
- tnfr/presets.py +0 -60
- tnfr/validators.py +0 -84
- tnfr/value_utils.py +0 -59
- tnfr-4.5.2.dist-info/METADATA +0 -379
- tnfr-4.5.2.dist-info/RECORD +0 -67
- {tnfr-4.5.2.dist-info → tnfr-8.5.0.dist-info}/WHEEL +0 -0
- {tnfr-4.5.2.dist-info → tnfr-8.5.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
"""Tutorial: Autonomous Evolution with TNFR Adaptive Systems.
|
|
2
|
+
|
|
3
|
+
This tutorial demonstrates the complete adaptive dynamics system integrating
|
|
4
|
+
feedback loops, adaptive sequence selection, homeostasis, learning, and
|
|
5
|
+
metabolism into autonomous structural evolution.
|
|
6
|
+
|
|
7
|
+
**Learning Objectives:**
|
|
8
|
+
|
|
9
|
+
1. Understand feedback loops and homeostatic regulation
|
|
10
|
+
2. Use adaptive sequence selection for optimal trajectories
|
|
11
|
+
3. Integrate all components into autonomous evolution
|
|
12
|
+
4. Monitor and measure adaptive dynamics
|
|
13
|
+
|
|
14
|
+
**Prerequisites:**
|
|
15
|
+
|
|
16
|
+
- Basic TNFR concepts (NFR, operators, coherence)
|
|
17
|
+
- Understanding of structural metrics (C(t), Si, ΔNFR)
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
from __future__ import annotations
|
|
21
|
+
|
|
22
|
+
import networkx as nx
|
|
23
|
+
|
|
24
|
+
from tnfr.structural import create_nfr
|
|
25
|
+
from tnfr.alias import get_attr
|
|
26
|
+
from tnfr.constants.aliases import ALIAS_DNFR, ALIAS_EPI, ALIAS_VF
|
|
27
|
+
from tnfr.dynamics.feedback import StructuralFeedbackLoop
|
|
28
|
+
from tnfr.dynamics.adaptive_sequences import AdaptiveSequenceSelector
|
|
29
|
+
from tnfr.dynamics.homeostasis import StructuralHomeostasis
|
|
30
|
+
from tnfr.sdk.adaptive_system import TNFRAdaptiveSystem
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def example_1_feedback_loop():
|
|
34
|
+
"""Example 1: Basic feedback loop regulation.
|
|
35
|
+
|
|
36
|
+
Demonstrates how a feedback loop measures coherence and selects
|
|
37
|
+
appropriate operators to maintain target coherence.
|
|
38
|
+
"""
|
|
39
|
+
print("=" * 70)
|
|
40
|
+
print("Example 1: Basic Feedback Loop Regulation")
|
|
41
|
+
print("=" * 70)
|
|
42
|
+
|
|
43
|
+
# Create a simple node
|
|
44
|
+
G, node = create_nfr("feedback_node", epi=0.5, vf=1.0)
|
|
45
|
+
|
|
46
|
+
# Initialize feedback loop with target coherence
|
|
47
|
+
loop = StructuralFeedbackLoop(
|
|
48
|
+
G,
|
|
49
|
+
node,
|
|
50
|
+
target_coherence=0.7, # Target C(t)
|
|
51
|
+
tau_adaptive=0.1, # Initial bifurcation threshold
|
|
52
|
+
learning_rate=0.05, # Threshold adaptation rate
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
print("\nInitial state:")
|
|
56
|
+
print(f" EPI: {get_attr(G.nodes[node], ALIAS_EPI, 0.0):.3f}")
|
|
57
|
+
print(f" νf: {get_attr(G.nodes[node], ALIAS_VF, 1.0):.3f}")
|
|
58
|
+
print(f" ΔNFR: {get_attr(G.nodes[node], ALIAS_DNFR, 0.0):.3f}")
|
|
59
|
+
|
|
60
|
+
# Run feedback regulation
|
|
61
|
+
print("\nRunning feedback regulation...")
|
|
62
|
+
for step in range(5):
|
|
63
|
+
coherence_before = loop._compute_local_coherence()
|
|
64
|
+
operator = loop.regulate()
|
|
65
|
+
print(f"\n Step {step + 1}:")
|
|
66
|
+
print(f" Coherence: {coherence_before:.3f}")
|
|
67
|
+
print(f" Selected operator: {operator}")
|
|
68
|
+
|
|
69
|
+
print("\nFeedback loop maintains coherence through adaptive operator selection.")
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def example_2_adaptive_sequences():
|
|
73
|
+
"""Example 2: Adaptive sequence selection.
|
|
74
|
+
|
|
75
|
+
Demonstrates how the system learns which operator sequences work best
|
|
76
|
+
for different goals and adapts its selection over time.
|
|
77
|
+
"""
|
|
78
|
+
print("\n" + "=" * 70)
|
|
79
|
+
print("Example 2: Adaptive Sequence Selection")
|
|
80
|
+
print("=" * 70)
|
|
81
|
+
|
|
82
|
+
G, node = create_nfr("learning_node", epi=0.5, vf=1.0)
|
|
83
|
+
|
|
84
|
+
selector = AdaptiveSequenceSelector(G, node)
|
|
85
|
+
|
|
86
|
+
print("\nAvailable canonical sequences:")
|
|
87
|
+
for name, sequence in selector.sequences.items():
|
|
88
|
+
print(f" {name}: {' → '.join(sequence)}")
|
|
89
|
+
|
|
90
|
+
# Select sequences for different goals
|
|
91
|
+
print("\n\nSequence selection for different goals:")
|
|
92
|
+
|
|
93
|
+
goals = ["stability", "growth", "adaptation"]
|
|
94
|
+
for goal in goals:
|
|
95
|
+
context = {"goal": goal, "urgency": 0.5}
|
|
96
|
+
sequence = selector.select_sequence(context)
|
|
97
|
+
print(f"\n Goal: {goal}")
|
|
98
|
+
print(f" Selected: {' → '.join(sequence)}")
|
|
99
|
+
|
|
100
|
+
# Simulate learning through performance recording
|
|
101
|
+
print("\n\nSimulating learning through performance feedback:")
|
|
102
|
+
selector.record_performance("basic_activation", 0.85)
|
|
103
|
+
selector.record_performance("deep_learning", 0.92)
|
|
104
|
+
selector.record_performance("basic_activation", 0.88)
|
|
105
|
+
|
|
106
|
+
print(" Recorded performances:")
|
|
107
|
+
for name, perfs in selector.performance.items():
|
|
108
|
+
if perfs:
|
|
109
|
+
avg = sum(perfs) / len(perfs)
|
|
110
|
+
print(f" {name}: avg = {avg:.3f} ({len(perfs)} samples)")
|
|
111
|
+
|
|
112
|
+
print("\nAdaptive selection learns from experience to optimize trajectories.")
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def example_3_homeostasis():
|
|
116
|
+
"""Example 3: Homeostatic regulation.
|
|
117
|
+
|
|
118
|
+
Demonstrates how homeostasis maintains parameters within healthy ranges
|
|
119
|
+
through automatic corrective operators.
|
|
120
|
+
"""
|
|
121
|
+
print("\n" + "=" * 70)
|
|
122
|
+
print("Example 3: Homeostatic Regulation")
|
|
123
|
+
print("=" * 70)
|
|
124
|
+
|
|
125
|
+
G, node = create_nfr("homeostatic_node", epi=0.5, vf=1.0)
|
|
126
|
+
|
|
127
|
+
homeostasis = StructuralHomeostasis(G, node)
|
|
128
|
+
|
|
129
|
+
print("\nHomeostatic target ranges:")
|
|
130
|
+
print(f" EPI: {homeostasis.epi_range}")
|
|
131
|
+
print(f" νf: {homeostasis.vf_range}")
|
|
132
|
+
print(f" ΔNFR: {homeostasis.dnfr_range}")
|
|
133
|
+
|
|
134
|
+
print("\nCurrent state:")
|
|
135
|
+
print(f" EPI: {get_attr(G.nodes[node], ALIAS_EPI, 0.0):.3f}")
|
|
136
|
+
print(f" νf: {get_attr(G.nodes[node], ALIAS_VF, 1.0):.3f}")
|
|
137
|
+
print(f" ΔNFR: {get_attr(G.nodes[node], ALIAS_DNFR, 0.0):.3f}")
|
|
138
|
+
|
|
139
|
+
print("\nApplying homeostatic regulation...")
|
|
140
|
+
homeostasis.maintain_equilibrium()
|
|
141
|
+
|
|
142
|
+
print("\nHomeostasis automatically corrects out-of-range parameters.")
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
def example_4_integrated_system():
|
|
146
|
+
"""Example 4: Complete integrated adaptive system.
|
|
147
|
+
|
|
148
|
+
Demonstrates the full TNFRAdaptiveSystem combining all components into
|
|
149
|
+
autonomous evolution cycles.
|
|
150
|
+
"""
|
|
151
|
+
print("\n" + "=" * 70)
|
|
152
|
+
print("Example 4: Complete Integrated Adaptive System")
|
|
153
|
+
print("=" * 70)
|
|
154
|
+
|
|
155
|
+
G, node = create_nfr("adaptive_node", epi=0.5, vf=1.0)
|
|
156
|
+
|
|
157
|
+
# Initialize complete adaptive system
|
|
158
|
+
system = TNFRAdaptiveSystem(G, node)
|
|
159
|
+
|
|
160
|
+
print("\nIntegrated components:")
|
|
161
|
+
print(" ✓ Feedback loop")
|
|
162
|
+
print(" ✓ Adaptive sequence selector")
|
|
163
|
+
print(" ✓ Homeostasis")
|
|
164
|
+
print(" ✓ Learning system")
|
|
165
|
+
print(" ✓ Structural metabolism")
|
|
166
|
+
|
|
167
|
+
print("\nInitial state:")
|
|
168
|
+
print(f" EPI: {get_attr(G.nodes[node], ALIAS_EPI, 0.0):.3f}")
|
|
169
|
+
print(f" νf: {get_attr(G.nodes[node], ALIAS_VF, 1.0):.3f}")
|
|
170
|
+
print(f" ΔNFR: {get_attr(G.nodes[node], ALIAS_DNFR, 0.0):.3f}")
|
|
171
|
+
|
|
172
|
+
# Run autonomous evolution
|
|
173
|
+
print("\nRunning autonomous evolution (10 cycles)...")
|
|
174
|
+
system.autonomous_evolution(num_cycles=10)
|
|
175
|
+
|
|
176
|
+
print("\nFinal state:")
|
|
177
|
+
print(f" EPI: {get_attr(G.nodes[node], ALIAS_EPI, 0.0):.3f}")
|
|
178
|
+
print(f" νf: {get_attr(G.nodes[node], ALIAS_VF, 1.0):.3f}")
|
|
179
|
+
print(f" ΔNFR: {get_attr(G.nodes[node], ALIAS_DNFR, 0.0):.3f}")
|
|
180
|
+
|
|
181
|
+
print("\nThe system self-regulates through integrated adaptive dynamics.")
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
def example_5_multi_node_network():
|
|
185
|
+
"""Example 5: Adaptive dynamics in multi-node networks.
|
|
186
|
+
|
|
187
|
+
Demonstrates how adaptive systems work in networks with multiple
|
|
188
|
+
interacting nodes.
|
|
189
|
+
"""
|
|
190
|
+
print("\n" + "=" * 70)
|
|
191
|
+
print("Example 5: Multi-Node Adaptive Network")
|
|
192
|
+
print("=" * 70)
|
|
193
|
+
|
|
194
|
+
# Create a small network
|
|
195
|
+
G = nx.Graph()
|
|
196
|
+
nodes = []
|
|
197
|
+
for i in range(3):
|
|
198
|
+
_, node = create_nfr(f"node_{i}", graph=G, epi=0.5, vf=1.0)
|
|
199
|
+
nodes.append(node)
|
|
200
|
+
|
|
201
|
+
# Connect nodes
|
|
202
|
+
G.add_edge(nodes[0], nodes[1])
|
|
203
|
+
G.add_edge(nodes[1], nodes[2])
|
|
204
|
+
|
|
205
|
+
print(f"\nCreated network with {len(nodes)} nodes and {G.number_of_edges()} edges")
|
|
206
|
+
|
|
207
|
+
# Create adaptive system for each node
|
|
208
|
+
systems = [TNFRAdaptiveSystem(G, node) for node in nodes]
|
|
209
|
+
|
|
210
|
+
print("\nRunning synchronized autonomous evolution...")
|
|
211
|
+
for cycle in range(5):
|
|
212
|
+
print(f"\n Cycle {cycle + 1}:")
|
|
213
|
+
for i, system in enumerate(systems):
|
|
214
|
+
# Each node evolves autonomously
|
|
215
|
+
system.autonomous_evolution(num_cycles=2)
|
|
216
|
+
|
|
217
|
+
stress = system._measure_stress()
|
|
218
|
+
print(f" Node {i}: stress = {stress:.3f}")
|
|
219
|
+
|
|
220
|
+
print("\nMultiple adaptive systems can coevolve in networked structures.")
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
def example_6_stress_response():
|
|
224
|
+
"""Example 6: Metabolic stress response.
|
|
225
|
+
|
|
226
|
+
Demonstrates how the system measures and responds to structural stress
|
|
227
|
+
through metabolic adaptation.
|
|
228
|
+
"""
|
|
229
|
+
print("\n" + "=" * 70)
|
|
230
|
+
print("Example 6: Metabolic Stress Response")
|
|
231
|
+
print("=" * 70)
|
|
232
|
+
|
|
233
|
+
G, node = create_nfr("stress_node", epi=0.5, vf=1.0)
|
|
234
|
+
system = TNFRAdaptiveSystem(G, node)
|
|
235
|
+
|
|
236
|
+
print("\nStress measurement from ΔNFR:")
|
|
237
|
+
print(" ΔNFR = 0.0 → stress = 0.0 (relaxed)")
|
|
238
|
+
print(" ΔNFR = 0.1 → stress = 0.5 (moderate)")
|
|
239
|
+
print(" ΔNFR = 0.2 → stress = 1.0 (maximum)")
|
|
240
|
+
|
|
241
|
+
print("\n\nSimulating stress response:")
|
|
242
|
+
from tnfr.alias import set_attr
|
|
243
|
+
|
|
244
|
+
stress_levels = [0.0, 0.05, 0.1, 0.15, 0.2]
|
|
245
|
+
for dnfr_val in stress_levels:
|
|
246
|
+
set_attr(G.nodes[node], ALIAS_DNFR, dnfr_val)
|
|
247
|
+
stress = system._measure_stress()
|
|
248
|
+
print(f" ΔNFR = {dnfr_val:.2f} → stress = {stress:.2f}")
|
|
249
|
+
|
|
250
|
+
print("\nThe system adapts metabolically to structural stress levels.")
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
def run_all_examples():
|
|
254
|
+
"""Run all tutorial examples in sequence."""
|
|
255
|
+
examples = [
|
|
256
|
+
example_1_feedback_loop,
|
|
257
|
+
example_2_adaptive_sequences,
|
|
258
|
+
example_3_homeostasis,
|
|
259
|
+
example_4_integrated_system,
|
|
260
|
+
example_5_multi_node_network,
|
|
261
|
+
example_6_stress_response,
|
|
262
|
+
]
|
|
263
|
+
|
|
264
|
+
for example in examples:
|
|
265
|
+
example()
|
|
266
|
+
|
|
267
|
+
print("\n" + "=" * 70)
|
|
268
|
+
print("Tutorial Complete: Autonomous Evolution with TNFR")
|
|
269
|
+
print("=" * 70)
|
|
270
|
+
print("\nKey Takeaways:")
|
|
271
|
+
print(" 1. Feedback loops enable autonomous coherence regulation")
|
|
272
|
+
print(" 2. Adaptive selection learns optimal operator sequences")
|
|
273
|
+
print(" 3. Homeostasis maintains healthy parameter ranges")
|
|
274
|
+
print(" 4. Integration creates self-regulating adaptive systems")
|
|
275
|
+
print(" 5. Networks support multi-node coevolution")
|
|
276
|
+
print(" 6. Metabolic response adapts to structural stress")
|
|
277
|
+
print("\nNext steps:")
|
|
278
|
+
print(" - Explore custom feedback strategies")
|
|
279
|
+
print(" - Define domain-specific sequences")
|
|
280
|
+
print(" - Tune homeostatic ranges for your application")
|
|
281
|
+
print(" - Integrate with existing TNFR workflows")
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
if __name__ == "__main__":
|
|
285
|
+
run_all_examples()
|