Web-M1-Ausbau: JSON-Gaesteliste, GA-Verlauf, Python-Serversteuerung, tische.ini-Upload
- bestellung.xml -> bestellung.json: neuer JSONConfig (loest XMLConfig ab), alle work-Beispiele konvertiert, Doku (CLAUDE/README/dateiformate) umgestellt - ga.py: Beobachtungsobjekt Entwicklung zeichnet den Loesungsverlauf auf, neuer Schalter --show-development erzeugt Entwicklung.svg (beste/mittlere/ schlechteste Wertigkeit ueber die Zyklus-Aktionen) - web/main.py: neuer Endpunkt /tische-datei (tische.ini-Upload, ast.literal_eval), Frontend kann jetzt eine tische.ini laden - libs/webserver.py: plattformunabhaengige start/stop/status-Steuerung der Web-Testinstanz (ersetzt run_web_helper.ps1), raeumt auch verwaiste --reload-Prozessbaeume zuverlaessig auf - Sicherheit/Modernisierung: eval() -> ast.literal_eval in Tische/Strafliste, sicherer Mini-Auswerter fuer die String-Ausdruecke in zyklus.cfg, defaultdict(set) in Plaetze - SVG: Tischnummer fett zentriert im Tischkreis statt "Tisch x" darueber - Tests: JSONConfig, Entwicklung und der Zyklus-Auswerter abgedeckt (9 Tests) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -23,9 +23,10 @@ platz/
|
||||
```
|
||||
|
||||
- `libs/platz.py` — entry point; wires together config, input data, and the GA run.
|
||||
- `libs/ga.py` — generic genetic-algorithm scaffolding (`Loesung`, `Zyklus`, `Farm`).
|
||||
- `libs/ga.py` — generic genetic-algorithm scaffolding (`Loesung`, `Zyklus`, `Farm`,
|
||||
`Entwicklung`).
|
||||
- `libs/Strukturdaten.py` — domain model for the seating problem (`Person`, `Gruppe`,
|
||||
`Tisch`, `Strafliste`, `Sitzplatzverteilung`, `XMLConfig`).
|
||||
`Tisch`, `Strafliste`, `Sitzplatzverteilung`, `JSONConfig`).
|
||||
|
||||
## Running the tests
|
||||
|
||||
@@ -89,13 +90,13 @@ receiving the output files for one run — e.g. `work/test1/` or `work/test2/`:
|
||||
|
||||
- `tische.ini` — one section per table: `Nummer`, `Hof` (venue/court), `Plaetze` (seat
|
||||
count), `Nachbarliste` (neighboring table ids), `Koordinaten`.
|
||||
- `bestellung.xml` — `<Gruppe>` blocks, each with a `<Person>` template
|
||||
(`Vorname`/`Nachname`/optional `Titel`) and an `<Anzahl>` (how many bookings to expand
|
||||
that template into). A `<Gruppe>` containing a `<Tisch>` tag is treated as a VIP group
|
||||
pinned to that table instead of being placed by the GA.
|
||||
- `bestellung.json` — `{ "gruppen": [ ... ] }`, each group with a `"personen"` list
|
||||
(`vorname`/`nachname`/optional `titel`), an optional `"anzahl"` (how many bookings to
|
||||
expand each person into), an optional `"name"` (display label) and an optional `"tisch"`
|
||||
(pins the group as a VIP group to that table instead of placing it via the GA).
|
||||
|
||||
To run against a different dataset, create a new folder with a `tische.ini` and
|
||||
`bestellung.xml` following the same layout and pass it via `--indir`.
|
||||
`bestellung.json` following the same layout and pass it via `--indir`.
|
||||
|
||||
`cfg/platz.cfg` still selects the GA cycle/penalty config (independent of `--indir`):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user