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]')