feat: Zielwert-Zerlegung als Reparaturgrund, SOLVER_TIMEOUT, Summenzeilen-Fehlalarm behoben
- check_objective_decomposition: bei LP/MILP/CP muss eine objective_column den Zielwert
belegen, eine abweichende Beitragsspalte ist überall ein Befund -> Solver-Reparatur,
bleibt es: Warnung. 90 von 90 linearen Läufen seit 17.09. hätten bestanden.
- Summenzeilen: „Gesamt…“/„Nutzen…“ nur noch in der letzten Zeile, einzelne Zeile nie,
Zwischensummen nicht gegen die Gesamtsumme. Vorher 15 Rucksack-Läufe mit falschem
„Summe (0) weicht vom Zielwert (51) ab“; von 17 Abweichungen bleibt 1 echte.
- SOLVER_TIMEOUT (Default 60) für alle Programmläufe und als {ZEITLIMIT} im Solver-Prompt
- Benchmark: dirty zählt nur versionierte Dateien; SOLVER_TIMEOUT in der Konfiguration
Ändert die Prompt-Kennung (Solver-Prompt.txt).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
8dd5073cd1
commit
6ecfdf6ae0
1 changed files with 244 additions and 60 deletions
|
|
@ -256,12 +256,12 @@ def _chart_for_table(table):
|
|||
return ""
|
||||
col = table.columns.index(table.objective_column)
|
||||
labels, values, total = [], [], None
|
||||
for row in table.rows:
|
||||
for n, row in enumerate(table.rows):
|
||||
value = row[col] if col < len(row) else None
|
||||
if not isinstance(value, (int, float)) or isinstance(value, bool):
|
||||
continue
|
||||
label = str(row[0]) if row else ""
|
||||
if _is_sum_row(row):
|
||||
if _is_sum_row(row, last=n == len(table.rows) - 1):
|
||||
total = (label, value)
|
||||
else:
|
||||
labels.append(label)
|
||||
|
|
|
|||
Loading…
Reference in a new issue