AdmiralTaco's picture
Thousand Token Wood: emergent small-model economy for Build Small Hackathon
c26b033
Raw
History Blame Contribute Delete
1.24 kB
"""Watch the wood run under the dummy random policy. Sanity/feel check, no LLM.
Run: python scripts/run_random.py
"""
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from ttw.dummy import make_random_policy
from ttw.market import gini
from ttw.sim import step
from ttw.world import seed_world
def main(turns: int = 12) -> None:
world = seed_world()
policy = make_random_policy(seed=7)
for _ in range(turns):
events = step(world, policy)
trades = [e for e in events if e["type"] == "trade"]
prices = " ".join(f"{g}={p:.0f}" for g, p in world.last_price.items())
nets = [c.net_worth(world.last_price) for c in world.alive()]
print(f"turn {world.turn:>2} | {len(trades)} trades | gini {gini(nets):.2f} | {prices}")
for t in trades:
print(f" {t['buyer']:<9} bought {t['qty']} {t['good']} from {t['seller']:<9} @ {t['price']}")
print("\nFinal standings:")
for c in sorted(world.alive(), key=lambda x: -x.net_worth(world.last_price)):
print(f" {c.name:<9} pebbles={c.pebbles:>4} wellbeing={c.wellbeing} net={c.net_worth(world.last_price):.0f}")
if __name__ == "__main__":
main()