gpt-oss-20b / __init__ (22).py
Ananthusajeev190's picture
Upload 9 files
0e72aa7 verified
raw
history blame
3.2 kB
import json
import random
import os
from copy import deepcopy
# -----------------------------
# NAS Node Simulation
# -----------------------------
class NASNode:
def __init__(self, node_name):
self.node_name = node_name
self.data_file = f"{node_name}_data.json"
self.state = {"population": [], "day": 0}
def save_state(self):
with open(self.data_file, "w") as f:
json.dump(self.state, f, indent=2)
def load_state(self):
if os.path.exists(self.data_file):
with open(self.data_file, "r") as f:
self.state = json.load(f)
def update_population(self, population):
"""Serialize population state"""
self.state["population"] = [
{
"name": h.name,
"resources": h.resources,
"stability": h.stability,
"alive": h.alive,
"gather_efficiency": getattr(h, "gather_efficiency", 1.0),
}
for h in population
]
def sync_with(self, other_node):
"""Merge states between NAS nodes"""
merged_state = deepcopy(self.state)
for i, human_data in enumerate(other_node.state["population"]):
if i < len(merged_state["population"]):
# Update alive/resources/stability
for key in ["resources", "stability", "alive", "gather_efficiency"]:
merged_state["population"][i][key] = max(
merged_state["population"][i][key], human_data[key]
)
merged_state["day"] = max(merged_state["day"], other_node.state["day"])
self.state = merged_state
# -----------------------------
# Example Population Setup
# -----------------------------
class Human:
def __init__(self, name):
self.name = name
self.resources = 50
self.stability = 100
self.alive = True
self.gather_efficiency = 1.0
population = [Human(f"Human_{i}") for i in range(5)]
# -----------------------------
# Initialize NAS Nodes
# -----------------------------
nas1 = NASNode("Node1")
nas2 = NASNode("Node2")
# -----------------------------
# Simulation Loop with NAS Sync
# -----------------------------
for day in range(1, 6):
print(f"\n--- Day {day} ---")
# Update population
for h in population:
if h.alive:
h.resources += random.randint(5, 15) * h.gather_efficiency
h.stability -= random.randint(0, 5)
if h.stability <= 0:
h.alive = False
# Save to NAS 1
nas1.update_population(population)
nas1.state["day"] = day
nas1.save_state()
# Save to NAS 2
nas2.update_population(population)
nas2.state["day"] = day
nas2.save_state()
# Sync NAS nodes (bi-directional)
nas1.sync_with(nas2)
nas2.sync_with(nas1)
# Print status
for h in population:
print(f"{h.name}: Alive={h.alive}, Resources={h.resources}, Stability={h.stability}")
# -----------------------------
# Load state from NAS
# -----------------------------
nas1.load_state()
print("\nLoaded state from NAS1:")
print(json.dumps(nas1.state, indent=2))