File size: 1,903 Bytes
3f9bf12 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | """General composer on cv.run_bgkf: registers vm7 variant + custom aux kinds
in-process, then runs any (kind, variant, blend) combo. No repo edits.
Usage: compose.py <label> kind=<k> [variant=base] [blend=<k2>:<w>]"""
import sys, time
sys.path.insert(0, '/Users/THIF/repos/BatterySwapAI2026-Example')
import os
os.chdir('/Users/THIF/repos/BatterySwapAI2026-Example')
import numpy as np, pandas as pd
from batteryswap_example import models_cv as mc
from batteryswap_example import cv
label = sys.argv[1]
kind, variant, blend = 'logbag', 'base', None
for a in sys.argv[2:]:
k, v = a.split('=', 1)
if k == 'kind':
kind = v
elif k == 'variant':
variant = v
elif k == 'blend':
b, w = v.split(':')
blend = (b, float(w))
cv.VARIANTS['vm7'] = lambda t: cv.BASE_FEATURES + ['vmin7_rank']
mc.MODELS['aux_ho'] = lambda: mc.LogBagFeats(['hot_90', 'oob_90'])
mc.MODELS['aux_hot'] = lambda: mc.LogBagFeats(['hot_90'])
mc.MODELS['aux_oob'] = lambda: mc.LogBagFeats(['oob_90'])
mc.MODELS['aux_ho30'] = lambda: mc.LogBagFeats(['hot_90', 'oob_90'],
n_estimators=30)
mc.MODELS['aux_ho50'] = lambda: mc.LogBagFeats(['hot_90', 'oob_90'],
n_estimators=50)
t0 = time.time()
df = cv.run_bgkf(kind=kind, variant=variant, blend=blend)
df['cand'] = label
df.to_csv(f'/tmp/cv_bgkfcand_{label}.csv', index=False)
base = pd.read_csv('/tmp/cv_bgkf.csv').groupby('origin')[
['total_cost', 'n_swaps']].sum()
d = df.groupby('origin')[['total_cost', 'n_swaps']].sum()
delta = (d['total_cost'] - base['total_cost']).dropna()
se = delta.std() / np.sqrt(len(delta))
print(f'{label}: SCORE {d["total_cost"].mean():.1f} '
f'delta {delta.mean():+.1f} SE {se:.1f} '
f'{int((delta<0).sum())}W/{int((delta>0).sum())}L '
f'swaps {d["n_swaps"].mean():.1f} [{time.time()-t0:.0f}s]')
|