From 8a9cb5a82d2bcc5f41bf9f5232aa83ef0e59c924 Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Tue, 20 Sep 2022 15:22:59 -0600 Subject: [PATCH] ok thats pretty good but what can simulated annealing do --- src/main.py | 1 + src/reader.py | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main.py b/src/main.py index 85471a0..7247176 100644 --- a/src/main.py +++ b/src/main.py @@ -24,6 +24,7 @@ def main(): args = ap.parse_args() w_translation = json.loads(args.translation) if args.translation else None + w = writer.Writer(writer.PyAutoGUIWriter(w_translation)) if args.stdout: w = writer.Writer(writer.StdoutWriter()) diff --git a/src/reader.py b/src/reader.py index 31aaf6f..4c62d60 100644 --- a/src/reader.py +++ b/src/reader.py @@ -1,5 +1,6 @@ import threading import math +import json import queue import time import sys @@ -69,11 +70,18 @@ class StdinReader: return None class RandomReader: - def __init__(self, keys): - self.keys = keys + def __init__(self, translation): + self.translation = translation self.pool = bucket.Bucket(1) self.pool.chooser = bucket.BucketChooserProportionalRandom() - for k,v in keys.items(): + + total_weight = float(sum([i["weight"] for i in translation.values()])) + for v in translation.values(): + v["weight"] = float(v["weight"]) / total_weight + for v in translation.values(): + v["weight"] = int(1000 * math.sqrt(v["weight"])) + print(1, json.dumps(translation, indent=" ")) + for k,v in translation.items(): for i in range(v["weight"]): self.pool.push(k)