From b62a4f216189f07568f9116d215399693e4062f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fahri=20Can=20Se=C3=A7er?= Date: Wed, 10 Jun 2026 03:01:33 +0300 Subject: [PATCH] gg --- .../catboost_info/catboost_training.json | 874 ------------------ .../catboost_info/learn/events.out.tfevents | Bin 47720 -> 0 bytes ai-engine/catboost_info/learn_error.tsv | 871 ----------------- ai-engine/catboost_info/time_left.tsv | 871 ----------------- ai-engine/models/market_anchor.py | 87 ++ ai-engine/pyright_errors.json | Bin 495736 -> 0 bytes .../services/orchestrator/market_board.py | 220 +++++ ai-engine/tests/test_market_anchor.py | 59 ++ analyze-match.py | 173 ---- analyze-miss.ts | 54 -- analyze-reversal-fast.ts | 212 ----- analyze-reversal-matches.ts | 365 -------- backup_fixed.sql | 0 check-lineup-data.ts | 77 -- copy_key.exp | 10 - docker_info.txt | 62 -- lint-output.txt | 4 - parse_errors.py | 17 - predict-single.ts | 153 --- query-3-matches.ts | 74 -- query-match.ts | 51 - query-matches-detailed.ts | 100 -- query-matches-simple.ts | 63 -- run-prediction.py | 170 ---- run-predictions.ts | 153 --- ts_error.txt | Bin 3496 -> 0 bytes verify-data-usage.ts | 186 ---- 27 files changed, 366 insertions(+), 4540 deletions(-) delete mode 100644 ai-engine/catboost_info/catboost_training.json delete mode 100644 ai-engine/catboost_info/learn/events.out.tfevents delete mode 100644 ai-engine/catboost_info/learn_error.tsv delete mode 100644 ai-engine/catboost_info/time_left.tsv create mode 100644 ai-engine/models/market_anchor.py delete mode 100644 ai-engine/pyright_errors.json create mode 100644 ai-engine/tests/test_market_anchor.py delete mode 100644 analyze-match.py delete mode 100644 analyze-miss.ts delete mode 100644 analyze-reversal-fast.ts delete mode 100644 analyze-reversal-matches.ts delete mode 100644 backup_fixed.sql delete mode 100644 check-lineup-data.ts delete mode 100644 copy_key.exp delete mode 100644 docker_info.txt delete mode 100644 lint-output.txt delete mode 100644 parse_errors.py delete mode 100644 predict-single.ts delete mode 100644 query-3-matches.ts delete mode 100644 query-match.ts delete mode 100644 query-matches-detailed.ts delete mode 100644 query-matches-simple.ts delete mode 100644 run-prediction.py delete mode 100644 run-predictions.ts delete mode 100644 ts_error.txt delete mode 100644 verify-data-usage.ts diff --git a/ai-engine/catboost_info/catboost_training.json b/ai-engine/catboost_info/catboost_training.json deleted file mode 100644 index be369ac..0000000 --- a/ai-engine/catboost_info/catboost_training.json +++ /dev/null @@ -1,874 +0,0 @@ -{ -"meta":{"test_sets":["test"],"test_metrics":[{"best_value":"Min","name":"Logloss"}],"learn_metrics":[{"best_value":"Min","name":"Logloss"}],"launch_mode":"Train","parameters":"","iteration_count":2000,"learn_sets":["learn"],"name":"experiment"}, -"iterations":[ -{"learn":[0.692389481],"iteration":0,"passed_time":0.04679785798,"remaining_time":93.54891809,"test":[0.6924099937]}, -{"learn":[0.6916338586],"iteration":1,"passed_time":0.08350330552,"remaining_time":83.41980222,"test":[0.6916660956]}, -{"learn":[0.6910159214],"iteration":2,"passed_time":0.132821758,"remaining_time":88.41501689,"test":[0.691108145]}, -{"learn":[0.6903417151],"iteration":3,"passed_time":0.162826233,"remaining_time":81.25029026,"test":[0.6904585078]}, -{"learn":[0.6896961461],"iteration":4,"passed_time":0.1969265393,"remaining_time":78.57368918,"test":[0.689812816]}, -{"learn":[0.6890979366],"iteration":5,"passed_time":0.2309352918,"remaining_time":76.74749531,"test":[0.689192261]}, -{"learn":[0.6884946167],"iteration":6,"passed_time":0.2693987513,"remaining_time":76.70167304,"test":[0.6886032715]}, -{"learn":[0.6879503686],"iteration":7,"passed_time":0.3199759681,"remaining_time":79.67401607,"test":[0.6880706742]}, -{"learn":[0.6874528094],"iteration":8,"passed_time":0.3645802206,"remaining_time":80.65324659,"test":[0.6876192378]}, -{"learn":[0.6869036785],"iteration":9,"passed_time":0.4116507506,"remaining_time":81.91849936,"test":[0.6870868859]}, -{"learn":[0.6863761921],"iteration":10,"passed_time":0.4562469316,"remaining_time":82.49774064,"test":[0.6865493528]}, -{"learn":[0.6859038678],"iteration":11,"passed_time":0.491541699,"remaining_time":81.43207481,"test":[0.686105086]}, -{"learn":[0.685410175],"iteration":12,"passed_time":0.5221556769,"remaining_time":79.80948692,"test":[0.6856345086]}, -{"learn":[0.6849483392],"iteration":13,"passed_time":0.5553110353,"remaining_time":78.77483686,"test":[0.6852027185]}, -{"learn":[0.6845417792],"iteration":14,"passed_time":0.5952927147,"remaining_time":78.77706925,"test":[0.6848238481]}, -{"learn":[0.6841038875],"iteration":15,"passed_time":0.6300274185,"remaining_time":78.12339989,"test":[0.6844045699]}, -{"learn":[0.6836957422],"iteration":16,"passed_time":0.662600544,"remaining_time":77.29040464,"test":[0.6840077621]}, -{"learn":[0.6832947461],"iteration":17,"passed_time":0.7004221698,"remaining_time":77.12426337,"test":[0.6836197496]}, -{"learn":[0.6829014105],"iteration":18,"passed_time":0.7300844347,"remaining_time":76.12090869,"test":[0.6832475033]}, -{"learn":[0.6825264546],"iteration":19,"passed_time":0.7641559459,"remaining_time":75.65143865,"test":[0.6829012069]}, -{"learn":[0.6822106577],"iteration":20,"passed_time":0.8040792063,"remaining_time":75.77489282,"test":[0.6825880966]}, -{"learn":[0.6818649349],"iteration":21,"passed_time":0.8356039756,"remaining_time":75.12839381,"test":[0.6822424968]}, -{"learn":[0.6815467855],"iteration":22,"passed_time":0.8861440327,"remaining_time":76.16985881,"test":[0.6819180513]}, -{"learn":[0.6812293319],"iteration":23,"passed_time":0.920219319,"remaining_time":75.76472393,"test":[0.6816384467]}, -{"learn":[0.6808837443],"iteration":24,"passed_time":0.960164738,"remaining_time":75.8530143,"test":[0.6813262593]}, -{"learn":[0.6805816494],"iteration":25,"passed_time":0.9895547925,"remaining_time":75.13004463,"test":[0.6810353411]}, -{"learn":[0.6803209634],"iteration":26,"passed_time":1.025550161,"remaining_time":74.94112844,"test":[0.6808138172]}, -{"learn":[0.6800350862],"iteration":27,"passed_time":1.060852064,"remaining_time":74.71429535,"test":[0.6805550049]}, -{"learn":[0.6797703947],"iteration":28,"passed_time":1.10467538,"remaining_time":75.07983357,"test":[0.680347991]}, -{"learn":[0.6794926675],"iteration":29,"passed_time":1.141766834,"remaining_time":74.97602208,"test":[0.680089679]}, -{"learn":[0.6792251865],"iteration":30,"passed_time":1.180421588,"remaining_time":74.9758099,"test":[0.6798451919]}, -{"learn":[0.6789670166],"iteration":31,"passed_time":1.213674604,"remaining_time":74.64098814,"test":[0.6796090443]}, -{"learn":[0.678722402],"iteration":32,"passed_time":1.245848393,"remaining_time":74.26011482,"test":[0.6793890865]}, -{"learn":[0.678476935],"iteration":33,"passed_time":1.287262512,"remaining_time":74.43406171,"test":[0.6791683772]}, -{"learn":[0.6782297335],"iteration":34,"passed_time":1.327473991,"remaining_time":74.52818262,"test":[0.6789766369]}, -{"learn":[0.6780226701],"iteration":35,"passed_time":1.3760549,"remaining_time":75.07143955,"test":[0.6787930242]}, -{"learn":[0.6778291026],"iteration":36,"passed_time":1.427620019,"remaining_time":75.74102965,"test":[0.6786087714]}, -{"learn":[0.6776045324],"iteration":37,"passed_time":1.468182407,"remaining_time":75.80457587,"test":[0.6784161299]}, -{"learn":[0.6773969079],"iteration":38,"passed_time":1.508647379,"remaining_time":75.85788487,"test":[0.6782227897]}, -{"learn":[0.6771819602],"iteration":39,"passed_time":1.549435187,"remaining_time":75.92232419,"test":[0.6780242369]}, -{"learn":[0.6769816736],"iteration":40,"passed_time":1.586036608,"remaining_time":75.78160282,"test":[0.6778499631]}, -{"learn":[0.6767984027],"iteration":41,"passed_time":1.621458864,"remaining_time":75.59086802,"test":[0.6776975784]}, -{"learn":[0.6766201184],"iteration":42,"passed_time":1.663424818,"remaining_time":75.70517136,"test":[0.6775231674]}, -{"learn":[0.6764394377],"iteration":43,"passed_time":1.70110089,"remaining_time":75.62166686,"test":[0.6773582124]}, -{"learn":[0.6762698797],"iteration":44,"passed_time":1.739954496,"remaining_time":75.59135644,"test":[0.6772234666]}, -{"learn":[0.6760974263],"iteration":45,"passed_time":1.776461223,"remaining_time":75.46098325,"test":[0.6770659843]}, -{"learn":[0.6759245179],"iteration":46,"passed_time":1.819761638,"remaining_time":75.61690381,"test":[0.6769049529]}, -{"learn":[0.6757673909],"iteration":47,"passed_time":1.869479807,"remaining_time":76.02551217,"test":[0.6767664194]}, -{"learn":[0.6756172628],"iteration":48,"passed_time":1.916010121,"remaining_time":76.28848462,"test":[0.6766584917]}, -{"learn":[0.675474531],"iteration":49,"passed_time":1.953635244,"remaining_time":76.19177452,"test":[0.6765507257]}, -{"learn":[0.6753286933],"iteration":50,"passed_time":1.993876686,"remaining_time":76.19736591,"test":[0.6764489911]}, -{"learn":[0.6751900513],"iteration":51,"passed_time":2.038943041,"remaining_time":76.38194316,"test":[0.6763947956]}, -{"learn":[0.6750574835],"iteration":52,"passed_time":2.080276765,"remaining_time":76.42073325,"test":[0.6762778712]}, -{"learn":[0.6749329567],"iteration":53,"passed_time":2.158576742,"remaining_time":77.78871001,"test":[0.6761865366]}, -{"learn":[0.6748033265],"iteration":54,"passed_time":2.220619687,"remaining_time":78.52918711,"test":[0.6760679685]}, -{"learn":[0.6746797823],"iteration":55,"passed_time":2.286959228,"remaining_time":79.39015604,"test":[0.6759774874]}, -{"learn":[0.674535525],"iteration":56,"passed_time":2.328472096,"remaining_time":79.3723032,"test":[0.6758500622]}, -{"learn":[0.6744256514],"iteration":57,"passed_time":2.367031568,"remaining_time":79.25474665,"test":[0.6757625065]}, -{"learn":[0.674310819],"iteration":58,"passed_time":2.409161286,"remaining_time":79.25732298,"test":[0.6756876412]}, -{"learn":[0.6741967947],"iteration":59,"passed_time":2.444825903,"remaining_time":79.04937087,"test":[0.6756151069]}, -{"learn":[0.6740879654],"iteration":60,"passed_time":2.48484996,"remaining_time":78.98564055,"test":[0.6755303655]}, -{"learn":[0.6739772476],"iteration":61,"passed_time":2.521603395,"remaining_time":78.8204416,"test":[0.6754565036]}, -{"learn":[0.67388281],"iteration":62,"passed_time":2.554102332,"remaining_time":78.5285114,"test":[0.6753738983]}, -{"learn":[0.6737789726],"iteration":63,"passed_time":2.593937938,"remaining_time":78.46662263,"test":[0.6752897299]}, -{"learn":[0.6736812332],"iteration":64,"passed_time":2.623889155,"remaining_time":78.11116175,"test":[0.6752115539]}, -{"learn":[0.6735930009],"iteration":65,"passed_time":2.660795108,"remaining_time":77.96935967,"test":[0.6751595431]}, -{"learn":[0.6734947116],"iteration":66,"passed_time":2.695822592,"remaining_time":77.77649358,"test":[0.6750764658]}, -{"learn":[0.6733961481],"iteration":67,"passed_time":2.725876686,"remaining_time":77.44696703,"test":[0.6750179194]}, -{"learn":[0.6732990195],"iteration":68,"passed_time":2.761848366,"remaining_time":77.29172746,"test":[0.6749408803]}, -{"learn":[0.6732133575],"iteration":69,"passed_time":2.791847449,"remaining_time":76.97522253,"test":[0.6748795802]}, -{"learn":[0.673111539],"iteration":70,"passed_time":2.824541003,"remaining_time":76.73999429,"test":[0.674790372]}, -{"learn":[0.6730080451],"iteration":71,"passed_time":2.861023716,"remaining_time":76.61185729,"test":[0.6747239773]}, -{"learn":[0.6729157861],"iteration":72,"passed_time":2.897136588,"remaining_time":76.47646857,"test":[0.6746701254]}, -{"learn":[0.6728347949],"iteration":73,"passed_time":2.935718661,"remaining_time":76.40802894,"test":[0.6746120937]}, -{"learn":[0.6727640693],"iteration":74,"passed_time":3.040023476,"remaining_time":78.02726921,"test":[0.6745550085]}, -{"learn":[0.6726808811],"iteration":75,"passed_time":3.097341794,"remaining_time":78.41165279,"test":[0.6744855074]}, -{"learn":[0.6726029645],"iteration":76,"passed_time":3.152948955,"remaining_time":78.74182909,"test":[0.6744264172]}, -{"learn":[0.6725356026],"iteration":77,"passed_time":3.216126808,"remaining_time":79.24866314,"test":[0.674381715]}, -{"learn":[0.6724606887],"iteration":78,"passed_time":3.256861302,"remaining_time":79.19532355,"test":[0.6743331681]}, -{"learn":[0.6723849561],"iteration":79,"passed_time":3.305679851,"remaining_time":79.33631641,"test":[0.67428564]}, -{"learn":[0.6723050519],"iteration":80,"passed_time":3.348083566,"remaining_time":79.32064647,"test":[0.6742202413]}, -{"learn":[0.6722508802],"iteration":81,"passed_time":3.38129387,"remaining_time":79.08928832,"test":[0.6741620971]}, -{"learn":[0.6721773904],"iteration":82,"passed_time":3.41660066,"remaining_time":78.91112609,"test":[0.6741109453]}, -{"learn":[0.6721007598],"iteration":83,"passed_time":3.48099347,"remaining_time":79.39980344,"test":[0.6740556003]}, -{"learn":[0.6720353564],"iteration":84,"passed_time":3.535359896,"remaining_time":79.64957884,"test":[0.6740146772]}, -{"learn":[0.6719790902],"iteration":85,"passed_time":3.581806996,"remaining_time":79.71603012,"test":[0.673983295]}, -{"learn":[0.6719140024],"iteration":86,"passed_time":3.612293661,"remaining_time":79.42893993,"test":[0.6739595301]}, -{"learn":[0.6718573633],"iteration":87,"passed_time":3.644530261,"remaining_time":79.18570293,"test":[0.6739336659]}, -{"learn":[0.671795602],"iteration":88,"passed_time":3.67809653,"remaining_time":78.97575809,"test":[0.673890361]}, -{"learn":[0.6717369134],"iteration":89,"passed_time":3.712417516,"remaining_time":78.78574951,"test":[0.673863586]}, -{"learn":[0.6716711079],"iteration":90,"passed_time":3.743502971,"remaining_time":78.53128759,"test":[0.6738190616]}, -{"learn":[0.6716070843],"iteration":91,"passed_time":3.775351679,"remaining_time":78.2975109,"test":[0.6737799295]}, -{"learn":[0.6715517232],"iteration":92,"passed_time":3.806186247,"remaining_time":78.04728142,"test":[0.6737364374]}, -{"learn":[0.6714957378],"iteration":93,"passed_time":3.83798807,"remaining_time":77.82133257,"test":[0.6737093719]}, -{"learn":[0.6714364567],"iteration":94,"passed_time":3.871278973,"remaining_time":77.62933099,"test":[0.6736630475]}, -{"learn":[0.6713881758],"iteration":95,"passed_time":3.913531039,"remaining_time":77.6183656,"test":[0.67364367]}, -{"learn":[0.6713336502],"iteration":96,"passed_time":3.945433866,"remaining_time":77.40371802,"test":[0.6735998081]}, -{"learn":[0.6712700267],"iteration":97,"passed_time":3.989716281,"remaining_time":77.43306496,"test":[0.6735526984]}, -{"learn":[0.6712154424],"iteration":98,"passed_time":4.020621946,"remaining_time":77.20406384,"test":[0.6735012924]}, -{"learn":[0.6711600413],"iteration":99,"passed_time":4.053732144,"remaining_time":77.02091074,"test":[0.6734818024]}, -{"learn":[0.6711060533],"iteration":100,"passed_time":4.084124711,"remaining_time":76.78963194,"test":[0.6734379341]}, -{"learn":[0.6710494943],"iteration":101,"passed_time":4.116434744,"remaining_time":76.59797199,"test":[0.6734059869]}, -{"learn":[0.6709936897],"iteration":102,"passed_time":4.148330356,"remaining_time":76.40177365,"test":[0.6733740852]}, -{"learn":[0.6709472183],"iteration":103,"passed_time":4.176511193,"remaining_time":76.14101176,"test":[0.6733330971]}, -{"learn":[0.6708914508],"iteration":104,"passed_time":4.2025065,"remaining_time":75.84523636,"test":[0.6733060254]}, -{"learn":[0.6708388195],"iteration":105,"passed_time":4.232975206,"remaining_time":75.63448151,"test":[0.6732755898]}, -{"learn":[0.6707885854],"iteration":106,"passed_time":4.261364958,"remaining_time":75.39031649,"test":[0.6732294722]}, -{"learn":[0.6707454167],"iteration":107,"passed_time":4.290824713,"remaining_time":75.1688922,"test":[0.6732035176]}, -{"learn":[0.6706973013],"iteration":108,"passed_time":4.324192493,"remaining_time":75.01878903,"test":[0.673196437]}, -{"learn":[0.6706577031],"iteration":109,"passed_time":4.351512102,"remaining_time":74.76688976,"test":[0.6731652709]}, -{"learn":[0.67061108],"iteration":110,"passed_time":4.38641502,"remaining_time":74.64808984,"test":[0.673138808]}, -{"learn":[0.6705625485],"iteration":111,"passed_time":4.424063991,"remaining_time":74.57707871,"test":[0.6731062725]}, -{"learn":[0.6705146484],"iteration":112,"passed_time":4.45863849,"remaining_time":74.45531709,"test":[0.6730726625]}, -{"learn":[0.6704704423],"iteration":113,"passed_time":4.497153675,"remaining_time":74.40027922,"test":[0.6730285927]}, -{"learn":[0.6704155922],"iteration":114,"passed_time":4.533368584,"remaining_time":74.30782417,"test":[0.6729872702]}, -{"learn":[0.6703687117],"iteration":115,"passed_time":4.564651269,"remaining_time":74.13623268,"test":[0.6729721425]}, -{"learn":[0.6703324232],"iteration":116,"passed_time":4.596824343,"remaining_time":73.98136956,"test":[0.6729564624]}, -{"learn":[0.6702884624],"iteration":117,"passed_time":4.628377967,"remaining_time":73.81870623,"test":[0.6729312424]}, -{"learn":[0.670253478],"iteration":118,"passed_time":4.668052254,"remaining_time":73.78660748,"test":[0.6729354345]}, -{"learn":[0.6702140804],"iteration":119,"passed_time":4.692108266,"remaining_time":73.50969617,"test":[0.6729085401]}, -{"learn":[0.6701682529],"iteration":120,"passed_time":4.723741667,"remaining_time":73.354633,"test":[0.6728898322]}, -{"learn":[0.6701320588],"iteration":121,"passed_time":4.756626425,"remaining_time":73.22085595,"test":[0.6728773638]}, -{"learn":[0.6700939824],"iteration":122,"passed_time":4.788008428,"remaining_time":73.06578714,"test":[0.6728618874]}, -{"learn":[0.6700655902],"iteration":123,"passed_time":4.815546648,"remaining_time":72.85456058,"test":[0.6728540413]}, -{"learn":[0.6700190743],"iteration":124,"passed_time":4.843186806,"remaining_time":72.64780209,"test":[0.6728441291]}, -{"learn":[0.6699792296],"iteration":125,"passed_time":4.875548614,"remaining_time":72.51411192,"test":[0.672815631]}, -{"learn":[0.6699379404],"iteration":126,"passed_time":4.916953662,"remaining_time":72.51538748,"test":[0.6728082021]}, -{"learn":[0.669895454],"iteration":127,"passed_time":4.952918369,"remaining_time":72.43643115,"test":[0.6727900064]}, -{"learn":[0.6698563938],"iteration":128,"passed_time":4.991585558,"remaining_time":72.39733782,"test":[0.6727649552]}, -{"learn":[0.6698215571],"iteration":129,"passed_time":5.028084166,"remaining_time":72.32705685,"test":[0.6727467657]}, -{"learn":[0.6697857067],"iteration":130,"passed_time":5.059198996,"remaining_time":72.18048033,"test":[0.6727396032]}, -{"learn":[0.6697449303],"iteration":131,"passed_time":5.096035515,"remaining_time":72.1166238,"test":[0.6727245271]}, -{"learn":[0.6697052425],"iteration":132,"passed_time":5.125282589,"remaining_time":71.94663604,"test":[0.6726955143]}, -{"learn":[0.6696695553],"iteration":133,"passed_time":5.156392608,"remaining_time":71.80469109,"test":[0.67269209]}, -{"learn":[0.6696269265],"iteration":134,"passed_time":5.190402292,"remaining_time":71.70444647,"test":[0.672677932]}, -{"learn":[0.6695969271],"iteration":135,"passed_time":5.221466142,"remaining_time":71.56480065,"test":[0.6726540285]}, -{"learn":[0.6695489786],"iteration":136,"passed_time":5.251144663,"remaining_time":71.40790151,"test":[0.6726288583]}, -{"learn":[0.6695173859],"iteration":137,"passed_time":5.274361693,"remaining_time":71.16566285,"test":[0.6725863431]}, -{"learn":[0.6694811164],"iteration":138,"passed_time":5.309398952,"remaining_time":71.08483058,"test":[0.6725837967]}, -{"learn":[0.6694477439],"iteration":139,"passed_time":5.344693175,"remaining_time":71.00806646,"test":[0.6725772977]}, -{"learn":[0.6694082161],"iteration":140,"passed_time":5.377737126,"remaining_time":70.90222211,"test":[0.6725685594]}, -{"learn":[0.6693679185],"iteration":141,"passed_time":5.416087925,"remaining_time":70.8668406,"test":[0.6725553829]}, -{"learn":[0.6693341916],"iteration":142,"passed_time":5.452286939,"remaining_time":70.80347444,"test":[0.6725484347]}, -{"learn":[0.6692933159],"iteration":143,"passed_time":5.490006789,"remaining_time":70.7600875,"test":[0.6725306172]}, -{"learn":[0.6692619696],"iteration":144,"passed_time":5.521869859,"remaining_time":70.64185233,"test":[0.672543149]}, -{"learn":[0.6692229289],"iteration":145,"passed_time":5.553520721,"remaining_time":70.5221056,"test":[0.6725196247]}, -{"learn":[0.6691840164],"iteration":146,"passed_time":5.582178524,"remaining_time":70.3658286,"test":[0.6725226452]}, -{"learn":[0.6691581406],"iteration":147,"passed_time":5.611368671,"remaining_time":70.21793769,"test":[0.6725056913]}, -{"learn":[0.6691177196],"iteration":148,"passed_time":5.636941079,"remaining_time":70.02669757,"test":[0.6724771476]}, -{"learn":[0.6690851126],"iteration":149,"passed_time":5.673704689,"remaining_time":69.97569117,"test":[0.6724439435]}, -{"learn":[0.6690518144],"iteration":150,"passed_time":5.706346207,"remaining_time":69.87439826,"test":[0.672442532]}, -{"learn":[0.6690149711],"iteration":151,"passed_time":5.738210991,"remaining_time":69.76456521,"test":[0.6724303064]}, -{"learn":[0.668993877],"iteration":152,"passed_time":5.765951318,"remaining_time":69.60596133,"test":[0.6724235788]}, -{"learn":[0.6689596579],"iteration":153,"passed_time":5.795573467,"remaining_time":69.47161442,"test":[0.6724294499]}, -{"learn":[0.6689372651],"iteration":154,"passed_time":5.81744896,"remaining_time":69.24640858,"test":[0.6724285935]}, -{"learn":[0.6689003045],"iteration":155,"passed_time":5.853529431,"remaining_time":69.19171968,"test":[0.6724172017]}, -{"learn":[0.6688680182],"iteration":156,"passed_time":5.888380392,"remaining_time":69.12283479,"test":[0.6724130745]}, -{"learn":[0.6688348164],"iteration":157,"passed_time":5.924601775,"remaining_time":69.07035741,"test":[0.6723860878]}, -{"learn":[0.6687947046],"iteration":158,"passed_time":5.964531924,"remaining_time":69.06102687,"test":[0.6723707604]}, -{"learn":[0.6687605251],"iteration":159,"passed_time":5.996805452,"remaining_time":68.9632627,"test":[0.6723566111]}, -{"learn":[0.668726253],"iteration":160,"passed_time":6.022341459,"remaining_time":68.78935368,"test":[0.6723469906]}, -{"learn":[0.6686862718],"iteration":161,"passed_time":6.05082584,"remaining_time":68.65072774,"test":[0.6723287161]}, -{"learn":[0.668663478],"iteration":162,"passed_time":6.079027554,"remaining_time":68.51026759,"test":[0.6723155898]}, -{"learn":[0.6686399521],"iteration":163,"passed_time":6.108511297,"remaining_time":68.38552891,"test":[0.6722970834]}, -{"learn":[0.6686058279],"iteration":164,"passed_time":6.140719309,"remaining_time":68.29224202,"test":[0.6722872244]}, -{"learn":[0.6685761282],"iteration":165,"passed_time":6.169540017,"remaining_time":68.16226742,"test":[0.6722800481]}, -{"learn":[0.6685469327],"iteration":166,"passed_time":6.2020892,"remaining_time":68.07442817,"test":[0.6722550973]}, -{"learn":[0.6685157003],"iteration":167,"passed_time":6.231576547,"remaining_time":67.95385854,"test":[0.6722394313]}, -{"learn":[0.6684805143],"iteration":168,"passed_time":6.263261652,"remaining_time":67.85817802,"test":[0.6722204135]}, -{"learn":[0.6684485765],"iteration":169,"passed_time":6.295102833,"remaining_time":67.7649305,"test":[0.6721982148]}, -{"learn":[0.6684144429],"iteration":170,"passed_time":6.325415964,"remaining_time":67.65605729,"test":[0.6721971176]}, -{"learn":[0.6683849752],"iteration":171,"passed_time":6.35697084,"remaining_time":67.56129474,"test":[0.6721880705]}, -{"learn":[0.6683568537],"iteration":172,"passed_time":6.395913563,"remaining_time":67.5452837,"test":[0.672179176]}, -{"learn":[0.6683266628],"iteration":173,"passed_time":6.437330522,"remaining_time":67.55497433,"test":[0.6721769709]}, -{"learn":[0.6682937842],"iteration":174,"passed_time":6.472195712,"remaining_time":67.49575528,"test":[0.6721693215]}, -{"learn":[0.6682657097],"iteration":175,"passed_time":6.503044842,"remaining_time":67.395192,"test":[0.6721581386]}, -{"learn":[0.6682301443],"iteration":176,"passed_time":6.533528251,"remaining_time":67.29164972,"test":[0.6721638661]}, -{"learn":[0.6681995916],"iteration":177,"passed_time":6.562589882,"remaining_time":67.17437509,"test":[0.6721598475]}, -{"learn":[0.6681658267],"iteration":178,"passed_time":6.590816982,"remaining_time":67.04959623,"test":[0.6721433342]}, -{"learn":[0.6681422687],"iteration":179,"passed_time":6.624646227,"remaining_time":66.98253407,"test":[0.6721335599]}, -{"learn":[0.6681216601],"iteration":180,"passed_time":6.655147334,"remaining_time":66.88239227,"test":[0.6721300594]}, -{"learn":[0.6680899019],"iteration":181,"passed_time":6.687788902,"remaining_time":66.80439684,"test":[0.6721153533]}, -{"learn":[0.6680676394],"iteration":182,"passed_time":6.718057043,"remaining_time":66.7033314,"test":[0.6721076397]}, -{"learn":[0.6680413672],"iteration":183,"passed_time":6.751300957,"remaining_time":66.6324051,"test":[0.6721009911]}, -{"learn":[0.6680088406],"iteration":184,"passed_time":6.784288393,"remaining_time":66.55936991,"test":[0.6720999252]}, -{"learn":[0.6679873982],"iteration":185,"passed_time":6.810905309,"remaining_time":66.42463565,"test":[0.6720953028]}, -{"learn":[0.6679663544],"iteration":186,"passed_time":6.832974292,"remaining_time":66.24696466,"test":[0.6720942505]}, -{"learn":[0.6679417375],"iteration":187,"passed_time":6.867184511,"remaining_time":66.18796986,"test":[0.6720856237]}, -{"learn":[0.6679100197],"iteration":188,"passed_time":6.918652024,"remaining_time":66.29459691,"test":[0.6720876136]}, -{"learn":[0.667881208],"iteration":189,"passed_time":6.96948149,"remaining_time":66.39348156,"test":[0.6720880182]}, -{"learn":[0.6678475427],"iteration":190,"passed_time":7.018176318,"remaining_time":66.47058094,"test":[0.6720743856]}, -{"learn":[0.6678310341],"iteration":191,"passed_time":7.074099623,"remaining_time":66.61443812,"test":[0.6720598415]}, -{"learn":[0.6678060257],"iteration":192,"passed_time":7.117099742,"remaining_time":66.63522919,"test":[0.6720563492]}, -{"learn":[0.6677789336],"iteration":193,"passed_time":7.191058554,"remaining_time":66.94356571,"test":[0.6720389527]}, -{"learn":[0.6677478773],"iteration":194,"passed_time":7.2421897,"remaining_time":67.03667902,"test":[0.6720317324]}, -{"learn":[0.6677212408],"iteration":195,"passed_time":7.282401129,"remaining_time":67.02781447,"test":[0.672000736]}, -{"learn":[0.667704316],"iteration":196,"passed_time":7.317019235,"remaining_time":66.96744,"test":[0.6719895017]}, -{"learn":[0.6676819639],"iteration":197,"passed_time":7.351194179,"remaining_time":66.90329248,"test":[0.6719725302]}, -{"learn":[0.6676554448],"iteration":198,"passed_time":7.389840926,"remaining_time":66.87991712,"test":[0.6719770493]}, -{"learn":[0.6676318346],"iteration":199,"passed_time":7.432994652,"remaining_time":66.89695187,"test":[0.6719667172]}, -{"learn":[0.6676074705],"iteration":200,"passed_time":7.471295231,"remaining_time":66.86995085,"test":[0.6719511616]}, -{"learn":[0.6675849784],"iteration":201,"passed_time":7.506377837,"remaining_time":66.8141948,"test":[0.6719427289]}, -{"learn":[0.6675631744],"iteration":202,"passed_time":7.540821494,"remaining_time":66.75298633,"test":[0.6719299116]}, -{"learn":[0.6675397619],"iteration":203,"passed_time":7.56808212,"remaining_time":66.62880141,"test":[0.6719106583]}, -{"learn":[0.6675169086],"iteration":204,"passed_time":7.605676901,"remaining_time":66.59604896,"test":[0.6718967065]}, -{"learn":[0.6674864762],"iteration":205,"passed_time":7.638300222,"remaining_time":66.51995436,"test":[0.671890967]}, -{"learn":[0.6674670714],"iteration":206,"passed_time":7.665554951,"remaining_time":66.39777791,"test":[0.6718896293]}, -{"learn":[0.6674375599],"iteration":207,"passed_time":7.700277678,"remaining_time":66.34085384,"test":[0.6718883534]}, -{"learn":[0.6674148457],"iteration":208,"passed_time":7.734145802,"remaining_time":66.27681881,"test":[0.6718827289]}, -{"learn":[0.6673974446],"iteration":209,"passed_time":7.766232144,"remaining_time":66.19788351,"test":[0.6718763224]}, -{"learn":[0.6673812139],"iteration":210,"passed_time":7.796801222,"remaining_time":66.1065279,"test":[0.67187262]}, -{"learn":[0.6673515687],"iteration":211,"passed_time":7.831891449,"remaining_time":66.05387693,"test":[0.6718590402]}, -{"learn":[0.6673197956],"iteration":212,"passed_time":7.871259964,"remaining_time":66.0372843,"test":[0.6718455115]}, -{"learn":[0.6672900754],"iteration":213,"passed_time":7.910110502,"remaining_time":66.01615587,"test":[0.6718253747]}, -{"learn":[0.6672550009],"iteration":214,"passed_time":7.951342226,"remaining_time":66.01463197,"test":[0.671794877]}, -{"learn":[0.6672271563],"iteration":215,"passed_time":7.989001461,"remaining_time":65.98323429,"test":[0.6717873786]}, -{"learn":[0.667204521],"iteration":216,"passed_time":8.025973631,"remaining_time":65.94613357,"test":[0.6717765089]}, -{"learn":[0.667181968],"iteration":217,"passed_time":8.058434478,"remaining_time":65.87215707,"test":[0.6717616726]}, -{"learn":[0.6671640023],"iteration":218,"passed_time":8.087145957,"remaining_time":65.76806826,"test":[0.6717499215]}, -{"learn":[0.66714351],"iteration":219,"passed_time":8.112590578,"remaining_time":65.63823286,"test":[0.6717326052]}, -{"learn":[0.6671167156],"iteration":220,"passed_time":8.148644349,"remaining_time":65.59474342,"test":[0.6717161937]}, -{"learn":[0.6670915937],"iteration":221,"passed_time":8.197662625,"remaining_time":65.65515382,"test":[0.6717056951]}, -{"learn":[0.6670595279],"iteration":222,"passed_time":8.239228431,"remaining_time":65.65519696,"test":[0.6717021438]}, -{"learn":[0.667033994],"iteration":223,"passed_time":8.268371203,"remaining_time":65.55637168,"test":[0.6716868488]}, -{"learn":[0.6670008246],"iteration":224,"passed_time":8.298555216,"remaining_time":65.46638004,"test":[0.6716751909]}, -{"learn":[0.6669858319],"iteration":225,"passed_time":8.327401394,"remaining_time":65.36641625,"test":[0.671670116]}, -{"learn":[0.6669553964],"iteration":226,"passed_time":8.357648377,"remaining_time":65.27802014,"test":[0.6716558757]}, -{"learn":[0.6669274683],"iteration":227,"passed_time":8.384989701,"remaining_time":65.16755154,"test":[0.6716559962]}, -{"learn":[0.666896348],"iteration":228,"passed_time":8.418297538,"remaining_time":65.1039517,"test":[0.6716487875]}, -{"learn":[0.6668698686],"iteration":229,"passed_time":8.453919972,"remaining_time":65.05842761,"test":[0.6716427451]}, -{"learn":[0.6668513411],"iteration":230,"passed_time":8.49049033,"remaining_time":65.02024846,"test":[0.6716323255]}, -{"learn":[0.6668309985],"iteration":231,"passed_time":8.523986676,"remaining_time":64.95865708,"test":[0.6716303547]}, -{"learn":[0.6668058585],"iteration":232,"passed_time":8.550998228,"remaining_time":64.84812819,"test":[0.6716309509]}, -{"learn":[0.6667845908],"iteration":233,"passed_time":8.575382398,"remaining_time":64.71848425,"test":[0.6716215401]}, -{"learn":[0.6667582863],"iteration":234,"passed_time":8.607602961,"remaining_time":64.64859245,"test":[0.6716162103]}, -{"learn":[0.6667332943],"iteration":235,"passed_time":8.6353786,"remaining_time":64.54579597,"test":[0.6716135097]}, -{"learn":[0.6667070085],"iteration":236,"passed_time":8.66085309,"remaining_time":64.42651476,"test":[0.6716156696]}, -{"learn":[0.6666907315],"iteration":237,"passed_time":8.691362456,"remaining_time":64.34529684,"test":[0.6716020054]}, -{"learn":[0.6666633028],"iteration":238,"passed_time":8.719983169,"remaining_time":64.25058728,"test":[0.6715921704]}, -{"learn":[0.6666406707],"iteration":239,"passed_time":8.746012652,"remaining_time":64.13742611,"test":[0.6715804466]}, -{"learn":[0.6666134624],"iteration":240,"passed_time":8.773898765,"remaining_time":64.03853912,"test":[0.6715882966]}, -{"learn":[0.6665850522],"iteration":241,"passed_time":8.803292064,"remaining_time":63.9511878,"test":[0.6715753942]}, -{"learn":[0.6665631193],"iteration":242,"passed_time":8.833976809,"remaining_time":63.87365125,"test":[0.6715752261]}, -{"learn":[0.6665412643],"iteration":243,"passed_time":8.862338006,"remaining_time":63.7797768,"test":[0.6715625509]}, -{"learn":[0.6665168385],"iteration":244,"passed_time":8.892424073,"remaining_time":63.69879285,"test":[0.6715628214]}, -{"learn":[0.6664904845],"iteration":245,"passed_time":8.932383667,"remaining_time":63.68862175,"test":[0.6715601629]}, -{"learn":[0.6664678274],"iteration":246,"passed_time":8.962911123,"remaining_time":63.61126801,"test":[0.6715576255]}, -{"learn":[0.6664539777],"iteration":247,"passed_time":8.991624872,"remaining_time":63.52147894,"test":[0.6715550274]}, -{"learn":[0.6664334121],"iteration":248,"passed_time":9.021847081,"remaining_time":63.44278811,"test":[0.6715448645]}, -{"learn":[0.6664121724],"iteration":249,"passed_time":9.05121341,"remaining_time":63.35849387,"test":[0.6715308166]}, -{"learn":[0.666392034],"iteration":250,"passed_time":9.085113431,"remaining_time":63.30622865,"test":[0.671519334]}, -{"learn":[0.666366899],"iteration":251,"passed_time":9.110250512,"remaining_time":63.19332498,"test":[0.6715184071]}, -{"learn":[0.6663414098],"iteration":252,"passed_time":9.137253573,"remaining_time":63.09399997,"test":[0.6715163019]}, -{"learn":[0.6663157816],"iteration":253,"passed_time":9.174559864,"remaining_time":63.06606899,"test":[0.6715096094]}, -{"learn":[0.6662989799],"iteration":254,"passed_time":9.196898204,"remaining_time":62.93563673,"test":[0.6714992963]}, -{"learn":[0.6662696102],"iteration":255,"passed_time":9.238149902,"remaining_time":62.9348962,"test":[0.6714917256]}, -{"learn":[0.6662479711],"iteration":256,"passed_time":9.267818291,"remaining_time":62.85528125,"test":[0.671477406]}, -{"learn":[0.6662231874],"iteration":257,"passed_time":9.297538986,"remaining_time":62.77640665,"test":[0.6714741542]}, -{"learn":[0.6661947927],"iteration":258,"passed_time":9.324772701,"remaining_time":62.68119411,"test":[0.6714576155]}, -{"learn":[0.6661669951],"iteration":259,"passed_time":9.357824574,"remaining_time":62.62544138,"test":[0.6714473645]}, -{"learn":[0.6661426137],"iteration":260,"passed_time":9.388345461,"remaining_time":62.55299907,"test":[0.6714427232]}, -{"learn":[0.6661216749],"iteration":261,"passed_time":9.427290804,"remaining_time":62.53676114,"test":[0.6714364275]}, -{"learn":[0.6660983123],"iteration":262,"passed_time":9.461913185,"remaining_time":62.49179925,"test":[0.6714339587]}, -{"learn":[0.6660803402],"iteration":263,"passed_time":9.496090562,"remaining_time":62.44398945,"test":[0.6714336287]}, -{"learn":[0.6660617842],"iteration":264,"passed_time":9.524189317,"remaining_time":62.35648477,"test":[0.6714283568]}, -{"learn":[0.6660443878],"iteration":265,"passed_time":9.55372419,"remaining_time":62.27878852,"test":[0.6714271895]}, -{"learn":[0.6660176079],"iteration":266,"passed_time":9.590356068,"remaining_time":62.2475171,"test":[0.671413471]}, -{"learn":[0.6659967546],"iteration":267,"passed_time":9.620235131,"remaining_time":62.17256436,"test":[0.6714072396]}, -{"learn":[0.6659751467],"iteration":268,"passed_time":9.645948482,"remaining_time":62.0711406,"test":[0.6714002677]}, -{"learn":[0.6659539329],"iteration":269,"passed_time":9.682675077,"remaining_time":62.04084401,"test":[0.6714001163]}, -{"learn":[0.6659263951],"iteration":270,"passed_time":9.711914203,"remaining_time":61.96272936,"test":[0.6713933952]}, -{"learn":[0.6659038921],"iteration":271,"passed_time":9.739142426,"remaining_time":61.87219894,"test":[0.6713926761]}, -{"learn":[0.6658767418],"iteration":272,"passed_time":9.768751964,"remaining_time":61.79719649,"test":[0.6713836619]}, -{"learn":[0.6658510507],"iteration":273,"passed_time":9.804576737,"remaining_time":61.76167682,"test":[0.6713772112]}, -{"learn":[0.6658210119],"iteration":274,"passed_time":9.848653906,"remaining_time":61.77791996,"test":[0.6713603715]}, -{"learn":[0.6657963011],"iteration":275,"passed_time":9.88663261,"remaining_time":61.75563268,"test":[0.6713560246]}, -{"learn":[0.6657748552],"iteration":276,"passed_time":9.925808942,"remaining_time":61.74068161,"test":[0.6713837913]}, -{"learn":[0.6657490013],"iteration":277,"passed_time":9.965409489,"remaining_time":61.72818396,"test":[0.6713684274]}, -{"learn":[0.665732402],"iteration":278,"passed_time":9.99537326,"remaining_time":61.65604796,"test":[0.6713619356]}, -{"learn":[0.6657118786],"iteration":279,"passed_time":10.02216777,"remaining_time":61.5647449,"test":[0.6713584836]}, -{"learn":[0.665684467],"iteration":280,"passed_time":10.05593393,"remaining_time":61.51654955,"test":[0.6713673572]}, -{"learn":[0.6656584634],"iteration":281,"passed_time":10.08025153,"remaining_time":61.41089406,"test":[0.6713625568]}, -{"learn":[0.6656309991],"iteration":282,"passed_time":10.11102202,"remaining_time":61.34496401,"test":[0.6713542652]}, -{"learn":[0.6656073482],"iteration":283,"passed_time":10.14714598,"remaining_time":61.31162855,"test":[0.6713512017]}, -{"learn":[0.6655890957],"iteration":284,"passed_time":10.17528061,"remaining_time":61.23019734,"test":[0.671342038]}, -{"learn":[0.6655665563],"iteration":285,"passed_time":10.2021403,"remaining_time":61.14149818,"test":[0.6713279798]}, -{"learn":[0.6655452454],"iteration":286,"passed_time":10.23423432,"remaining_time":61.08447174,"test":[0.6713123285]}, -{"learn":[0.6655255286],"iteration":287,"passed_time":10.26481698,"remaining_time":61.0186343,"test":[0.6713035326]}, -{"learn":[0.6655053548],"iteration":288,"passed_time":10.29945844,"remaining_time":60.97707056,"test":[0.6713022203]}, -{"learn":[0.6654893396],"iteration":289,"passed_time":10.32366496,"remaining_time":60.87402441,"test":[0.671296041]}, -{"learn":[0.6654648912],"iteration":290,"passed_time":10.35344703,"remaining_time":60.80426453,"test":[0.6712829551]}, -{"learn":[0.6654442759],"iteration":291,"passed_time":10.3949915,"remaining_time":60.8035804,"test":[0.6712769751]}, -{"learn":[0.6654173127],"iteration":292,"passed_time":10.43148765,"remaining_time":60.77320621,"test":[0.6712702915]}, -{"learn":[0.6653914518],"iteration":293,"passed_time":10.47162738,"remaining_time":60.76393303,"test":[0.6712379343]}, -{"learn":[0.6653648946],"iteration":294,"passed_time":10.50360107,"remaining_time":60.70725362,"test":[0.6712192006]}, -{"learn":[0.665344141],"iteration":295,"passed_time":10.53460819,"remaining_time":60.64517686,"test":[0.6712074061]}, -{"learn":[0.6653140817],"iteration":296,"passed_time":10.57659448,"remaining_time":60.64626395,"test":[0.6711953324]}, -{"learn":[0.665295365],"iteration":297,"passed_time":10.61260262,"remaining_time":60.61291829,"test":[0.6711891001]}, -{"learn":[0.6652787488],"iteration":298,"passed_time":10.63910358,"remaining_time":60.52546889,"test":[0.6711870526]}, -{"learn":[0.6652502991],"iteration":299,"passed_time":10.6681867,"remaining_time":60.45305797,"test":[0.6711812809]}, -{"learn":[0.665231168],"iteration":300,"passed_time":10.70260503,"remaining_time":60.41104967,"test":[0.6711768946]}, -{"learn":[0.6652136682],"iteration":301,"passed_time":10.72952096,"remaining_time":60.32690925,"test":[0.6711845012]}, -{"learn":[0.6651903001],"iteration":302,"passed_time":10.76489952,"remaining_time":60.29054288,"test":[0.6711869636]}, -{"learn":[0.6651697153],"iteration":303,"passed_time":10.80197155,"remaining_time":60.26363073,"test":[0.671186884]}, -{"learn":[0.6651525958],"iteration":304,"passed_time":10.82922271,"remaining_time":60.18207375,"test":[0.6711890401]}, -{"learn":[0.6651322685],"iteration":305,"passed_time":10.8578399,"remaining_time":60.10843394,"test":[0.6711868603]}, -{"learn":[0.6651113828],"iteration":306,"passed_time":10.89228879,"remaining_time":60.06724727,"test":[0.6711900892]}, -{"learn":[0.6650886807],"iteration":307,"passed_time":10.93056436,"remaining_time":60.04712628,"test":[0.6711884242]}, -{"learn":[0.6650622251],"iteration":308,"passed_time":10.97231236,"remaining_time":60.04589061,"test":[0.6711837119]}, -{"learn":[0.6650429987],"iteration":309,"passed_time":11.00296848,"remaining_time":59.98392494,"test":[0.6711766645]}, -{"learn":[0.665015513],"iteration":310,"passed_time":11.03002276,"remaining_time":59.90259947,"test":[0.671172959]}, -{"learn":[0.6650019022],"iteration":311,"passed_time":11.05828865,"remaining_time":59.82817707,"test":[0.6711740433]}, -{"learn":[0.664979951],"iteration":312,"passed_time":11.09287745,"remaining_time":59.78812863,"test":[0.6711715069]}, -{"learn":[0.6649549638],"iteration":313,"passed_time":11.1177757,"remaining_time":59.69608229,"test":[0.6711589843]}, -{"learn":[0.6649340455],"iteration":314,"passed_time":11.14959087,"remaining_time":59.64146228,"test":[0.6711446402]}, -{"learn":[0.6649162445],"iteration":315,"passed_time":11.18718772,"remaining_time":59.61779784,"test":[0.6711415366]}, -{"learn":[0.6649048119],"iteration":316,"passed_time":11.21179073,"remaining_time":59.52505932,"test":[0.6711359351]}, -{"learn":[0.6648796463],"iteration":317,"passed_time":11.24311165,"remaining_time":59.46828238,"test":[0.671143361]}, -{"learn":[0.6648605481],"iteration":318,"passed_time":11.27486028,"remaining_time":59.41391889,"test":[0.6711353638]}, -{"learn":[0.6648429084],"iteration":319,"passed_time":11.30400807,"remaining_time":59.34604237,"test":[0.6711444387]}, -{"learn":[0.6648238121],"iteration":320,"passed_time":11.33488419,"remaining_time":59.28744721,"test":[0.6711487352]}, -{"learn":[0.6647969527],"iteration":321,"passed_time":11.36208838,"remaining_time":59.20988915,"test":[0.67114436]}, -{"learn":[0.6647854723],"iteration":322,"passed_time":11.39429642,"remaining_time":59.15862259,"test":[0.6711444722]}, -{"learn":[0.6647589304],"iteration":323,"passed_time":11.4363998,"remaining_time":59.15866068,"test":[0.6711325635]}, -{"learn":[0.6647429024],"iteration":324,"passed_time":11.47751019,"remaining_time":59.15332173,"test":[0.6711269403]}, -{"learn":[0.6647237508],"iteration":325,"passed_time":11.5136833,"remaining_time":59.12241054,"test":[0.6711154078]}, -{"learn":[0.6647059396],"iteration":326,"passed_time":11.54795566,"remaining_time":59.08174257,"test":[0.6711203043]}, -{"learn":[0.664686288],"iteration":327,"passed_time":11.57245915,"remaining_time":58.99131613,"test":[0.6711241333]}, -{"learn":[0.6646532527],"iteration":328,"passed_time":11.60790333,"remaining_time":58.95685857,"test":[0.6711213497]}, -{"learn":[0.6646306438],"iteration":329,"passed_time":11.63787346,"remaining_time":58.89469298,"test":[0.6711231641]}, -{"learn":[0.6646098516],"iteration":330,"passed_time":11.66805718,"remaining_time":58.83379887,"test":[0.6711049215]}, -{"learn":[0.6645858284],"iteration":331,"passed_time":11.70070223,"remaining_time":58.78545579,"test":[0.6711031963]}, -{"learn":[0.6645707188],"iteration":332,"passed_time":11.724753,"remaining_time":58.69418391,"test":[0.6710996314]}, -{"learn":[0.6645485788],"iteration":333,"passed_time":11.75795297,"remaining_time":58.64895104,"test":[0.6710867309]}, -{"learn":[0.6645305696],"iteration":334,"passed_time":11.78053066,"remaining_time":58.55099567,"test":[0.6710914578]}, -{"learn":[0.6645108881],"iteration":335,"passed_time":11.81570271,"remaining_time":58.51586106,"test":[0.6710929585]}, -{"learn":[0.6644923286],"iteration":336,"passed_time":11.8448851,"remaining_time":58.45116888,"test":[0.6710984779]}, -{"learn":[0.6644805222],"iteration":337,"passed_time":11.86964023,"remaining_time":58.36491734,"test":[0.6710923199]}, -{"learn":[0.6644572776],"iteration":338,"passed_time":11.90591446,"remaining_time":58.33546879,"test":[0.6710893917]}, -{"learn":[0.6644320741],"iteration":339,"passed_time":11.94145444,"remaining_time":58.30239521,"test":[0.6710923306]}, -{"learn":[0.6644115048],"iteration":340,"passed_time":11.98658051,"remaining_time":58.31594449,"test":[0.6710927901]}, -{"learn":[0.6643949013],"iteration":341,"passed_time":12.02038848,"remaining_time":58.27428098,"test":[0.6711092802]}, -{"learn":[0.6643619789],"iteration":342,"passed_time":12.06653941,"remaining_time":58.29229096,"test":[0.6711012995]}, -{"learn":[0.6643389502],"iteration":343,"passed_time":12.12283646,"remaining_time":58.35877087,"test":[0.6711015305]}, -{"learn":[0.6643088915],"iteration":344,"passed_time":12.17733618,"remaining_time":58.41591705,"test":[0.6710975574]}, -{"learn":[0.664286972],"iteration":345,"passed_time":12.22133732,"remaining_time":58.42223099,"test":[0.6710899474]}, -{"learn":[0.664274149],"iteration":346,"passed_time":12.2642467,"remaining_time":58.42305415,"test":[0.671085152]}, -{"learn":[0.6642536926],"iteration":347,"passed_time":12.30091895,"remaining_time":58.39401755,"test":[0.6710814533]}, -{"learn":[0.6642357634],"iteration":348,"passed_time":12.32484094,"remaining_time":58.30462002,"test":[0.6710701892]}, -{"learn":[0.664207914],"iteration":349,"passed_time":12.35469303,"remaining_time":58.24355287,"test":[0.67105503]}, -{"learn":[0.6641853097],"iteration":350,"passed_time":12.40148755,"remaining_time":58.26225919,"test":[0.6710527861]}, -{"learn":[0.6641654917],"iteration":351,"passed_time":12.43803877,"remaining_time":58.23263605,"test":[0.6710508715]}, -{"learn":[0.664143804],"iteration":352,"passed_time":12.47995438,"remaining_time":58.22800245,"test":[0.6710560803]}, -{"learn":[0.6641290647],"iteration":353,"passed_time":12.51241326,"remaining_time":58.17918707,"test":[0.6710465693]}, -{"learn":[0.6641117244],"iteration":354,"passed_time":12.5417829,"remaining_time":58.11614893,"test":[0.6710440741]}, -{"learn":[0.6640880219],"iteration":355,"passed_time":12.5692936,"remaining_time":58.0447154,"test":[0.6710496913]}, -{"learn":[0.6640669415],"iteration":356,"passed_time":12.5976392,"remaining_time":57.97737034,"test":[0.6710404659]}, -{"learn":[0.6640462999],"iteration":357,"passed_time":12.62815847,"remaining_time":57.92021287,"test":[0.6710293986]}, -{"learn":[0.664030296],"iteration":358,"passed_time":12.65342509,"remaining_time":57.8391938,"test":[0.6710353817]}, -{"learn":[0.6640028542],"iteration":359,"passed_time":12.68233453,"remaining_time":57.77507954,"test":[0.6710271815]}, -{"learn":[0.6639813347],"iteration":360,"passed_time":12.72037964,"remaining_time":57.75263774,"test":[0.6710288077]}, -{"learn":[0.6639597941],"iteration":361,"passed_time":12.744473,"remaining_time":57.66698004,"test":[0.6710169894]}, -{"learn":[0.6639429832],"iteration":362,"passed_time":12.77086568,"remaining_time":57.59203063,"test":[0.6710119848]}, -{"learn":[0.6639222708],"iteration":363,"passed_time":12.81194554,"remaining_time":57.58335961,"test":[0.6710114775]}, -{"learn":[0.6639065546],"iteration":364,"passed_time":12.84133287,"remaining_time":57.52213492,"test":[0.6710013614]}, -{"learn":[0.6638823236],"iteration":365,"passed_time":12.87057337,"remaining_time":57.46042866,"test":[0.6709985657]}, -{"learn":[0.6638648195],"iteration":366,"passed_time":12.8971183,"remaining_time":57.38690512,"test":[0.6709948954]}, -{"learn":[0.6638436235],"iteration":367,"passed_time":12.93825161,"remaining_time":57.37833324,"test":[0.6709970591]}, -{"learn":[0.6638208732],"iteration":368,"passed_time":12.97444296,"remaining_time":57.3477411,"test":[0.6709739289]}, -{"learn":[0.6637956357],"iteration":369,"passed_time":13.00974924,"remaining_time":57.31321963,"test":[0.6709754911]}, -{"learn":[0.6637718453],"iteration":370,"passed_time":13.03832239,"remaining_time":57.24912984,"test":[0.6709717066]}, -{"learn":[0.663756918],"iteration":371,"passed_time":13.07843077,"remaining_time":57.23571316,"test":[0.67096845]}, -{"learn":[0.6637353525],"iteration":372,"passed_time":13.11729124,"remaining_time":57.21671005,"test":[0.6709739445]}, -{"learn":[0.6637143112],"iteration":373,"passed_time":13.14745329,"remaining_time":57.15978354,"test":[0.6709728881]}, -{"learn":[0.6636956547],"iteration":374,"passed_time":13.18118022,"remaining_time":57.11844761,"test":[0.6709694284]}, -{"learn":[0.663680995],"iteration":375,"passed_time":13.20539229,"remaining_time":57.03605604,"test":[0.6709604166]}, -{"learn":[0.66366728],"iteration":376,"passed_time":13.23563977,"remaining_time":56.97995583,"test":[0.6709605025]}, -{"learn":[0.6636487567],"iteration":377,"passed_time":13.27428255,"remaining_time":56.96001665,"test":[0.6709603727]}, -{"learn":[0.6636266904],"iteration":378,"passed_time":13.30625754,"remaining_time":56.91146033,"test":[0.670944339]}, -{"learn":[0.6636116064],"iteration":379,"passed_time":13.33327871,"remaining_time":56.84187241,"test":[0.6709447187]}, -{"learn":[0.6635902746],"iteration":380,"passed_time":13.36632239,"remaining_time":56.79809961,"test":[0.6709538679]}, -{"learn":[0.6635654896],"iteration":381,"passed_time":13.39639051,"remaining_time":56.74177969,"test":[0.6709640912]}, -{"learn":[0.6635393029],"iteration":382,"passed_time":13.42189438,"remaining_time":56.66632694,"test":[0.6709534847]}, -{"learn":[0.6635171734],"iteration":383,"passed_time":13.46730432,"remaining_time":56.6749057,"test":[0.6709471555]}, -{"learn":[0.663500789],"iteration":384,"passed_time":13.50832777,"remaining_time":56.66480351,"test":[0.6709506783]}, -{"learn":[0.663477743],"iteration":385,"passed_time":13.54029627,"remaining_time":56.61667921,"test":[0.6709546729]}, -{"learn":[0.6634584806],"iteration":386,"passed_time":13.56996301,"remaining_time":56.5590448,"test":[0.670930774]}, -{"learn":[0.6634337499],"iteration":387,"passed_time":13.59835745,"remaining_time":56.4962686,"test":[0.6709287322]}, -{"learn":[0.6634135584],"iteration":388,"passed_time":13.6279617,"remaining_time":56.43867943,"test":[0.6709198643]}, -{"learn":[0.6633868455],"iteration":389,"passed_time":13.65633448,"remaining_time":56.37615005,"test":[0.6709220389]}, -{"learn":[0.6633755323],"iteration":390,"passed_time":13.68565529,"remaining_time":56.31769658,"test":[0.6709230923]}, -{"learn":[0.663356103],"iteration":391,"passed_time":13.71789303,"remaining_time":56.27135714,"test":[0.670930414]}, -{"learn":[0.6633337631],"iteration":392,"passed_time":13.75060752,"remaining_time":56.2270389,"test":[0.6709354296]}, -{"learn":[0.663319422],"iteration":393,"passed_time":13.77167974,"remaining_time":56.13532403,"test":[0.6709351544]}, -{"learn":[0.6632911566],"iteration":394,"passed_time":13.80416242,"remaining_time":56.09033084,"test":[0.6709414935]}, -{"learn":[0.6632687875],"iteration":395,"passed_time":13.82525369,"remaining_time":55.9992599,"test":[0.6709445943]}, -{"learn":[0.6632431997],"iteration":396,"passed_time":13.85836516,"remaining_time":55.95707646,"test":[0.6709475685]}, -{"learn":[0.6632189331],"iteration":397,"passed_time":13.88898168,"remaining_time":55.90489613,"test":[0.6709533591]}, -{"learn":[0.663201035],"iteration":398,"passed_time":13.91726355,"remaining_time":55.84345598,"test":[0.6709592222]}, -{"learn":[0.6631898553],"iteration":399,"passed_time":13.95316828,"remaining_time":55.81267311,"test":[0.6709508704]}, -{"learn":[0.6631712482],"iteration":400,"passed_time":13.99418497,"remaining_time":55.80224881,"test":[0.6709479912]}, -{"learn":[0.663143025],"iteration":401,"passed_time":14.0253575,"remaining_time":55.75254052,"test":[0.6709417519]}, -{"learn":[0.663121538],"iteration":402,"passed_time":14.04844239,"remaining_time":55.67087467,"test":[0.6709476082]}, -{"learn":[0.6631087792],"iteration":403,"passed_time":14.0761289,"remaining_time":55.60767753,"test":[0.6709480979]}, -{"learn":[0.6630859067],"iteration":404,"passed_time":14.10555105,"remaining_time":55.55149118,"test":[0.6709448724]}, -{"learn":[0.663066483],"iteration":405,"passed_time":14.1427661,"remaining_time":55.52603242,"test":[0.6709421934]}, -{"learn":[0.6630443652],"iteration":406,"passed_time":14.18285552,"remaining_time":55.51176619,"test":[0.6709386261]}, -{"learn":[0.6630250376],"iteration":407,"passed_time":14.21458769,"remaining_time":55.46476372,"test":[0.6709461564]}, -{"learn":[0.6630007822],"iteration":408,"passed_time":14.24035708,"remaining_time":55.39464088,"test":[0.670934384]}, -{"learn":[0.6629768728],"iteration":409,"passed_time":14.26711915,"remaining_time":55.32858403,"test":[0.6709312987]}, -{"learn":[0.6629528093],"iteration":410,"passed_time":14.29943785,"remaining_time":55.28420133,"test":[0.670931806]}, -{"learn":[0.6629260936],"iteration":411,"passed_time":14.32489173,"remaining_time":55.21341763,"test":[0.6709286111]}, -{"learn":[0.6629102182],"iteration":412,"passed_time":14.35119075,"remaining_time":55.14610101,"test":[0.6709224729]}, -{"learn":[0.6628863488],"iteration":413,"passed_time":14.37946054,"remaining_time":55.08653242,"test":[0.6709236504]}, -{"learn":[0.6628648972],"iteration":414,"passed_time":14.41005914,"remaining_time":55.03600899,"test":[0.6709245901]}, -{"learn":[0.6628454339],"iteration":415,"passed_time":14.45103793,"remaining_time":55.02510598,"test":[0.6709463437]}, -{"learn":[0.6628200274],"iteration":416,"passed_time":14.48428995,"remaining_time":54.98472661,"test":[0.6709567049]}, -{"learn":[0.6627942591],"iteration":417,"passed_time":14.5135184,"remaining_time":54.92915339,"test":[0.670945606]}, -{"learn":[0.6627744647],"iteration":418,"passed_time":14.53698524,"remaining_time":54.85196578,"test":[0.6709479298]}, -{"learn":[0.662765485],"iteration":419,"passed_time":14.56542473,"remaining_time":54.79374067,"test":[0.6709464351]}, -{"learn":[0.6627503257],"iteration":420,"passed_time":14.58728594,"remaining_time":54.71098455,"test":[0.6709414048]}, -{"learn":[0.6627323029],"iteration":421,"passed_time":14.61501375,"remaining_time":54.65045425,"test":[0.6709414427]}, -{"learn":[0.6627111509],"iteration":422,"passed_time":14.64231614,"remaining_time":54.58849302,"test":[0.6709296343]}, -{"learn":[0.6626785863],"iteration":423,"passed_time":14.66665432,"remaining_time":54.51567739,"test":[0.670924721]}, -{"learn":[0.6626576561],"iteration":424,"passed_time":14.69050441,"remaining_time":54.44128104,"test":[0.670906284]}, -{"learn":[0.6626363113],"iteration":425,"passed_time":14.71910475,"remaining_time":54.38467341,"test":[0.6708996826]}, -{"learn":[0.6626181065],"iteration":426,"passed_time":14.73941058,"remaining_time":54.2976413,"test":[0.6708987677]}, -{"learn":[0.66259794],"iteration":427,"passed_time":14.77242451,"remaining_time":54.25759657,"test":[0.670909526]}, -{"learn":[0.6625765658],"iteration":428,"passed_time":14.79088688,"remaining_time":54.1642967,"test":[0.6709033226]}, -{"learn":[0.6625526572],"iteration":429,"passed_time":14.82430966,"remaining_time":54.12596783,"test":[0.6708750209]}, -{"learn":[0.66253135],"iteration":430,"passed_time":14.84439175,"remaining_time":54.03909666,"test":[0.6708752079]}, -{"learn":[0.6625035695],"iteration":431,"passed_time":14.8764415,"remaining_time":53.99597284,"test":[0.6708776566]}, -{"learn":[0.662480212],"iteration":432,"passed_time":14.90666075,"remaining_time":53.94627573,"test":[0.6708736133]}, -{"learn":[0.6624611632],"iteration":433,"passed_time":14.93845927,"remaining_time":53.90236684,"test":[0.6708754298]}, -{"learn":[0.6624332625],"iteration":434,"passed_time":14.98024104,"remaining_time":53.89443041,"test":[0.6708751084]}, -{"learn":[0.6624120584],"iteration":435,"passed_time":15.00605075,"remaining_time":53.82904442,"test":[0.6708642042]}, -{"learn":[0.6623941719],"iteration":436,"passed_time":15.03384083,"remaining_time":53.77092268,"test":[0.6708610465]}, -{"learn":[0.6623766304],"iteration":437,"passed_time":15.05972545,"remaining_time":53.70614417,"test":[0.6708574768]}, -{"learn":[0.6623623329],"iteration":438,"passed_time":15.08505889,"remaining_time":53.63958297,"test":[0.6708557953]}, -{"learn":[0.6623442925],"iteration":439,"passed_time":15.11080547,"remaining_time":53.57467393,"test":[0.670871378]}, -{"learn":[0.6623212715],"iteration":440,"passed_time":15.13466304,"remaining_time":53.50326458,"test":[0.6708640187]}, -{"learn":[0.6623025941],"iteration":441,"passed_time":15.16037021,"remaining_time":53.43859001,"test":[0.6708700565]}, -{"learn":[0.6622749791],"iteration":442,"passed_time":15.18471062,"remaining_time":53.36928767,"test":[0.6708667534]}, -{"learn":[0.6622534499],"iteration":443,"passed_time":15.21140556,"remaining_time":53.30843931,"test":[0.6708675383]}, -{"learn":[0.6622305473],"iteration":444,"passed_time":15.23498219,"remaining_time":53.23684787,"test":[0.6708740175]}, -{"learn":[0.6622059333],"iteration":445,"passed_time":15.26647355,"remaining_time":53.19304911,"test":[0.6708774523]}, -{"learn":[0.6621871707],"iteration":446,"passed_time":15.28793136,"remaining_time":53.11444609,"test":[0.6708697231]}, -{"learn":[0.6621638454],"iteration":447,"passed_time":15.31613827,"remaining_time":53.05947899,"test":[0.6708614971]}, -{"learn":[0.6621511296],"iteration":448,"passed_time":15.33689091,"remaining_time":52.9788815,"test":[0.6708607946]}, -{"learn":[0.6621349978],"iteration":449,"passed_time":15.36674634,"remaining_time":52.92990406,"test":[0.6708740865]}, -{"learn":[0.6621120424],"iteration":450,"passed_time":15.393642,"remaining_time":52.87084582,"test":[0.6708729562]}, -{"learn":[0.6620958271],"iteration":451,"passed_time":15.42984657,"remaining_time":52.84381082,"test":[0.6708674017]}, -{"learn":[0.6620793528],"iteration":452,"passed_time":15.46956188,"remaining_time":52.82872456,"test":[0.6708693088]}, -{"learn":[0.6620572713],"iteration":453,"passed_time":15.49032259,"remaining_time":52.74898396,"test":[0.6708712037]}, -{"learn":[0.6620395025],"iteration":454,"passed_time":15.52379393,"remaining_time":52.71266289,"test":[0.6708703905]}, -{"learn":[0.6620188044],"iteration":455,"passed_time":15.55053135,"remaining_time":52.65355352,"test":[0.6708577595]}, -{"learn":[0.6620017347],"iteration":456,"passed_time":15.57735398,"remaining_time":52.59487352,"test":[0.6708493546]}, -{"learn":[0.6619811454],"iteration":457,"passed_time":15.60434803,"remaining_time":52.53690973,"test":[0.6708523777]}, -{"learn":[0.6619695569],"iteration":458,"passed_time":15.63056555,"remaining_time":52.47647387,"test":[0.6708454134]}, -{"learn":[0.661952377],"iteration":459,"passed_time":15.656355,"remaining_time":52.41475368,"test":[0.6708404483]}, -{"learn":[0.6619237442],"iteration":460,"passed_time":15.68232112,"remaining_time":52.35377918,"test":[0.6708274771]}, -{"learn":[0.6619089407],"iteration":461,"passed_time":15.71164945,"remaining_time":52.30414904,"test":[0.6708244992]}, -{"learn":[0.6618886168],"iteration":462,"passed_time":15.7361944,"remaining_time":52.23872743,"test":[0.6708344314]}, -{"learn":[0.6618831383],"iteration":463,"passed_time":15.76527735,"remaining_time":52.18850433,"test":[0.6708279081]}, -{"learn":[0.6618690774],"iteration":464,"passed_time":15.78652262,"remaining_time":52.11249942,"test":[0.6708258106]}, -{"learn":[0.661845878],"iteration":465,"passed_time":15.81756836,"remaining_time":52.06899113,"test":[0.6708049714]}, -{"learn":[0.6618290213],"iteration":466,"passed_time":15.83979966,"remaining_time":51.99660146,"test":[0.670810989]}, -{"learn":[0.6618050064],"iteration":467,"passed_time":15.87342473,"remaining_time":51.9617237,"test":[0.6708212237]}, -{"learn":[0.6617832833],"iteration":468,"passed_time":15.90381555,"remaining_time":51.9162934,"test":[0.6708221741]}, -{"learn":[0.6617652311],"iteration":469,"passed_time":15.93502938,"remaining_time":51.87360627,"test":[0.6708259658]}, -{"learn":[0.6617443144],"iteration":470,"passed_time":15.96919221,"remaining_time":51.84054117,"test":[0.6708159692]}, -{"learn":[0.6617202619],"iteration":471,"passed_time":15.99477329,"remaining_time":51.77968981,"test":[0.6708136212]}, -{"learn":[0.6617005831],"iteration":472,"passed_time":16.02279091,"remaining_time":51.72685354,"test":[0.6708224942]}, -{"learn":[0.6616824419],"iteration":473,"passed_time":16.04763422,"remaining_time":51.66390258,"test":[0.6708363084]}, -{"learn":[0.6616538226],"iteration":474,"passed_time":16.07374645,"remaining_time":51.60518598,"test":[0.670850875]}, -{"learn":[0.6616314155],"iteration":475,"passed_time":16.09993591,"remaining_time":51.54685363,"test":[0.6708527236]}, -{"learn":[0.6616127861],"iteration":476,"passed_time":16.12811357,"remaining_time":51.49500411,"test":[0.6708453401]}, -{"learn":[0.6616029072],"iteration":477,"passed_time":16.15264086,"remaining_time":51.43163051,"test":[0.6708413844]}, -{"learn":[0.6615843751],"iteration":478,"passed_time":16.17696751,"remaining_time":51.36778201,"test":[0.6708364569]}, -{"learn":[0.661563216],"iteration":479,"passed_time":16.20551145,"remaining_time":51.31745293,"test":[0.6708251774]}, -{"learn":[0.6615432257],"iteration":480,"passed_time":16.22860577,"remaining_time":51.2500045,"test":[0.6708154393]}, -{"learn":[0.6615263324],"iteration":481,"passed_time":16.25544093,"remaining_time":51.19452144,"test":[0.6708111613]}, -{"learn":[0.6615033259],"iteration":482,"passed_time":16.27729221,"remaining_time":51.12350369,"test":[0.6708102339]}, -{"learn":[0.661484293],"iteration":483,"passed_time":16.30502335,"remaining_time":51.07110619,"test":[0.6707929623]}, -{"learn":[0.6614678231],"iteration":484,"passed_time":16.32842702,"remaining_time":51.00529266,"test":[0.6707900226]}, -{"learn":[0.6614463024],"iteration":485,"passed_time":16.36272839,"remaining_time":50.97360242,"test":[0.6707832384]}, -{"learn":[0.6614155436],"iteration":486,"passed_time":16.39272506,"remaining_time":50.92852776,"test":[0.6707739118]}, -{"learn":[0.6613958945],"iteration":487,"passed_time":16.42636604,"remaining_time":50.89480625,"test":[0.6707737538]}, -{"learn":[0.661380611],"iteration":488,"passed_time":16.4597142,"remaining_time":50.86018027,"test":[0.6707730234]}, -{"learn":[0.6613677802],"iteration":489,"passed_time":16.48056007,"remaining_time":50.78703206,"test":[0.6707796291]}, -{"learn":[0.6613530086],"iteration":490,"passed_time":16.51091177,"remaining_time":50.74331132,"test":[0.670791408]}, -{"learn":[0.6613248211],"iteration":491,"passed_time":16.53097438,"remaining_time":50.66810846,"test":[0.6707944906]}, -{"learn":[0.6613059359],"iteration":492,"passed_time":16.56161402,"remaining_time":50.62546112,"test":[0.6707835635]}, -{"learn":[0.6612729965],"iteration":493,"passed_time":16.5854633,"remaining_time":50.56216139,"test":[0.6707908928]}, -{"learn":[0.6612624948],"iteration":494,"passed_time":16.61302735,"remaining_time":50.51031547,"test":[0.670796262]}, -{"learn":[0.6612401679],"iteration":495,"passed_time":16.63896978,"remaining_time":50.45365029,"test":[0.6707877825]}, -{"learn":[0.6612191637],"iteration":496,"passed_time":16.663707,"remaining_time":50.39346403,"test":[0.6707854132]}, -{"learn":[0.6611912219],"iteration":497,"passed_time":16.69040179,"remaining_time":50.33932428,"test":[0.6707756206]}, -{"learn":[0.6611773017],"iteration":498,"passed_time":16.71612789,"remaining_time":50.28238068,"test":[0.6707707899]}, -{"learn":[0.6611638216],"iteration":499,"passed_time":16.74072553,"remaining_time":50.2221766,"test":[0.6707704386]}, -{"learn":[0.6611450533],"iteration":500,"passed_time":16.77346538,"remaining_time":50.18647626,"test":[0.6707621465]}, -{"learn":[0.6611179111],"iteration":501,"passed_time":16.80230735,"remaining_time":50.13915621,"test":[0.6707661931]}, -{"learn":[0.6610959069],"iteration":502,"passed_time":16.83637769,"remaining_time":50.10747,"test":[0.6707651988]}, -{"learn":[0.6610728788],"iteration":503,"passed_time":16.87382128,"remaining_time":50.08578697,"test":[0.6707607827]}, -{"learn":[0.6610436668],"iteration":504,"passed_time":16.92151611,"remaining_time":50.09438927,"test":[0.670760242]}, -{"learn":[0.6610188976],"iteration":505,"passed_time":16.9898618,"remaining_time":50.16374216,"test":[0.6707506008]}, -{"learn":[0.6610030555],"iteration":506,"passed_time":17.03818668,"remaining_time":50.17359509,"test":[0.6707452886]}, -{"learn":[0.6609831174],"iteration":507,"passed_time":17.06933058,"remaining_time":50.13275833,"test":[0.6707355189]}, -{"learn":[0.6609586562],"iteration":508,"passed_time":17.1106164,"remaining_time":50.12166807,"test":[0.6707312551]}, -{"learn":[0.660935882],"iteration":509,"passed_time":17.14537899,"remaining_time":50.09140137,"test":[0.6707199485]}, -{"learn":[0.6609202024],"iteration":510,"passed_time":17.19066307,"remaining_time":50.09177556,"test":[0.6707131947]}, -{"learn":[0.6609011137],"iteration":511,"passed_time":17.21958034,"remaining_time":50.04440537,"test":[0.6707154112]}, -{"learn":[0.6608726737],"iteration":512,"passed_time":17.24756917,"remaining_time":49.99441591,"test":[0.6706982346]}, -{"learn":[0.6608608849],"iteration":513,"passed_time":17.27150822,"remaining_time":49.93280391,"test":[0.6706988941]}, -{"learn":[0.6608387256],"iteration":514,"passed_time":17.29800365,"remaining_time":49.87870957,"test":[0.6706989098]}, -{"learn":[0.6608136063],"iteration":515,"passed_time":17.34332283,"remaining_time":49.87885868,"test":[0.670693306]}, -{"learn":[0.6607946343],"iteration":516,"passed_time":17.37393636,"remaining_time":49.83664916,"test":[0.6706944515]}, -{"learn":[0.6607703935],"iteration":517,"passed_time":17.4173655,"remaining_time":49.83114994,"test":[0.6706899688]}, -{"learn":[0.6607509625],"iteration":518,"passed_time":17.46008645,"remaining_time":49.82348368,"test":[0.6706909374]}, -{"learn":[0.6607238109],"iteration":519,"passed_time":17.4906988,"remaining_time":49.78121967,"test":[0.6706855074]}, -{"learn":[0.6606999858],"iteration":520,"passed_time":17.5186435,"remaining_time":49.7314275,"test":[0.6706787779]}, -{"learn":[0.6606813873],"iteration":521,"passed_time":17.54613056,"remaining_time":49.6804233,"test":[0.6706737082]}, -{"learn":[0.6606610372],"iteration":522,"passed_time":17.57100039,"remaining_time":49.62211774,"test":[0.6706761225]}, -{"learn":[0.660638456],"iteration":523,"passed_time":17.60084283,"remaining_time":49.5779466,"test":[0.670685455]}, -{"learn":[0.6606156483],"iteration":524,"passed_time":17.62599925,"remaining_time":49.52066456,"test":[0.6706693855]}, -{"learn":[0.6605968623],"iteration":525,"passed_time":17.65519625,"remaining_time":49.47482751,"test":[0.6706647216]}, -{"learn":[0.6605735776],"iteration":526,"passed_time":17.67910836,"remaining_time":49.41428199,"test":[0.6706569188]}, -{"learn":[0.6605517294],"iteration":527,"passed_time":17.70744827,"remaining_time":49.36621942,"test":[0.6706549134]}, -{"learn":[0.6605309239],"iteration":528,"passed_time":17.72943083,"remaining_time":49.3005534,"test":[0.6706547978]}, -{"learn":[0.6605086434],"iteration":529,"passed_time":17.75830336,"remaining_time":49.25416215,"test":[0.6706564214]}, -{"learn":[0.6604803349],"iteration":530,"passed_time":17.78141858,"remaining_time":49.19190939,"test":[0.6706559196]}, -{"learn":[0.6604566326],"iteration":531,"passed_time":17.80870208,"remaining_time":49.14130574,"test":[0.6706515072]}, -{"learn":[0.6604430839],"iteration":532,"passed_time":17.82904188,"remaining_time":49.07167811,"test":[0.6706474616]}, -{"learn":[0.6604273738],"iteration":533,"passed_time":17.86246645,"remaining_time":49.03815696,"test":[0.6706424204]}, -{"learn":[0.6604048016],"iteration":534,"passed_time":17.90552779,"remaining_time":49.03102469,"test":[0.6706520008]}, -{"learn":[0.6603845173],"iteration":535,"passed_time":18.02843143,"remaining_time":49.24183511,"test":[0.6706448306]}, -{"learn":[0.6603669212],"iteration":536,"passed_time":18.07245966,"remaining_time":49.23651485,"test":[0.6706415789]}, -{"learn":[0.6603488983],"iteration":537,"passed_time":18.10631942,"remaining_time":49.20341819,"test":[0.6706305359]}, -{"learn":[0.6603176881],"iteration":538,"passed_time":18.13531438,"remaining_time":49.1571323,"test":[0.6706152774]}, -{"learn":[0.6602953862],"iteration":539,"passed_time":18.16575265,"remaining_time":49.11481272,"test":[0.670616585]}, -{"learn":[0.6602672025],"iteration":540,"passed_time":18.20025584,"remaining_time":49.08349958,"test":[0.6705963243]}, -{"learn":[0.6602568636],"iteration":541,"passed_time":18.22381751,"remaining_time":49.02274158,"test":[0.6706027368]}, -{"learn":[0.660235705],"iteration":542,"passed_time":18.25438575,"remaining_time":48.98092088,"test":[0.6706003522]}, -{"learn":[0.6602152295],"iteration":543,"passed_time":18.28070524,"remaining_time":48.9277699,"test":[0.6706044301]}, -{"learn":[0.6601897709],"iteration":544,"passed_time":18.30768805,"remaining_time":48.87648827,"test":[0.6706047241]}, -{"learn":[0.6601683731],"iteration":545,"passed_time":18.33807201,"remaining_time":48.83435294,"test":[0.6706038235]}, -{"learn":[0.6601472267],"iteration":546,"passed_time":18.36776304,"remaining_time":48.79041993,"test":[0.6706026913]}, -{"learn":[0.6601262337],"iteration":547,"passed_time":18.41134623,"remaining_time":48.78334803,"test":[0.6705845786]}, -{"learn":[0.6601119991],"iteration":548,"passed_time":18.44405381,"remaining_time":48.74739905,"test":[0.6705873967]}, -{"learn":[0.6600869973],"iteration":549,"passed_time":18.47010718,"remaining_time":48.69391893,"test":[0.6705755426]}, -{"learn":[0.6600667497],"iteration":550,"passed_time":18.5036553,"remaining_time":48.66024779,"test":[0.6705715731]}, -{"learn":[0.6600397508],"iteration":551,"passed_time":18.53164471,"remaining_time":48.61199556,"test":[0.6705757153]}, -{"learn":[0.660016863],"iteration":552,"passed_time":18.5577607,"remaining_time":48.55891452,"test":[0.6705516814]}, -{"learn":[0.6599933158],"iteration":553,"passed_time":18.58492994,"remaining_time":48.50867995,"test":[0.6705530864]}, -{"learn":[0.6599632649],"iteration":554,"passed_time":18.62562092,"remaining_time":48.49373376,"test":[0.6705552479]}, -{"learn":[0.6599446007],"iteration":555,"passed_time":18.65010209,"remaining_time":48.43659608,"test":[0.6705563336]}, -{"learn":[0.6599138126],"iteration":556,"passed_time":18.67796421,"remaining_time":48.38833458,"test":[0.6705718544]}, -{"learn":[0.6598965504],"iteration":557,"passed_time":18.70319381,"remaining_time":48.33334314,"test":[0.6705688384]}, -{"learn":[0.6598785723],"iteration":558,"passed_time":18.72995694,"remaining_time":48.28241136,"test":[0.6705641528]}, -{"learn":[0.659860838],"iteration":559,"passed_time":18.75657945,"remaining_time":48.23120429,"test":[0.6705628467]}, -{"learn":[0.6598408724],"iteration":560,"passed_time":18.78181322,"remaining_time":48.17652269,"test":[0.670558488]}, -{"learn":[0.6598244857],"iteration":561,"passed_time":18.80867415,"remaining_time":48.12610931,"test":[0.6705544404]}, -{"learn":[0.6598082469],"iteration":562,"passed_time":18.83488797,"remaining_time":48.0741279,"test":[0.6705617451]}, -{"learn":[0.6597851673],"iteration":563,"passed_time":18.86939449,"remaining_time":48.04335193,"test":[0.6705631717]}, -{"learn":[0.6597683521],"iteration":564,"passed_time":18.90235988,"remaining_time":48.00864854,"test":[0.6705636201]}, -{"learn":[0.6597479006],"iteration":565,"passed_time":18.93001053,"remaining_time":47.96048604,"test":[0.6705537522]}, -{"learn":[0.6597310938],"iteration":566,"passed_time":18.95858079,"remaining_time":47.91472006,"test":[0.670555083]}, -{"learn":[0.6597096581],"iteration":567,"passed_time":18.9833487,"remaining_time":47.85942842,"test":[0.6705524541]}, -{"learn":[0.6596862311],"iteration":568,"passed_time":19.0162481,"remaining_time":47.82469425,"test":[0.6705503132]}, -{"learn":[0.6596574779],"iteration":569,"passed_time":19.03781666,"remaining_time":47.76154004,"test":[0.6705354602]}, -{"learn":[0.6596385418],"iteration":570,"passed_time":19.0681355,"remaining_time":47.72043018,"test":[0.6705387012]}, -{"learn":[0.6596189903],"iteration":571,"passed_time":19.09073714,"remaining_time":47.66009201,"test":[0.6705411923]}, -{"learn":[0.65959275],"iteration":572,"passed_time":19.11146842,"remaining_time":47.59522765,"test":[0.6705390018]}, -{"learn":[0.6595730662],"iteration":573,"passed_time":19.141368,"remaining_time":47.55329403,"test":[0.6705354939]}, -{"learn":[0.6595566809],"iteration":574,"passed_time":19.16428373,"remaining_time":47.49409447,"test":[0.670531296]}, -{"learn":[0.6595365076],"iteration":575,"passed_time":19.19652276,"remaining_time":47.45807015,"test":[0.6705377163]}, -{"learn":[0.6595163446],"iteration":576,"passed_time":19.21727405,"remaining_time":47.39372785,"test":[0.6705248875]}, -{"learn":[0.6594816637],"iteration":577,"passed_time":19.24969594,"remaining_time":47.35824848,"test":[0.6705252902]}, -{"learn":[0.6594570142],"iteration":578,"passed_time":19.27445137,"remaining_time":47.30396442,"test":[0.6705181562]}, -{"learn":[0.6594353055],"iteration":579,"passed_time":19.29822455,"remaining_time":47.24737734,"test":[0.6705123446]}, -{"learn":[0.6594162362],"iteration":580,"passed_time":19.32403522,"remaining_time":47.19587948,"test":[0.6705128345]}, -{"learn":[0.659395036],"iteration":581,"passed_time":19.35739555,"remaining_time":47.16286408,"test":[0.6705173712]}, -{"learn":[0.6593798831],"iteration":582,"passed_time":19.39112791,"remaining_time":47.13075172,"test":[0.670541941]}, -{"learn":[0.6593556719],"iteration":583,"passed_time":19.42704318,"remaining_time":47.1039266,"test":[0.6705463243]}, -{"learn":[0.6593292627],"iteration":584,"passed_time":19.46022169,"remaining_time":47.07045077,"test":[0.6705513215]}, -{"learn":[0.6592976737],"iteration":585,"passed_time":19.48332075,"remaining_time":47.01265452,"test":[0.6705455889]}, -{"learn":[0.6592754841],"iteration":586,"passed_time":19.5115578,"remaining_time":46.9673444,"test":[0.6705408087]}, -{"learn":[0.6592510441],"iteration":587,"passed_time":19.54275193,"remaining_time":46.92919341,"test":[0.6705510193]}, -{"learn":[0.6592290326],"iteration":588,"passed_time":19.56411389,"remaining_time":46.86751222,"test":[0.6705456751]}, -{"learn":[0.6592097404],"iteration":589,"passed_time":19.59700884,"remaining_time":46.8335296,"test":[0.6705402427]}, -{"learn":[0.6591876204],"iteration":590,"passed_time":19.62169623,"remaining_time":46.77998306,"test":[0.6705443402]}, -{"learn":[0.6591705995],"iteration":591,"passed_time":19.64747626,"remaining_time":46.72913272,"test":[0.67054441]}, -{"learn":[0.6591456195],"iteration":592,"passed_time":19.67090184,"remaining_time":46.67278059,"test":[0.6705441955]}, -{"learn":[0.6591107122],"iteration":593,"passed_time":19.69910949,"remaining_time":46.62785848,"test":[0.6705319356]}, -{"learn":[0.6590819533],"iteration":594,"passed_time":19.72694709,"remaining_time":46.58211876,"test":[0.6705358843]}, -{"learn":[0.6590551327],"iteration":595,"passed_time":19.7530808,"remaining_time":46.53242523,"test":[0.6705334396]}, -{"learn":[0.6590373916],"iteration":596,"passed_time":19.77835609,"remaining_time":46.48079328,"test":[0.6705320462]}, -{"learn":[0.6590177149],"iteration":597,"passed_time":19.80378809,"remaining_time":46.4296169,"test":[0.6705332043]}, -{"learn":[0.6589946095],"iteration":598,"passed_time":19.83052585,"remaining_time":46.38158048,"test":[0.6705328363]}, -{"learn":[0.6589697628],"iteration":599,"passed_time":19.8579153,"remaining_time":46.33513569,"test":[0.6705315638]}, -{"learn":[0.6589442269],"iteration":600,"passed_time":19.89600309,"remaining_time":46.31365777,"test":[0.6705274435]}, -{"learn":[0.6589182437],"iteration":601,"passed_time":19.92518872,"remaining_time":46.27145155,"test":[0.670509808]}, -{"learn":[0.6588837179],"iteration":602,"passed_time":19.95754179,"remaining_time":46.23662666,"test":[0.6705077789]}, -{"learn":[0.6588674101],"iteration":603,"passed_time":19.99116426,"remaining_time":46.20474388,"test":[0.6705212132]}, -{"learn":[0.6588406916],"iteration":604,"passed_time":20.01900069,"remaining_time":46.15951398,"test":[0.6705098442]}, -{"learn":[0.6588149945],"iteration":605,"passed_time":20.04735837,"remaining_time":46.11554053,"test":[0.6705061509]}, -{"learn":[0.6587866031],"iteration":606,"passed_time":20.07232044,"remaining_time":46.06382599,"test":[0.6705003071]}, -{"learn":[0.6587636648],"iteration":607,"passed_time":20.09871086,"remaining_time":46.01546959,"test":[0.6705045031]}, -{"learn":[0.6587502469],"iteration":608,"passed_time":20.12348304,"remaining_time":45.96348917,"test":[0.6705083194]}, -{"learn":[0.6587292784],"iteration":609,"passed_time":20.14920752,"remaining_time":45.91376797,"test":[0.6705329997]}, -{"learn":[0.6587104112],"iteration":610,"passed_time":20.17662353,"remaining_time":45.86797068,"test":[0.6705269987]}, -{"learn":[0.6586953782],"iteration":611,"passed_time":20.20202219,"remaining_time":45.81765818,"test":[0.6705315607]}, -{"learn":[0.6586641191],"iteration":612,"passed_time":20.23050051,"remaining_time":45.77439512,"test":[0.6705142835]}, -{"learn":[0.6586450136],"iteration":613,"passed_time":20.25381994,"remaining_time":45.71953492,"test":[0.6705165015]}, -{"learn":[0.6586136263],"iteration":614,"passed_time":20.28518384,"remaining_time":45.68289369,"test":[0.6705001061]}, -{"learn":[0.6585862768],"iteration":615,"passed_time":20.3078175,"remaining_time":45.62665489,"test":[0.6705013916]}, -{"learn":[0.6585585235],"iteration":616,"passed_time":20.33878033,"remaining_time":45.5891948,"test":[0.6705037253]}, -{"learn":[0.6585371631],"iteration":617,"passed_time":20.36122842,"remaining_time":45.53271469,"test":[0.67049647]}, -{"learn":[0.6585092632],"iteration":618,"passed_time":20.3943397,"remaining_time":45.50013429,"test":[0.6705005632]}, -{"learn":[0.6584914317],"iteration":619,"passed_time":20.42384285,"remaining_time":45.45952119,"test":[0.6704957943]}, -{"learn":[0.6584662432],"iteration":620,"passed_time":20.45411533,"remaining_time":45.42065225,"test":[0.6704955333]}, -{"learn":[0.6584454668],"iteration":621,"passed_time":20.488223,"remaining_time":45.39030754,"test":[0.6704961207]}, -{"learn":[0.6584249408],"iteration":622,"passed_time":20.51043528,"remaining_time":45.33365872,"test":[0.6704921459]}, -{"learn":[0.6583931228],"iteration":623,"passed_time":20.54384208,"remaining_time":45.30180561,"test":[0.6704751713]}, -{"learn":[0.6583660767],"iteration":624,"passed_time":20.56912557,"remaining_time":45.25207624,"test":[0.6704753101]}, -{"learn":[0.658354264],"iteration":625,"passed_time":20.59414123,"remaining_time":45.20183714,"test":[0.6704620888]}, -{"learn":[0.6583253625],"iteration":626,"passed_time":20.61901142,"remaining_time":45.15135993,"test":[0.6704604282]}, -{"learn":[0.6582968632],"iteration":627,"passed_time":20.6468542,"remaining_time":45.10745855,"test":[0.6704663192]}, -{"learn":[0.6582687399],"iteration":628,"passed_time":20.67583093,"remaining_time":45.06607981,"test":[0.6704680085]}, -{"learn":[0.658242535],"iteration":629,"passed_time":20.7010198,"remaining_time":45.01650336,"test":[0.670453228]}, -{"learn":[0.6582199874],"iteration":630,"passed_time":20.72783977,"remaining_time":44.97054302,"test":[0.6704577785]}, -{"learn":[0.6581918101],"iteration":631,"passed_time":20.75222724,"remaining_time":44.91937795,"test":[0.67046675]}, -{"learn":[0.6581735218],"iteration":632,"passed_time":20.78264004,"remaining_time":44.88130954,"test":[0.6704731863]}, -{"learn":[0.6581445869],"iteration":633,"passed_time":20.80459182,"remaining_time":44.82503538,"test":[0.6704811116]}, -{"learn":[0.6581202427],"iteration":634,"passed_time":20.83717209,"remaining_time":44.79171637,"test":[0.6704839644]}, -{"learn":[0.6580977862],"iteration":635,"passed_time":20.86231353,"remaining_time":44.74244599,"test":[0.6704854798]}, -{"learn":[0.6580724179],"iteration":636,"passed_time":20.89269601,"remaining_time":44.70446572,"test":[0.6704835837]}, -{"learn":[0.6580426322],"iteration":637,"passed_time":20.93117347,"remaining_time":44.68379039,"test":[0.6704736198]}, -{"learn":[0.6580111256],"iteration":638,"passed_time":20.96066949,"remaining_time":44.64392985,"test":[0.6704640242]}, -{"learn":[0.6579834747],"iteration":639,"passed_time":20.9941179,"remaining_time":44.61250055,"test":[0.670465663]}, -{"learn":[0.6579541367],"iteration":640,"passed_time":21.0224519,"remaining_time":44.57022174,"test":[0.6704646829]}, -{"learn":[0.6579254503],"iteration":641,"passed_time":21.0522529,"remaining_time":44.53108946,"test":[0.6704600961]}, -{"learn":[0.657898555],"iteration":642,"passed_time":21.08260618,"remaining_time":44.49315178,"test":[0.6704643207]}, -{"learn":[0.6578676875],"iteration":643,"passed_time":21.10716702,"remaining_time":44.44304112,"test":[0.6704600533]}, -{"learn":[0.6578324163],"iteration":644,"passed_time":21.13594828,"remaining_time":44.40187584,"test":[0.6704614691]}, -{"learn":[0.6578062223],"iteration":645,"passed_time":21.1601277,"remaining_time":44.35110357,"test":[0.6704728212]}, -{"learn":[0.6577760631],"iteration":646,"passed_time":21.18552999,"remaining_time":44.30297075,"test":[0.6704758731]}, -{"learn":[0.6577483474],"iteration":647,"passed_time":21.21048648,"remaining_time":44.25397797,"test":[0.6704833026]}, -{"learn":[0.6577249642],"iteration":648,"passed_time":21.23686209,"remaining_time":44.20801337,"test":[0.6704767664]}, -{"learn":[0.6576974966],"iteration":649,"passed_time":21.26287585,"remaining_time":44.16135753,"test":[0.6704702727]}, -{"learn":[0.657675114],"iteration":650,"passed_time":21.28806218,"remaining_time":44.11305051,"test":[0.6704671372]}, -{"learn":[0.6576447891],"iteration":651,"passed_time":21.31506267,"remaining_time":44.06856515,"test":[0.6704699936]}, -{"learn":[0.6576102356],"iteration":652,"passed_time":21.3435081,"remaining_time":44.02711394,"test":[0.6704587989]}, -{"learn":[0.6575793887],"iteration":653,"passed_time":21.37776713,"remaining_time":43.99766753,"test":[0.6704637668]}, -{"learn":[0.6575543309],"iteration":654,"passed_time":21.40301154,"remaining_time":43.94969545,"test":[0.6704653717]}, -{"learn":[0.6575340787],"iteration":655,"passed_time":21.44023109,"remaining_time":43.92632711,"test":[0.6704598273]}, -{"learn":[0.6575061464],"iteration":656,"passed_time":21.4778965,"remaining_time":43.903828,"test":[0.6704522865]}, -{"learn":[0.657476113],"iteration":657,"passed_time":21.50245582,"remaining_time":43.85455275,"test":[0.6704558586]}, -{"learn":[0.6574447014],"iteration":658,"passed_time":21.53379663,"remaining_time":43.81915217,"test":[0.6704466331]}, -{"learn":[0.6574247361],"iteration":659,"passed_time":21.55955041,"remaining_time":43.77242053,"test":[0.6704405886]}, -{"learn":[0.6574034983],"iteration":660,"passed_time":21.58626671,"remaining_time":43.72770215,"test":[0.6704463767]}, -{"learn":[0.6573783832],"iteration":661,"passed_time":21.61183918,"remaining_time":43.68072633,"test":[0.6704475216]}, -{"learn":[0.657357694],"iteration":662,"passed_time":21.6373217,"remaining_time":43.63363366,"test":[0.6704572386]}, -{"learn":[0.6573411592],"iteration":663,"passed_time":21.66283476,"remaining_time":43.58666753,"test":[0.6704658153]}, -{"learn":[0.6573118559],"iteration":664,"passed_time":21.68841321,"remaining_time":43.5398972,"test":[0.6704600945]}, -{"learn":[0.6572819076],"iteration":665,"passed_time":21.71420973,"remaining_time":43.4936273,"test":[0.6704561998]}, -{"learn":[0.6572430097],"iteration":666,"passed_time":21.74213421,"remaining_time":43.45167151,"test":[0.6704535154]}, -{"learn":[0.6572160391],"iteration":667,"passed_time":21.77174463,"remaining_time":43.41311953,"test":[0.6704413781]}, -{"learn":[0.6571931413],"iteration":668,"passed_time":21.81895309,"remaining_time":43.40960622,"test":[0.6704450013]}, -{"learn":[0.6571737099],"iteration":669,"passed_time":21.84627583,"remaining_time":43.36648784,"test":[0.6704422199]}, -{"learn":[0.6571532872],"iteration":670,"passed_time":21.88834724,"remaining_time":43.35262814,"test":[0.67044342]}, -{"learn":[0.6571208939],"iteration":671,"passed_time":21.93403139,"remaining_time":43.34582395,"test":[0.6704415341]}, -{"learn":[0.6570887673],"iteration":672,"passed_time":21.9714274,"remaining_time":43.32256191,"test":[0.6704439539]}, -{"learn":[0.6570633692],"iteration":673,"passed_time":22.01942449,"remaining_time":43.32011406,"test":[0.6704498197]}, -{"learn":[0.6570454361],"iteration":674,"passed_time":22.05319867,"remaining_time":43.2896122,"test":[0.6704452194]}, -{"learn":[0.6570231031],"iteration":675,"passed_time":22.09079747,"remaining_time":43.26659149,"test":[0.6704366524]}, -{"learn":[0.6570052089],"iteration":676,"passed_time":22.14192346,"remaining_time":43.26996269,"test":[0.6704427124]}, -{"learn":[0.6569855794],"iteration":677,"passed_time":22.17624471,"remaining_time":43.24040635,"test":[0.6704395579]}, -{"learn":[0.6569579709],"iteration":678,"passed_time":22.213192,"remaining_time":43.21594497,"test":[0.6704401246]}, -{"learn":[0.6569333354],"iteration":679,"passed_time":22.23966403,"remaining_time":43.17111253,"test":[0.6704415621]}, -{"learn":[0.6569069617],"iteration":680,"passed_time":22.27051241,"remaining_time":43.13481039,"test":[0.6704341343]}, -{"learn":[0.6568931857],"iteration":681,"passed_time":22.29625075,"remaining_time":43.08864881,"test":[0.6704369615]}, -{"learn":[0.6568734532],"iteration":682,"passed_time":22.32160622,"remaining_time":43.04180877,"test":[0.6704357425]}, -{"learn":[0.6568435196],"iteration":683,"passed_time":22.35059872,"remaining_time":43.00202911,"test":[0.6704294622]}, -{"learn":[0.6568108038],"iteration":684,"passed_time":22.37956576,"remaining_time":42.96223208,"test":[0.6704289794]}, -{"learn":[0.6567811374],"iteration":685,"passed_time":22.41993338,"remaining_time":42.94430389,"test":[0.6704272409]}, -{"learn":[0.6567467284],"iteration":686,"passed_time":22.45285267,"remaining_time":42.91207504,"test":[0.6704101162]}, -{"learn":[0.6567172734],"iteration":687,"passed_time":22.4848431,"remaining_time":42.8780729,"test":[0.6704069439]}, -{"learn":[0.6566967606],"iteration":688,"passed_time":22.51193834,"remaining_time":42.83476221,"test":[0.6704100747]}, -{"learn":[0.6566720128],"iteration":689,"passed_time":22.53798671,"remaining_time":42.78951101,"test":[0.6704122261]}, -{"learn":[0.6566441608],"iteration":690,"passed_time":22.57108439,"remaining_time":42.75766928,"test":[0.6704137826]}, -{"learn":[0.6566172287],"iteration":691,"passed_time":22.59836588,"remaining_time":42.7148303,"test":[0.6704207952]}, -{"learn":[0.6565952549],"iteration":692,"passed_time":22.62447507,"remaining_time":42.66982528,"test":[0.6704154834]}, -{"learn":[0.6565702687],"iteration":693,"passed_time":22.65349415,"remaining_time":42.63035067,"test":[0.6704253514]}, -{"learn":[0.6565392213],"iteration":694,"passed_time":22.68028991,"remaining_time":42.58673141,"test":[0.6704155636]}, -{"learn":[0.6565157938],"iteration":695,"passed_time":22.70844406,"remaining_time":42.54570555,"test":[0.6704141298]}, -{"learn":[0.6564902789],"iteration":696,"passed_time":22.73944116,"remaining_time":42.51003133,"test":[0.6704207635]}, -{"learn":[0.6564644734],"iteration":697,"passed_time":22.7613976,"remaining_time":42.45750671,"test":[0.6704268341]}, -{"learn":[0.6564349549],"iteration":698,"passed_time":22.79216825,"remaining_time":42.42147482,"test":[0.6704243126]}, -{"learn":[0.6564046572],"iteration":699,"passed_time":22.8167121,"remaining_time":42.37389389,"test":[0.6704235165]}, -{"learn":[0.6563744107],"iteration":700,"passed_time":22.84507296,"remaining_time":42.33345189,"test":[0.6704257736]}, -{"learn":[0.6563525063],"iteration":701,"passed_time":22.87088832,"remaining_time":42.28833766,"test":[0.6704247758]}, -{"learn":[0.6563189867],"iteration":702,"passed_time":22.90238907,"remaining_time":42.25376759,"test":[0.6704331799]}, -{"learn":[0.6562939062],"iteration":703,"passed_time":22.94246813,"remaining_time":42.23499815,"test":[0.6704252722]}, -{"learn":[0.6562739297],"iteration":704,"passed_time":22.97441688,"remaining_time":42.20123385,"test":[0.6704146644]}, -{"learn":[0.656256438],"iteration":705,"passed_time":23.00262167,"remaining_time":42.16061253,"test":[0.6704164122]}, -{"learn":[0.6562366475],"iteration":706,"passed_time":23.033437,"remaining_time":42.12480062,"test":[0.6704118954]}, -{"learn":[0.6562073096],"iteration":707,"passed_time":23.0545813,"remaining_time":42.07135458,"test":[0.6704043129]}, -{"learn":[0.6561864222],"iteration":708,"passed_time":23.08699831,"remaining_time":42.03852584,"test":[0.6703978198]}, -{"learn":[0.6561578826],"iteration":709,"passed_time":23.11590694,"remaining_time":41.99932387,"test":[0.6703935976]}, -{"learn":[0.6561208567],"iteration":710,"passed_time":23.14362702,"remaining_time":41.9579961,"test":[0.6703839683]}, -{"learn":[0.6560924703],"iteration":711,"passed_time":23.16985155,"remaining_time":41.91400112,"test":[0.6703843723]}, -{"learn":[0.6560656907],"iteration":712,"passed_time":23.19510285,"remaining_time":41.86829925,"test":[0.6703879502]}, -{"learn":[0.6560362588],"iteration":713,"passed_time":23.23034771,"remaining_time":41.84065429,"test":[0.6703895978]}, -{"learn":[0.6560124527],"iteration":714,"passed_time":23.25923754,"remaining_time":41.80156678,"test":[0.6703894359]}, -{"learn":[0.6559875055],"iteration":715,"passed_time":23.28703452,"remaining_time":41.76054794,"test":[0.6703928777]}, -{"learn":[0.6559547281],"iteration":716,"passed_time":23.31161175,"remaining_time":41.71380457,"test":[0.6703933128]}, -{"learn":[0.6559230866],"iteration":717,"passed_time":23.34170355,"remaining_time":41.67696929,"test":[0.6703844355]}, -{"learn":[0.6558924823],"iteration":718,"passed_time":23.37263658,"remaining_time":41.64165155,"test":[0.6703825151]}, -{"learn":[0.6558676469],"iteration":719,"passed_time":23.40571088,"remaining_time":41.61015268,"test":[0.6703983542]}, -{"learn":[0.6558459277],"iteration":720,"passed_time":23.4389719,"remaining_time":41.57898067,"test":[0.670399556]}, -{"learn":[0.6558149638],"iteration":721,"passed_time":23.48304084,"remaining_time":41.56693379,"test":[0.6703931808]}, -{"learn":[0.6557812248],"iteration":722,"passed_time":23.50734531,"remaining_time":41.5198893,"test":[0.6703886918]}, -{"learn":[0.6557546502],"iteration":723,"passed_time":23.54055835,"remaining_time":41.48860836,"test":[0.6703847574]}, -{"learn":[0.6557274948],"iteration":724,"passed_time":23.56652491,"remaining_time":41.44457829,"test":[0.6703885941]}, -{"learn":[0.6557044723],"iteration":725,"passed_time":23.59580183,"remaining_time":41.40640708,"test":[0.6703788615]}, -{"learn":[0.6556751811],"iteration":726,"passed_time":23.62334313,"remaining_time":41.36522119,"test":[0.6703799906]}, -{"learn":[0.6556539158],"iteration":727,"passed_time":23.64879831,"remaining_time":41.32042782,"test":[0.6703774518]}, -{"learn":[0.6556182915],"iteration":728,"passed_time":23.67755213,"remaining_time":41.28143862,"test":[0.6703783496]}, -{"learn":[0.6555977079],"iteration":729,"passed_time":23.70012944,"remaining_time":41.23173204,"test":[0.6703648854]}, -{"learn":[0.6555667903],"iteration":730,"passed_time":23.72866102,"remaining_time":41.19243615,"test":[0.6703716654]}, -{"learn":[0.6555394075],"iteration":731,"passed_time":23.75226732,"remaining_time":41.14463793,"test":[0.6703550938]}, -{"learn":[0.6555122742],"iteration":732,"passed_time":23.7844108,"remaining_time":41.11166233,"test":[0.6703467057]}, -{"learn":[0.6554814941],"iteration":733,"passed_time":23.80747563,"remaining_time":41.06303017,"test":[0.6703484503]}, -{"learn":[0.6554517373],"iteration":734,"passed_time":23.84023587,"remaining_time":41.03115425,"test":[0.6703549183]}, -{"learn":[0.655429552],"iteration":735,"passed_time":23.87042124,"remaining_time":40.99485387,"test":[0.6703501504]}, -{"learn":[0.655396579],"iteration":736,"passed_time":23.9087808,"remaining_time":40.97257823,"test":[0.6703672622]}, -{"learn":[0.6553735864],"iteration":737,"passed_time":23.94161529,"remaining_time":40.94081097,"test":[0.6703560249]}, -{"learn":[0.6553472597],"iteration":738,"passed_time":23.97478791,"remaining_time":40.90961779,"test":[0.6703547155]}, -{"learn":[0.6553252832],"iteration":739,"passed_time":24.00628859,"remaining_time":40.87557247,"test":[0.6703593236]}, -{"learn":[0.6552971659],"iteration":740,"passed_time":24.03623034,"remaining_time":40.83888528,"test":[0.6703606827]}, -{"learn":[0.6552763852],"iteration":741,"passed_time":24.06404686,"remaining_time":40.79861313,"test":[0.6703511404]}, -{"learn":[0.6552488203],"iteration":742,"passed_time":24.09270947,"remaining_time":40.75980593,"test":[0.6703431646]}, -{"learn":[0.65521229],"iteration":743,"passed_time":24.12724624,"remaining_time":40.73094258,"test":[0.6703475116]}, -{"learn":[0.6551949744],"iteration":744,"passed_time":24.15397955,"remaining_time":40.68891857,"test":[0.6703483634]}, -{"learn":[0.6551673797],"iteration":745,"passed_time":24.17955779,"remaining_time":40.64499392,"test":[0.6703475713]}, -{"learn":[0.6551421856],"iteration":746,"passed_time":24.20715317,"remaining_time":40.60450191,"test":[0.670360457]}, -{"learn":[0.6551255516],"iteration":747,"passed_time":24.23336836,"remaining_time":40.5617342,"test":[0.6703664352]}, -{"learn":[0.6551019608],"iteration":748,"passed_time":24.2614437,"remaining_time":40.52211759,"test":[0.6703617612]}, -{"learn":[0.6550758728],"iteration":749,"passed_time":24.29512083,"remaining_time":40.49186805,"test":[0.6703669926]}, -{"learn":[0.655051966],"iteration":750,"passed_time":24.31839238,"remaining_time":40.44430371,"test":[0.6703670837]}, -{"learn":[0.6550351058],"iteration":751,"passed_time":24.34977118,"remaining_time":40.41025856,"test":[0.6703706628]}, -{"learn":[0.6549998756],"iteration":752,"passed_time":24.3762114,"remaining_time":40.36804198,"test":[0.670369618]}, -{"learn":[0.6549721212],"iteration":753,"passed_time":24.40831154,"remaining_time":40.3352204,"test":[0.6703692351]}, -{"learn":[0.6549401744],"iteration":754,"passed_time":24.44267281,"remaining_time":40.30612934,"test":[0.6703624433]}, -{"learn":[0.6549207325],"iteration":755,"passed_time":24.47460721,"remaining_time":40.27303091,"test":[0.6703686285]}, -{"learn":[0.6548900891],"iteration":756,"passed_time":24.50826603,"remaining_time":40.24276708,"test":[0.6703598432]}, -{"learn":[0.6548682731],"iteration":757,"passed_time":24.54826542,"remaining_time":40.22288345,"test":[0.6703618766]}, -{"learn":[0.6548418938],"iteration":758,"passed_time":24.57546587,"remaining_time":40.18201996,"test":[0.6703694148]}, -{"learn":[0.6548234717],"iteration":759,"passed_time":24.60502723,"remaining_time":40.14504442,"test":[0.6703683652]}, -{"learn":[0.6547996833],"iteration":760,"passed_time":24.63261096,"remaining_time":40.10486856,"test":[0.6703604855]}, -{"learn":[0.6547726174],"iteration":761,"passed_time":24.66001655,"remaining_time":40.06443634,"test":[0.6703758987]}, -{"learn":[0.6547509314],"iteration":762,"passed_time":24.68929907,"remaining_time":40.02708119,"test":[0.6703773302]}, -{"learn":[0.6547168175],"iteration":763,"passed_time":24.71425118,"remaining_time":39.98274144,"test":[0.6703641028]}, -{"learn":[0.6546907846],"iteration":764,"passed_time":24.74589169,"remaining_time":39.94924999,"test":[0.6703649602]}, -{"learn":[0.6546671611],"iteration":765,"passed_time":24.76625006,"remaining_time":39.89758822,"test":[0.6703567811]}, -{"learn":[0.6546475893],"iteration":766,"passed_time":24.79734832,"remaining_time":39.86327312,"test":[0.6703544688]}, -{"learn":[0.6546206223],"iteration":767,"passed_time":24.82531049,"remaining_time":39.82393558,"test":[0.6703611821]}, -{"learn":[0.6545874193],"iteration":768,"passed_time":24.85435247,"remaining_time":39.78635616,"test":[0.6703527821]}, -{"learn":[0.6545620629],"iteration":769,"passed_time":24.88095966,"remaining_time":39.74490958,"test":[0.6703523616]}, -{"learn":[0.6545346297],"iteration":770,"passed_time":24.90935211,"remaining_time":39.70634726,"test":[0.6703616298]}, -{"learn":[0.6545172316],"iteration":771,"passed_time":24.94098876,"remaining_time":39.67297175,"test":[0.6703603551]}, -{"learn":[0.6544943049],"iteration":772,"passed_time":24.97035098,"remaining_time":39.6359905,"test":[0.6703675655]}, -{"learn":[0.6544632323],"iteration":773,"passed_time":25.00434422,"remaining_time":39.60636436,"test":[0.6703582411]}, -{"learn":[0.6544384097],"iteration":774,"passed_time":25.03067441,"remaining_time":39.56461439,"test":[0.6703581437]}, -{"learn":[0.6544084745],"iteration":775,"passed_time":25.05692652,"remaining_time":39.522781,"test":[0.6703551885]}, -{"learn":[0.6543765257],"iteration":776,"passed_time":25.08660163,"remaining_time":39.48637554,"test":[0.6703608491]}, -{"learn":[0.6543536123],"iteration":777,"passed_time":25.10764591,"remaining_time":39.43643098,"test":[0.6703674554]}, -{"learn":[0.6543303593],"iteration":778,"passed_time":25.13940138,"remaining_time":39.40334928,"test":[0.6703679619]}, -{"learn":[0.6543005831],"iteration":779,"passed_time":25.15916899,"remaining_time":39.35152074,"test":[0.6703701757]}, -{"learn":[0.6542678123],"iteration":780,"passed_time":25.18841105,"remaining_time":39.31456219,"test":[0.6703603462]}, -{"learn":[0.6542439303],"iteration":781,"passed_time":25.21444083,"remaining_time":39.27262012,"test":[0.670359801]}, -{"learn":[0.6542100401],"iteration":782,"passed_time":25.24017824,"remaining_time":39.23026426,"test":[0.6703523669]}, -{"learn":[0.6541836178],"iteration":783,"passed_time":25.2660091,"remaining_time":39.18809574,"test":[0.6703365674]}, -{"learn":[0.654158129],"iteration":784,"passed_time":25.28891553,"remaining_time":39.1414425,"test":[0.6703486118]}, -{"learn":[0.6541343464],"iteration":785,"passed_time":25.31589904,"remaining_time":39.10114686,"test":[0.6703450011]}, -{"learn":[0.6541092921],"iteration":786,"passed_time":25.34123581,"remaining_time":39.05834694,"test":[0.6703473135]}, -{"learn":[0.6540812254],"iteration":787,"passed_time":25.36728606,"remaining_time":39.01668871,"test":[0.670350998]}, -{"learn":[0.654060259],"iteration":788,"passed_time":25.39177931,"remaining_time":38.97268028,"test":[0.6703417767]}, -{"learn":[0.6540467253],"iteration":789,"passed_time":25.41712461,"remaining_time":38.9300263,"test":[0.6703349821]}, -{"learn":[0.6540306837],"iteration":790,"passed_time":25.44804125,"remaining_time":38.89593157,"test":[0.6703457717]}, -{"learn":[0.6540103667],"iteration":791,"passed_time":25.48249341,"remaining_time":38.86723743,"test":[0.6703506266]}, -{"learn":[0.6539821302],"iteration":792,"passed_time":25.51450657,"remaining_time":38.83481643,"test":[0.6703596395]}, -{"learn":[0.6539577914],"iteration":793,"passed_time":25.54216564,"remaining_time":38.79578307,"test":[0.6703799895]}, -{"learn":[0.653923724],"iteration":794,"passed_time":25.56982738,"remaining_time":38.75678238,"test":[0.6703687687]}, -{"learn":[0.6539086888],"iteration":795,"passed_time":25.59539769,"remaining_time":38.71464675,"test":[0.6703780675]}, -{"learn":[0.6538798424],"iteration":796,"passed_time":25.61874122,"remaining_time":38.66919157,"test":[0.670374835]}, -{"learn":[0.6538566996],"iteration":797,"passed_time":25.64394874,"remaining_time":38.62659947,"test":[0.6703831387]}, -{"learn":[0.6538290752],"iteration":798,"passed_time":25.66776244,"remaining_time":38.58195581,"test":[0.670377656]}, -{"learn":[0.6538051255],"iteration":799,"passed_time":25.69593415,"remaining_time":38.54390122,"test":[0.6703689741]}, -{"learn":[0.6537917354],"iteration":800,"passed_time":25.71651353,"remaining_time":38.49450652,"test":[0.6703709756]}, -{"learn":[0.6537684302],"iteration":801,"passed_time":25.74304126,"remaining_time":38.45406912,"test":[0.6703737517]}, -{"learn":[0.6537402991],"iteration":802,"passed_time":25.77084871,"remaining_time":38.41557398,"test":[0.6703818964]}, -{"learn":[0.6537165427],"iteration":803,"passed_time":25.79028824,"remaining_time":38.36465763,"test":[0.6703812173]}, -{"learn":[0.6536853601],"iteration":804,"passed_time":25.82203653,"remaining_time":38.3320915,"test":[0.6703960068]}, -{"learn":[0.6536681479],"iteration":805,"passed_time":25.84395064,"remaining_time":38.28495914,"test":[0.6703976729]}, -{"learn":[0.6536409101],"iteration":806,"passed_time":25.87390688,"remaining_time":38.24977808,"test":[0.6704024604]}, -{"learn":[0.6536120189],"iteration":807,"passed_time":25.89606204,"remaining_time":38.20310143,"test":[0.6704085008]}, -{"learn":[0.6535912493],"iteration":808,"passed_time":25.92585483,"remaining_time":38.16772942,"test":[0.6704076633]}, -{"learn":[0.6535617421],"iteration":809,"passed_time":25.95539059,"remaining_time":38.13199358,"test":[0.6704111719]}, -{"learn":[0.6535315174],"iteration":810,"passed_time":25.98822968,"remaining_time":38.10111601,"test":[0.6704220803]}, -{"learn":[0.6534972927],"iteration":811,"passed_time":26.02835773,"remaining_time":38.08089777,"test":[0.6704265011]}, -{"learn":[0.6534818476],"iteration":812,"passed_time":26.0558565,"remaining_time":38.04219146,"test":[0.6704251162]}, -{"learn":[0.6534498323],"iteration":813,"passed_time":26.08151817,"remaining_time":38.00083606,"test":[0.6704375472]}, -{"learn":[0.6534305025],"iteration":814,"passed_time":26.10848988,"remaining_time":37.96142393,"test":[0.6704319336]}, -{"learn":[0.6534081059],"iteration":815,"passed_time":26.13143346,"remaining_time":37.91619757,"test":[0.670437614]}, -{"learn":[0.6533765804],"iteration":816,"passed_time":26.15923661,"remaining_time":37.87806231,"test":[0.6704554331]}, -{"learn":[0.6533441549],"iteration":817,"passed_time":26.18805523,"remaining_time":37.84141966,"test":[0.6704603317]}, -{"learn":[0.6533053405],"iteration":818,"passed_time":26.2140726,"remaining_time":37.8007567,"test":[0.6704548042]}, -{"learn":[0.6532838469],"iteration":819,"passed_time":26.24289367,"remaining_time":37.76416405,"test":[0.6704502654]}, -{"learn":[0.6532604302],"iteration":820,"passed_time":26.27260776,"remaining_time":37.72887277,"test":[0.6704512072]}, -{"learn":[0.6532364412],"iteration":821,"passed_time":26.29880394,"remaining_time":37.68855358,"test":[0.6704433481]}, -{"learn":[0.6532100089],"iteration":822,"passed_time":26.32785215,"remaining_time":37.65234749,"test":[0.6704095112]}, -{"learn":[0.6531782515],"iteration":823,"passed_time":26.35925682,"remaining_time":37.61952188,"test":[0.6704086019]}, -{"learn":[0.6531449701],"iteration":824,"passed_time":26.38596096,"remaining_time":37.580005,"test":[0.6703987131]}, -{"learn":[0.653115452],"iteration":825,"passed_time":26.40854839,"remaining_time":37.53466805,"test":[0.6704019708]}, -{"learn":[0.6530787602],"iteration":826,"passed_time":26.44419918,"remaining_time":37.50791492,"test":[0.6704046556]}, -{"learn":[0.653052397],"iteration":827,"passed_time":26.47784276,"remaining_time":37.47829917,"test":[0.6704091961]}, -{"learn":[0.6530313579],"iteration":828,"passed_time":26.51701028,"remaining_time":37.45647652,"test":[0.6704103204]}, -{"learn":[0.6530010363],"iteration":829,"passed_time":26.53963123,"remaining_time":37.41128739,"test":[0.6704074257]}, -{"learn":[0.6529752146],"iteration":830,"passed_time":26.57362226,"remaining_time":37.38214732,"test":[0.6704115335]}, -{"learn":[0.652954801],"iteration":831,"passed_time":26.59767057,"remaining_time":37.33903754,"test":[0.6704041275]}, -{"learn":[0.6529330351],"iteration":832,"passed_time":26.62378941,"remaining_time":37.29887425,"test":[0.6704004556]}, -{"learn":[0.6528993709],"iteration":833,"passed_time":26.65024746,"remaining_time":37.25921887,"test":[0.6704037097]}, -{"learn":[0.6528665883],"iteration":834,"passed_time":26.67774911,"remaining_time":37.22105115,"test":[0.6704035477]}, -{"learn":[0.6528413041],"iteration":835,"passed_time":26.70473813,"remaining_time":37.1821952,"test":[0.6704025281]}, -{"learn":[0.6528217161],"iteration":836,"passed_time":26.72833235,"remaining_time":37.13865056,"test":[0.6704024549]}, -{"learn":[0.6527978782],"iteration":837,"passed_time":26.76384162,"remaining_time":37.11167537,"test":[0.670405721]}, -{"learn":[0.6527789461],"iteration":838,"passed_time":26.79137369,"remaining_time":37.07364106,"test":[0.6703983189]}, -{"learn":[0.6527432001],"iteration":839,"passed_time":26.82295602,"remaining_time":37.04122498,"test":[0.6704035256]}, -{"learn":[0.6527139767],"iteration":840,"passed_time":26.87217031,"remaining_time":37.03310985,"test":[0.6704047613]}, -{"learn":[0.6526857244],"iteration":841,"passed_time":26.92488006,"remaining_time":37.0297044,"test":[0.6704139617]}, -{"learn":[0.652657086],"iteration":842,"passed_time":26.98258041,"remaining_time":37.03303147,"test":[0.6704066193]}, -{"learn":[0.6526355016],"iteration":843,"passed_time":27.05424841,"remaining_time":37.05534497,"test":[0.670402892]}, -{"learn":[0.6526054936],"iteration":844,"passed_time":27.09765154,"remaining_time":37.03880181,"test":[0.6704081961]}, -{"learn":[0.6525793707],"iteration":845,"passed_time":27.12038959,"remaining_time":36.99400661,"test":[0.6704029862]}, -{"learn":[0.6525584692],"iteration":846,"passed_time":27.14691224,"remaining_time":36.95441537,"test":[0.6704014281]}, -{"learn":[0.6525279747],"iteration":847,"passed_time":27.18096334,"remaining_time":36.92508227,"test":[0.6704036115]}, -{"learn":[0.6525038765],"iteration":848,"passed_time":27.20686017,"remaining_time":36.88468322,"test":[0.6704016777]}, -{"learn":[0.6524849104],"iteration":849,"passed_time":27.23465701,"remaining_time":36.8468889,"test":[0.6704085392]}, -{"learn":[0.6524610603],"iteration":850,"passed_time":27.26094834,"remaining_time":36.80708536,"test":[0.6704042952]}, -{"learn":[0.6524357337],"iteration":851,"passed_time":27.28945577,"remaining_time":36.77029957,"test":[0.670394789]}, -{"learn":[0.6524082286],"iteration":852,"passed_time":27.31865398,"remaining_time":36.73446203,"test":[0.6703885644]}, -{"learn":[0.65238051],"iteration":853,"passed_time":27.34791322,"remaining_time":36.69872195,"test":[0.6703946813]}, -{"learn":[0.6523557826],"iteration":854,"passed_time":27.3865535,"remaining_time":36.67555995,"test":[0.6704042137]}, -{"learn":[0.6523391233],"iteration":855,"passed_time":27.41370907,"remaining_time":36.63701306,"test":[0.6704077517]}, -{"learn":[0.652325347],"iteration":856,"passed_time":27.43905921,"remaining_time":36.5960848,"test":[0.6704118698]}, -{"learn":[0.6522924958],"iteration":857,"passed_time":27.47159295,"remaining_time":36.56475425,"test":[0.6704114259]}, -{"learn":[0.6522623584],"iteration":858,"passed_time":27.50124299,"remaining_time":36.52959052,"test":[0.6704157567]}, -{"learn":[0.6522343891],"iteration":859,"passed_time":27.53509105,"remaining_time":36.50000442,"test":[0.6703837005]}, -{"learn":[0.6522094424],"iteration":860,"passed_time":27.57211091,"remaining_time":36.47460432,"test":[0.6703829482]}, -{"learn":[0.6521841478],"iteration":861,"passed_time":27.59555719,"remaining_time":36.43125764,"test":[0.6703818491]}, -{"learn":[0.6521657946],"iteration":862,"passed_time":27.6272049,"remaining_time":36.39876242,"test":[0.6703826129]}, -{"learn":[0.6521304278],"iteration":863,"passed_time":27.65462267,"remaining_time":36.36070759,"test":[0.6703834487]}, -{"learn":[0.6521045712],"iteration":864,"passed_time":27.68321566,"remaining_time":36.3242194,"test":[0.6703868275]}, -{"learn":[0.6520753696],"iteration":865,"passed_time":27.71151671,"remaining_time":36.28736714,"test":[0.6703853357]}, -{"learn":[0.6520519528],"iteration":866,"passed_time":27.73884016,"remaining_time":36.2492571,"test":[0.670450644]}, -{"learn":[0.6520216555],"iteration":867,"passed_time":27.76583897,"remaining_time":36.21074851,"test":[0.6704556991]}, -{"learn":[0.6519926935],"iteration":868,"passed_time":27.79498714,"remaining_time":36.17506382,"test":[0.6704535742]}, -{"learn":[0.6519734186],"iteration":869,"passed_time":27.82082723,"remaining_time":36.13509744,"test":[0.6704495915]} -]} \ No newline at end of file diff --git a/ai-engine/catboost_info/learn/events.out.tfevents b/ai-engine/catboost_info/learn/events.out.tfevents deleted file mode 100644 index 844ee9a40276379a886eee6f5572dabecc40d164..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47720 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 a%OLhU8<^L|H}z$fN$mV9U^WN5CjLL2HS*p7 diff --git a/ai-engine/catboost_info/learn_error.tsv b/ai-engine/catboost_info/learn_error.tsv deleted file mode 100644 index e001e08..0000000 --- a/ai-engine/catboost_info/learn_error.tsv +++ /dev/null @@ -1,871 +0,0 @@ -iter Logloss -0 0.692389481 -1 0.6916338586 -2 0.6910159214 -3 0.6903417151 -4 0.6896961461 -5 0.6890979366 -6 0.6884946167 -7 0.6879503686 -8 0.6874528094 -9 0.6869036785 -10 0.6863761921 -11 0.6859038678 -12 0.685410175 -13 0.6849483392 -14 0.6845417792 -15 0.6841038875 -16 0.6836957422 -17 0.6832947461 -18 0.6829014105 -19 0.6825264546 -20 0.6822106577 -21 0.6818649349 -22 0.6815467855 -23 0.6812293319 -24 0.6808837443 -25 0.6805816494 -26 0.6803209634 -27 0.6800350862 -28 0.6797703947 -29 0.6794926675 -30 0.6792251865 -31 0.6789670166 -32 0.678722402 -33 0.678476935 -34 0.6782297335 -35 0.6780226701 -36 0.6778291026 -37 0.6776045324 -38 0.6773969079 -39 0.6771819602 -40 0.6769816736 -41 0.6767984027 -42 0.6766201184 -43 0.6764394377 -44 0.6762698797 -45 0.6760974263 -46 0.6759245179 -47 0.6757673909 -48 0.6756172628 -49 0.675474531 -50 0.6753286933 -51 0.6751900513 -52 0.6750574835 -53 0.6749329567 -54 0.6748033265 -55 0.6746797823 -56 0.674535525 -57 0.6744256514 -58 0.674310819 -59 0.6741967947 -60 0.6740879654 -61 0.6739772476 -62 0.67388281 -63 0.6737789726 -64 0.6736812332 -65 0.6735930009 -66 0.6734947116 -67 0.6733961481 -68 0.6732990195 -69 0.6732133575 -70 0.673111539 -71 0.6730080451 -72 0.6729157861 -73 0.6728347949 -74 0.6727640693 -75 0.6726808811 -76 0.6726029645 -77 0.6725356026 -78 0.6724606887 -79 0.6723849561 -80 0.6723050519 -81 0.6722508802 -82 0.6721773904 -83 0.6721007598 -84 0.6720353564 -85 0.6719790902 -86 0.6719140024 -87 0.6718573633 -88 0.671795602 -89 0.6717369134 -90 0.6716711079 -91 0.6716070843 -92 0.6715517232 -93 0.6714957378 -94 0.6714364567 -95 0.6713881758 -96 0.6713336502 -97 0.6712700267 -98 0.6712154424 -99 0.6711600413 -100 0.6711060533 -101 0.6710494943 -102 0.6709936897 -103 0.6709472183 -104 0.6708914508 -105 0.6708388195 -106 0.6707885854 -107 0.6707454167 -108 0.6706973013 -109 0.6706577031 -110 0.67061108 -111 0.6705625485 -112 0.6705146484 -113 0.6704704423 -114 0.6704155922 -115 0.6703687117 -116 0.6703324232 -117 0.6702884624 -118 0.670253478 -119 0.6702140804 -120 0.6701682529 -121 0.6701320588 -122 0.6700939824 -123 0.6700655902 -124 0.6700190743 -125 0.6699792296 -126 0.6699379404 -127 0.669895454 -128 0.6698563938 -129 0.6698215571 -130 0.6697857067 -131 0.6697449303 -132 0.6697052425 -133 0.6696695553 -134 0.6696269265 -135 0.6695969271 -136 0.6695489786 -137 0.6695173859 -138 0.6694811164 -139 0.6694477439 -140 0.6694082161 -141 0.6693679185 -142 0.6693341916 -143 0.6692933159 -144 0.6692619696 -145 0.6692229289 -146 0.6691840164 -147 0.6691581406 -148 0.6691177196 -149 0.6690851126 -150 0.6690518144 -151 0.6690149711 -152 0.668993877 -153 0.6689596579 -154 0.6689372651 -155 0.6689003045 -156 0.6688680182 -157 0.6688348164 -158 0.6687947046 -159 0.6687605251 -160 0.668726253 -161 0.6686862718 -162 0.668663478 -163 0.6686399521 -164 0.6686058279 -165 0.6685761282 -166 0.6685469327 -167 0.6685157003 -168 0.6684805143 -169 0.6684485765 -170 0.6684144429 -171 0.6683849752 -172 0.6683568537 -173 0.6683266628 -174 0.6682937842 -175 0.6682657097 -176 0.6682301443 -177 0.6681995916 -178 0.6681658267 -179 0.6681422687 -180 0.6681216601 -181 0.6680899019 -182 0.6680676394 -183 0.6680413672 -184 0.6680088406 -185 0.6679873982 -186 0.6679663544 -187 0.6679417375 -188 0.6679100197 -189 0.667881208 -190 0.6678475427 -191 0.6678310341 -192 0.6678060257 -193 0.6677789336 -194 0.6677478773 -195 0.6677212408 -196 0.667704316 -197 0.6676819639 -198 0.6676554448 -199 0.6676318346 -200 0.6676074705 -201 0.6675849784 -202 0.6675631744 -203 0.6675397619 -204 0.6675169086 -205 0.6674864762 -206 0.6674670714 -207 0.6674375599 -208 0.6674148457 -209 0.6673974446 -210 0.6673812139 -211 0.6673515687 -212 0.6673197956 -213 0.6672900754 -214 0.6672550009 -215 0.6672271563 -216 0.667204521 -217 0.667181968 -218 0.6671640023 -219 0.66714351 -220 0.6671167156 -221 0.6670915937 -222 0.6670595279 -223 0.667033994 -224 0.6670008246 -225 0.6669858319 -226 0.6669553964 -227 0.6669274683 -228 0.666896348 -229 0.6668698686 -230 0.6668513411 -231 0.6668309985 -232 0.6668058585 -233 0.6667845908 -234 0.6667582863 -235 0.6667332943 -236 0.6667070085 -237 0.6666907315 -238 0.6666633028 -239 0.6666406707 -240 0.6666134624 -241 0.6665850522 -242 0.6665631193 -243 0.6665412643 -244 0.6665168385 -245 0.6664904845 -246 0.6664678274 -247 0.6664539777 -248 0.6664334121 -249 0.6664121724 -250 0.666392034 -251 0.666366899 -252 0.6663414098 -253 0.6663157816 -254 0.6662989799 -255 0.6662696102 -256 0.6662479711 -257 0.6662231874 -258 0.6661947927 -259 0.6661669951 -260 0.6661426137 -261 0.6661216749 -262 0.6660983123 -263 0.6660803402 -264 0.6660617842 -265 0.6660443878 -266 0.6660176079 -267 0.6659967546 -268 0.6659751467 -269 0.6659539329 -270 0.6659263951 -271 0.6659038921 -272 0.6658767418 -273 0.6658510507 -274 0.6658210119 -275 0.6657963011 -276 0.6657748552 -277 0.6657490013 -278 0.665732402 -279 0.6657118786 -280 0.665684467 -281 0.6656584634 -282 0.6656309991 -283 0.6656073482 -284 0.6655890957 -285 0.6655665563 -286 0.6655452454 -287 0.6655255286 -288 0.6655053548 -289 0.6654893396 -290 0.6654648912 -291 0.6654442759 -292 0.6654173127 -293 0.6653914518 -294 0.6653648946 -295 0.665344141 -296 0.6653140817 -297 0.665295365 -298 0.6652787488 -299 0.6652502991 -300 0.665231168 -301 0.6652136682 -302 0.6651903001 -303 0.6651697153 -304 0.6651525958 -305 0.6651322685 -306 0.6651113828 -307 0.6650886807 -308 0.6650622251 -309 0.6650429987 -310 0.665015513 -311 0.6650019022 -312 0.664979951 -313 0.6649549638 -314 0.6649340455 -315 0.6649162445 -316 0.6649048119 -317 0.6648796463 -318 0.6648605481 -319 0.6648429084 -320 0.6648238121 -321 0.6647969527 -322 0.6647854723 -323 0.6647589304 -324 0.6647429024 -325 0.6647237508 -326 0.6647059396 -327 0.664686288 -328 0.6646532527 -329 0.6646306438 -330 0.6646098516 -331 0.6645858284 -332 0.6645707188 -333 0.6645485788 -334 0.6645305696 -335 0.6645108881 -336 0.6644923286 -337 0.6644805222 -338 0.6644572776 -339 0.6644320741 -340 0.6644115048 -341 0.6643949013 -342 0.6643619789 -343 0.6643389502 -344 0.6643088915 -345 0.664286972 -346 0.664274149 -347 0.6642536926 -348 0.6642357634 -349 0.664207914 -350 0.6641853097 -351 0.6641654917 -352 0.664143804 -353 0.6641290647 -354 0.6641117244 -355 0.6640880219 -356 0.6640669415 -357 0.6640462999 -358 0.664030296 -359 0.6640028542 -360 0.6639813347 -361 0.6639597941 -362 0.6639429832 -363 0.6639222708 -364 0.6639065546 -365 0.6638823236 -366 0.6638648195 -367 0.6638436235 -368 0.6638208732 -369 0.6637956357 -370 0.6637718453 -371 0.663756918 -372 0.6637353525 -373 0.6637143112 -374 0.6636956547 -375 0.663680995 -376 0.66366728 -377 0.6636487567 -378 0.6636266904 -379 0.6636116064 -380 0.6635902746 -381 0.6635654896 -382 0.6635393029 -383 0.6635171734 -384 0.663500789 -385 0.663477743 -386 0.6634584806 -387 0.6634337499 -388 0.6634135584 -389 0.6633868455 -390 0.6633755323 -391 0.663356103 -392 0.6633337631 -393 0.663319422 -394 0.6632911566 -395 0.6632687875 -396 0.6632431997 -397 0.6632189331 -398 0.663201035 -399 0.6631898553 -400 0.6631712482 -401 0.663143025 -402 0.663121538 -403 0.6631087792 -404 0.6630859067 -405 0.663066483 -406 0.6630443652 -407 0.6630250376 -408 0.6630007822 -409 0.6629768728 -410 0.6629528093 -411 0.6629260936 -412 0.6629102182 -413 0.6628863488 -414 0.6628648972 -415 0.6628454339 -416 0.6628200274 -417 0.6627942591 -418 0.6627744647 -419 0.662765485 -420 0.6627503257 -421 0.6627323029 -422 0.6627111509 -423 0.6626785863 -424 0.6626576561 -425 0.6626363113 -426 0.6626181065 -427 0.66259794 -428 0.6625765658 -429 0.6625526572 -430 0.66253135 -431 0.6625035695 -432 0.662480212 -433 0.6624611632 -434 0.6624332625 -435 0.6624120584 -436 0.6623941719 -437 0.6623766304 -438 0.6623623329 -439 0.6623442925 -440 0.6623212715 -441 0.6623025941 -442 0.6622749791 -443 0.6622534499 -444 0.6622305473 -445 0.6622059333 -446 0.6621871707 -447 0.6621638454 -448 0.6621511296 -449 0.6621349978 -450 0.6621120424 -451 0.6620958271 -452 0.6620793528 -453 0.6620572713 -454 0.6620395025 -455 0.6620188044 -456 0.6620017347 -457 0.6619811454 -458 0.6619695569 -459 0.661952377 -460 0.6619237442 -461 0.6619089407 -462 0.6618886168 -463 0.6618831383 -464 0.6618690774 -465 0.661845878 -466 0.6618290213 -467 0.6618050064 -468 0.6617832833 -469 0.6617652311 -470 0.6617443144 -471 0.6617202619 -472 0.6617005831 -473 0.6616824419 -474 0.6616538226 -475 0.6616314155 -476 0.6616127861 -477 0.6616029072 -478 0.6615843751 -479 0.661563216 -480 0.6615432257 -481 0.6615263324 -482 0.6615033259 -483 0.661484293 -484 0.6614678231 -485 0.6614463024 -486 0.6614155436 -487 0.6613958945 -488 0.661380611 -489 0.6613677802 -490 0.6613530086 -491 0.6613248211 -492 0.6613059359 -493 0.6612729965 -494 0.6612624948 -495 0.6612401679 -496 0.6612191637 -497 0.6611912219 -498 0.6611773017 -499 0.6611638216 -500 0.6611450533 -501 0.6611179111 -502 0.6610959069 -503 0.6610728788 -504 0.6610436668 -505 0.6610188976 -506 0.6610030555 -507 0.6609831174 -508 0.6609586562 -509 0.660935882 -510 0.6609202024 -511 0.6609011137 -512 0.6608726737 -513 0.6608608849 -514 0.6608387256 -515 0.6608136063 -516 0.6607946343 -517 0.6607703935 -518 0.6607509625 -519 0.6607238109 -520 0.6606999858 -521 0.6606813873 -522 0.6606610372 -523 0.660638456 -524 0.6606156483 -525 0.6605968623 -526 0.6605735776 -527 0.6605517294 -528 0.6605309239 -529 0.6605086434 -530 0.6604803349 -531 0.6604566326 -532 0.6604430839 -533 0.6604273738 -534 0.6604048016 -535 0.6603845173 -536 0.6603669212 -537 0.6603488983 -538 0.6603176881 -539 0.6602953862 -540 0.6602672025 -541 0.6602568636 -542 0.660235705 -543 0.6602152295 -544 0.6601897709 -545 0.6601683731 -546 0.6601472267 -547 0.6601262337 -548 0.6601119991 -549 0.6600869973 -550 0.6600667497 -551 0.6600397508 -552 0.660016863 -553 0.6599933158 -554 0.6599632649 -555 0.6599446007 -556 0.6599138126 -557 0.6598965504 -558 0.6598785723 -559 0.659860838 -560 0.6598408724 -561 0.6598244857 -562 0.6598082469 -563 0.6597851673 -564 0.6597683521 -565 0.6597479006 -566 0.6597310938 -567 0.6597096581 -568 0.6596862311 -569 0.6596574779 -570 0.6596385418 -571 0.6596189903 -572 0.65959275 -573 0.6595730662 -574 0.6595566809 -575 0.6595365076 -576 0.6595163446 -577 0.6594816637 -578 0.6594570142 -579 0.6594353055 -580 0.6594162362 -581 0.659395036 -582 0.6593798831 -583 0.6593556719 -584 0.6593292627 -585 0.6592976737 -586 0.6592754841 -587 0.6592510441 -588 0.6592290326 -589 0.6592097404 -590 0.6591876204 -591 0.6591705995 -592 0.6591456195 -593 0.6591107122 -594 0.6590819533 -595 0.6590551327 -596 0.6590373916 -597 0.6590177149 -598 0.6589946095 -599 0.6589697628 -600 0.6589442269 -601 0.6589182437 -602 0.6588837179 -603 0.6588674101 -604 0.6588406916 -605 0.6588149945 -606 0.6587866031 -607 0.6587636648 -608 0.6587502469 -609 0.6587292784 -610 0.6587104112 -611 0.6586953782 -612 0.6586641191 -613 0.6586450136 -614 0.6586136263 -615 0.6585862768 -616 0.6585585235 -617 0.6585371631 -618 0.6585092632 -619 0.6584914317 -620 0.6584662432 -621 0.6584454668 -622 0.6584249408 -623 0.6583931228 -624 0.6583660767 -625 0.658354264 -626 0.6583253625 -627 0.6582968632 -628 0.6582687399 -629 0.658242535 -630 0.6582199874 -631 0.6581918101 -632 0.6581735218 -633 0.6581445869 -634 0.6581202427 -635 0.6580977862 -636 0.6580724179 -637 0.6580426322 -638 0.6580111256 -639 0.6579834747 -640 0.6579541367 -641 0.6579254503 -642 0.657898555 -643 0.6578676875 -644 0.6578324163 -645 0.6578062223 -646 0.6577760631 -647 0.6577483474 -648 0.6577249642 -649 0.6576974966 -650 0.657675114 -651 0.6576447891 -652 0.6576102356 -653 0.6575793887 -654 0.6575543309 -655 0.6575340787 -656 0.6575061464 -657 0.657476113 -658 0.6574447014 -659 0.6574247361 -660 0.6574034983 -661 0.6573783832 -662 0.657357694 -663 0.6573411592 -664 0.6573118559 -665 0.6572819076 -666 0.6572430097 -667 0.6572160391 -668 0.6571931413 -669 0.6571737099 -670 0.6571532872 -671 0.6571208939 -672 0.6570887673 -673 0.6570633692 -674 0.6570454361 -675 0.6570231031 -676 0.6570052089 -677 0.6569855794 -678 0.6569579709 -679 0.6569333354 -680 0.6569069617 -681 0.6568931857 -682 0.6568734532 -683 0.6568435196 -684 0.6568108038 -685 0.6567811374 -686 0.6567467284 -687 0.6567172734 -688 0.6566967606 -689 0.6566720128 -690 0.6566441608 -691 0.6566172287 -692 0.6565952549 -693 0.6565702687 -694 0.6565392213 -695 0.6565157938 -696 0.6564902789 -697 0.6564644734 -698 0.6564349549 -699 0.6564046572 -700 0.6563744107 -701 0.6563525063 -702 0.6563189867 -703 0.6562939062 -704 0.6562739297 -705 0.656256438 -706 0.6562366475 -707 0.6562073096 -708 0.6561864222 -709 0.6561578826 -710 0.6561208567 -711 0.6560924703 -712 0.6560656907 -713 0.6560362588 -714 0.6560124527 -715 0.6559875055 -716 0.6559547281 -717 0.6559230866 -718 0.6558924823 -719 0.6558676469 -720 0.6558459277 -721 0.6558149638 -722 0.6557812248 -723 0.6557546502 -724 0.6557274948 -725 0.6557044723 -726 0.6556751811 -727 0.6556539158 -728 0.6556182915 -729 0.6555977079 -730 0.6555667903 -731 0.6555394075 -732 0.6555122742 -733 0.6554814941 -734 0.6554517373 -735 0.655429552 -736 0.655396579 -737 0.6553735864 -738 0.6553472597 -739 0.6553252832 -740 0.6552971659 -741 0.6552763852 -742 0.6552488203 -743 0.65521229 -744 0.6551949744 -745 0.6551673797 -746 0.6551421856 -747 0.6551255516 -748 0.6551019608 -749 0.6550758728 -750 0.655051966 -751 0.6550351058 -752 0.6549998756 -753 0.6549721212 -754 0.6549401744 -755 0.6549207325 -756 0.6548900891 -757 0.6548682731 -758 0.6548418938 -759 0.6548234717 -760 0.6547996833 -761 0.6547726174 -762 0.6547509314 -763 0.6547168175 -764 0.6546907846 -765 0.6546671611 -766 0.6546475893 -767 0.6546206223 -768 0.6545874193 -769 0.6545620629 -770 0.6545346297 -771 0.6545172316 -772 0.6544943049 -773 0.6544632323 -774 0.6544384097 -775 0.6544084745 -776 0.6543765257 -777 0.6543536123 -778 0.6543303593 -779 0.6543005831 -780 0.6542678123 -781 0.6542439303 -782 0.6542100401 -783 0.6541836178 -784 0.654158129 -785 0.6541343464 -786 0.6541092921 -787 0.6540812254 -788 0.654060259 -789 0.6540467253 -790 0.6540306837 -791 0.6540103667 -792 0.6539821302 -793 0.6539577914 -794 0.653923724 -795 0.6539086888 -796 0.6538798424 -797 0.6538566996 -798 0.6538290752 -799 0.6538051255 -800 0.6537917354 -801 0.6537684302 -802 0.6537402991 -803 0.6537165427 -804 0.6536853601 -805 0.6536681479 -806 0.6536409101 -807 0.6536120189 -808 0.6535912493 -809 0.6535617421 -810 0.6535315174 -811 0.6534972927 -812 0.6534818476 -813 0.6534498323 -814 0.6534305025 -815 0.6534081059 -816 0.6533765804 -817 0.6533441549 -818 0.6533053405 -819 0.6532838469 -820 0.6532604302 -821 0.6532364412 -822 0.6532100089 -823 0.6531782515 -824 0.6531449701 -825 0.653115452 -826 0.6530787602 -827 0.653052397 -828 0.6530313579 -829 0.6530010363 -830 0.6529752146 -831 0.652954801 -832 0.6529330351 -833 0.6528993709 -834 0.6528665883 -835 0.6528413041 -836 0.6528217161 -837 0.6527978782 -838 0.6527789461 -839 0.6527432001 -840 0.6527139767 -841 0.6526857244 -842 0.652657086 -843 0.6526355016 -844 0.6526054936 -845 0.6525793707 -846 0.6525584692 -847 0.6525279747 -848 0.6525038765 -849 0.6524849104 -850 0.6524610603 -851 0.6524357337 -852 0.6524082286 -853 0.65238051 -854 0.6523557826 -855 0.6523391233 -856 0.652325347 -857 0.6522924958 -858 0.6522623584 -859 0.6522343891 -860 0.6522094424 -861 0.6521841478 -862 0.6521657946 -863 0.6521304278 -864 0.6521045712 -865 0.6520753696 -866 0.6520519528 -867 0.6520216555 -868 0.6519926935 -869 0.6519734186 diff --git a/ai-engine/catboost_info/time_left.tsv b/ai-engine/catboost_info/time_left.tsv deleted file mode 100644 index effbfd2..0000000 --- a/ai-engine/catboost_info/time_left.tsv +++ /dev/null @@ -1,871 +0,0 @@ -iter Passed Remaining -0 46 93548 -1 83 83419 -2 132 88415 -3 162 81250 -4 196 78573 -5 230 76747 -6 269 76701 -7 319 79674 -8 364 80653 -9 411 81918 -10 456 82497 -11 491 81432 -12 522 79809 -13 555 78774 -14 595 78777 -15 630 78123 -16 662 77290 -17 700 77124 -18 730 76120 -19 764 75651 -20 804 75774 -21 835 75128 -22 886 76169 -23 920 75764 -24 960 75853 -25 989 75130 -26 1025 74941 -27 1060 74714 -28 1104 75079 -29 1141 74976 -30 1180 74975 -31 1213 74640 -32 1245 74260 -33 1287 74434 -34 1327 74528 -35 1376 75071 -36 1427 75741 -37 1468 75804 -38 1508 75857 -39 1549 75922 -40 1586 75781 -41 1621 75590 -42 1663 75705 -43 1701 75621 -44 1739 75591 -45 1776 75460 -46 1819 75616 -47 1869 76025 -48 1916 76288 -49 1953 76191 -50 1993 76197 -51 2038 76381 -52 2080 76420 -53 2158 77788 -54 2220 78529 -55 2286 79390 -56 2328 79372 -57 2367 79254 -58 2409 79257 -59 2444 79049 -60 2484 78985 -61 2521 78820 -62 2554 78528 -63 2593 78466 -64 2623 78111 -65 2660 77969 -66 2695 77776 -67 2725 77446 -68 2761 77291 -69 2791 76975 -70 2824 76739 -71 2861 76611 -72 2897 76476 -73 2935 76408 -74 3040 78027 -75 3097 78411 -76 3152 78741 -77 3216 79248 -78 3256 79195 -79 3305 79336 -80 3348 79320 -81 3381 79089 -82 3416 78911 -83 3480 79399 -84 3535 79649 -85 3581 79716 -86 3612 79428 -87 3644 79185 -88 3678 78975 -89 3712 78785 -90 3743 78531 -91 3775 78297 -92 3806 78047 -93 3837 77821 -94 3871 77629 -95 3913 77618 -96 3945 77403 -97 3989 77433 -98 4020 77204 -99 4053 77020 -100 4084 76789 -101 4116 76597 -102 4148 76401 -103 4176 76141 -104 4202 75845 -105 4232 75634 -106 4261 75390 -107 4290 75168 -108 4324 75018 -109 4351 74766 -110 4386 74648 -111 4424 74577 -112 4458 74455 -113 4497 74400 -114 4533 74307 -115 4564 74136 -116 4596 73981 -117 4628 73818 -118 4668 73786 -119 4692 73509 -120 4723 73354 -121 4756 73220 -122 4788 73065 -123 4815 72854 -124 4843 72647 -125 4875 72514 -126 4916 72515 -127 4952 72436 -128 4991 72397 -129 5028 72327 -130 5059 72180 -131 5096 72116 -132 5125 71946 -133 5156 71804 -134 5190 71704 -135 5221 71564 -136 5251 71407 -137 5274 71165 -138 5309 71084 -139 5344 71008 -140 5377 70902 -141 5416 70866 -142 5452 70803 -143 5490 70760 -144 5521 70641 -145 5553 70522 -146 5582 70365 -147 5611 70217 -148 5636 70026 -149 5673 69975 -150 5706 69874 -151 5738 69764 -152 5765 69605 -153 5795 69471 -154 5817 69246 -155 5853 69191 -156 5888 69122 -157 5924 69070 -158 5964 69061 -159 5996 68963 -160 6022 68789 -161 6050 68650 -162 6079 68510 -163 6108 68385 -164 6140 68292 -165 6169 68162 -166 6202 68074 -167 6231 67953 -168 6263 67858 -169 6295 67764 -170 6325 67656 -171 6356 67561 -172 6395 67545 -173 6437 67554 -174 6472 67495 -175 6503 67395 -176 6533 67291 -177 6562 67174 -178 6590 67049 -179 6624 66982 -180 6655 66882 -181 6687 66804 -182 6718 66703 -183 6751 66632 -184 6784 66559 -185 6810 66424 -186 6832 66246 -187 6867 66187 -188 6918 66294 -189 6969 66393 -190 7018 66470 -191 7074 66614 -192 7117 66635 -193 7191 66943 -194 7242 67036 -195 7282 67027 -196 7317 66967 -197 7351 66903 -198 7389 66879 -199 7432 66896 -200 7471 66869 -201 7506 66814 -202 7540 66752 -203 7568 66628 -204 7605 66596 -205 7638 66519 -206 7665 66397 -207 7700 66340 -208 7734 66276 -209 7766 66197 -210 7796 66106 -211 7831 66053 -212 7871 66037 -213 7910 66016 -214 7951 66014 -215 7989 65983 -216 8025 65946 -217 8058 65872 -218 8087 65768 -219 8112 65638 -220 8148 65594 -221 8197 65655 -222 8239 65655 -223 8268 65556 -224 8298 65466 -225 8327 65366 -226 8357 65278 -227 8384 65167 -228 8418 65103 -229 8453 65058 -230 8490 65020 -231 8523 64958 -232 8550 64848 -233 8575 64718 -234 8607 64648 -235 8635 64545 -236 8660 64426 -237 8691 64345 -238 8719 64250 -239 8746 64137 -240 8773 64038 -241 8803 63951 -242 8833 63873 -243 8862 63779 -244 8892 63698 -245 8932 63688 -246 8962 63611 -247 8991 63521 -248 9021 63442 -249 9051 63358 -250 9085 63306 -251 9110 63193 -252 9137 63093 -253 9174 63066 -254 9196 62935 -255 9238 62934 -256 9267 62855 -257 9297 62776 -258 9324 62681 -259 9357 62625 -260 9388 62552 -261 9427 62536 -262 9461 62491 -263 9496 62443 -264 9524 62356 -265 9553 62278 -266 9590 62247 -267 9620 62172 -268 9645 62071 -269 9682 62040 -270 9711 61962 -271 9739 61872 -272 9768 61797 -273 9804 61761 -274 9848 61777 -275 9886 61755 -276 9925 61740 -277 9965 61728 -278 9995 61656 -279 10022 61564 -280 10055 61516 -281 10080 61410 -282 10111 61344 -283 10147 61311 -284 10175 61230 -285 10202 61141 -286 10234 61084 -287 10264 61018 -288 10299 60977 -289 10323 60874 -290 10353 60804 -291 10394 60803 -292 10431 60773 -293 10471 60763 -294 10503 60707 -295 10534 60645 -296 10576 60646 -297 10612 60612 -298 10639 60525 -299 10668 60453 -300 10702 60411 -301 10729 60326 -302 10764 60290 -303 10801 60263 -304 10829 60182 -305 10857 60108 -306 10892 60067 -307 10930 60047 -308 10972 60045 -309 11002 59983 -310 11030 59902 -311 11058 59828 -312 11092 59788 -313 11117 59696 -314 11149 59641 -315 11187 59617 -316 11211 59525 -317 11243 59468 -318 11274 59413 -319 11304 59346 -320 11334 59287 -321 11362 59209 -322 11394 59158 -323 11436 59158 -324 11477 59153 -325 11513 59122 -326 11547 59081 -327 11572 58991 -328 11607 58956 -329 11637 58894 -330 11668 58833 -331 11700 58785 -332 11724 58694 -333 11757 58648 -334 11780 58550 -335 11815 58515 -336 11844 58451 -337 11869 58364 -338 11905 58335 -339 11941 58302 -340 11986 58315 -341 12020 58274 -342 12066 58292 -343 12122 58358 -344 12177 58415 -345 12221 58422 -346 12264 58423 -347 12300 58394 -348 12324 58304 -349 12354 58243 -350 12401 58262 -351 12438 58232 -352 12479 58228 -353 12512 58179 -354 12541 58116 -355 12569 58044 -356 12597 57977 -357 12628 57920 -358 12653 57839 -359 12682 57775 -360 12720 57752 -361 12744 57666 -362 12770 57592 -363 12811 57583 -364 12841 57522 -365 12870 57460 -366 12897 57386 -367 12938 57378 -368 12974 57347 -369 13009 57313 -370 13038 57249 -371 13078 57235 -372 13117 57216 -373 13147 57159 -374 13181 57118 -375 13205 57036 -376 13235 56979 -377 13274 56960 -378 13306 56911 -379 13333 56841 -380 13366 56798 -381 13396 56741 -382 13421 56666 -383 13467 56674 -384 13508 56664 -385 13540 56616 -386 13569 56559 -387 13598 56496 -388 13627 56438 -389 13656 56376 -390 13685 56317 -391 13717 56271 -392 13750 56227 -393 13771 56135 -394 13804 56090 -395 13825 55999 -396 13858 55957 -397 13888 55904 -398 13917 55843 -399 13953 55812 -400 13994 55802 -401 14025 55752 -402 14048 55670 -403 14076 55607 -404 14105 55551 -405 14142 55526 -406 14182 55511 -407 14214 55464 -408 14240 55394 -409 14267 55328 -410 14299 55284 -411 14324 55213 -412 14351 55146 -413 14379 55086 -414 14410 55036 -415 14451 55025 -416 14484 54984 -417 14513 54929 -418 14536 54851 -419 14565 54793 -420 14587 54710 -421 14615 54650 -422 14642 54588 -423 14666 54515 -424 14690 54441 -425 14719 54384 -426 14739 54297 -427 14772 54257 -428 14790 54164 -429 14824 54125 -430 14844 54039 -431 14876 53995 -432 14906 53946 -433 14938 53902 -434 14980 53894 -435 15006 53829 -436 15033 53770 -437 15059 53706 -438 15085 53639 -439 15110 53574 -440 15134 53503 -441 15160 53438 -442 15184 53369 -443 15211 53308 -444 15234 53236 -445 15266 53193 -446 15287 53114 -447 15316 53059 -448 15336 52978 -449 15366 52929 -450 15393 52870 -451 15429 52843 -452 15469 52828 -453 15490 52748 -454 15523 52712 -455 15550 52653 -456 15577 52594 -457 15604 52536 -458 15630 52476 -459 15656 52414 -460 15682 52353 -461 15711 52304 -462 15736 52238 -463 15765 52188 -464 15786 52112 -465 15817 52068 -466 15839 51996 -467 15873 51961 -468 15903 51916 -469 15935 51873 -470 15969 51840 -471 15994 51779 -472 16022 51726 -473 16047 51663 -474 16073 51605 -475 16099 51546 -476 16128 51495 -477 16152 51431 -478 16176 51367 -479 16205 51317 -480 16228 51250 -481 16255 51194 -482 16277 51123 -483 16305 51071 -484 16328 51005 -485 16362 50973 -486 16392 50928 -487 16426 50894 -488 16459 50860 -489 16480 50787 -490 16510 50743 -491 16530 50668 -492 16561 50625 -493 16585 50562 -494 16613 50510 -495 16638 50453 -496 16663 50393 -497 16690 50339 -498 16716 50282 -499 16740 50222 -500 16773 50186 -501 16802 50139 -502 16836 50107 -503 16873 50085 -504 16921 50094 -505 16989 50163 -506 17038 50173 -507 17069 50132 -508 17110 50121 -509 17145 50091 -510 17190 50091 -511 17219 50044 -512 17247 49994 -513 17271 49932 -514 17298 49878 -515 17343 49878 -516 17373 49836 -517 17417 49831 -518 17460 49823 -519 17490 49781 -520 17518 49731 -521 17546 49680 -522 17571 49622 -523 17600 49577 -524 17625 49520 -525 17655 49474 -526 17679 49414 -527 17707 49366 -528 17729 49300 -529 17758 49254 -530 17781 49191 -531 17808 49141 -532 17829 49071 -533 17862 49038 -534 17905 49031 -535 18028 49241 -536 18072 49236 -537 18106 49203 -538 18135 49157 -539 18165 49114 -540 18200 49083 -541 18223 49022 -542 18254 48980 -543 18280 48927 -544 18307 48876 -545 18338 48834 -546 18367 48790 -547 18411 48783 -548 18444 48747 -549 18470 48693 -550 18503 48660 -551 18531 48611 -552 18557 48558 -553 18584 48508 -554 18625 48493 -555 18650 48436 -556 18677 48388 -557 18703 48333 -558 18729 48282 -559 18756 48231 -560 18781 48176 -561 18808 48126 -562 18834 48074 -563 18869 48043 -564 18902 48008 -565 18930 47960 -566 18958 47914 -567 18983 47859 -568 19016 47824 -569 19037 47761 -570 19068 47720 -571 19090 47660 -572 19111 47595 -573 19141 47553 -574 19164 47494 -575 19196 47458 -576 19217 47393 -577 19249 47358 -578 19274 47303 -579 19298 47247 -580 19324 47195 -581 19357 47162 -582 19391 47130 -583 19427 47103 -584 19460 47070 -585 19483 47012 -586 19511 46967 -587 19542 46929 -588 19564 46867 -589 19597 46833 -590 19621 46779 -591 19647 46729 -592 19670 46672 -593 19699 46627 -594 19726 46582 -595 19753 46532 -596 19778 46480 -597 19803 46429 -598 19830 46381 -599 19857 46335 -600 19896 46313 -601 19925 46271 -602 19957 46236 -603 19991 46204 -604 20019 46159 -605 20047 46115 -606 20072 46063 -607 20098 46015 -608 20123 45963 -609 20149 45913 -610 20176 45867 -611 20202 45817 -612 20230 45774 -613 20253 45719 -614 20285 45682 -615 20307 45626 -616 20338 45589 -617 20361 45532 -618 20394 45500 -619 20423 45459 -620 20454 45420 -621 20488 45390 -622 20510 45333 -623 20543 45301 -624 20569 45252 -625 20594 45201 -626 20619 45151 -627 20646 45107 -628 20675 45066 -629 20701 45016 -630 20727 44970 -631 20752 44919 -632 20782 44881 -633 20804 44825 -634 20837 44791 -635 20862 44742 -636 20892 44704 -637 20931 44683 -638 20960 44643 -639 20994 44612 -640 21022 44570 -641 21052 44531 -642 21082 44493 -643 21107 44443 -644 21135 44401 -645 21160 44351 -646 21185 44302 -647 21210 44253 -648 21236 44208 -649 21262 44161 -650 21288 44113 -651 21315 44068 -652 21343 44027 -653 21377 43997 -654 21403 43949 -655 21440 43926 -656 21477 43903 -657 21502 43854 -658 21533 43819 -659 21559 43772 -660 21586 43727 -661 21611 43680 -662 21637 43633 -663 21662 43586 -664 21688 43539 -665 21714 43493 -666 21742 43451 -667 21771 43413 -668 21818 43409 -669 21846 43366 -670 21888 43352 -671 21934 43345 -672 21971 43322 -673 22019 43320 -674 22053 43289 -675 22090 43266 -676 22141 43269 -677 22176 43240 -678 22213 43215 -679 22239 43171 -680 22270 43134 -681 22296 43088 -682 22321 43041 -683 22350 43002 -684 22379 42962 -685 22419 42944 -686 22452 42912 -687 22484 42878 -688 22511 42834 -689 22537 42789 -690 22571 42757 -691 22598 42714 -692 22624 42669 -693 22653 42630 -694 22680 42586 -695 22708 42545 -696 22739 42510 -697 22761 42457 -698 22792 42421 -699 22816 42373 -700 22845 42333 -701 22870 42288 -702 22902 42253 -703 22942 42234 -704 22974 42201 -705 23002 42160 -706 23033 42124 -707 23054 42071 -708 23086 42038 -709 23115 41999 -710 23143 41957 -711 23169 41914 -712 23195 41868 -713 23230 41840 -714 23259 41801 -715 23287 41760 -716 23311 41713 -717 23341 41676 -718 23372 41641 -719 23405 41610 -720 23438 41578 -721 23483 41566 -722 23507 41519 -723 23540 41488 -724 23566 41444 -725 23595 41406 -726 23623 41365 -727 23648 41320 -728 23677 41281 -729 23700 41231 -730 23728 41192 -731 23752 41144 -732 23784 41111 -733 23807 41063 -734 23840 41031 -735 23870 40994 -736 23908 40972 -737 23941 40940 -738 23974 40909 -739 24006 40875 -740 24036 40838 -741 24064 40798 -742 24092 40759 -743 24127 40730 -744 24153 40688 -745 24179 40644 -746 24207 40604 -747 24233 40561 -748 24261 40522 -749 24295 40491 -750 24318 40444 -751 24349 40410 -752 24376 40368 -753 24408 40335 -754 24442 40306 -755 24474 40273 -756 24508 40242 -757 24548 40222 -758 24575 40182 -759 24605 40145 -760 24632 40104 -761 24660 40064 -762 24689 40027 -763 24714 39982 -764 24745 39949 -765 24766 39897 -766 24797 39863 -767 24825 39823 -768 24854 39786 -769 24880 39744 -770 24909 39706 -771 24940 39672 -772 24970 39635 -773 25004 39606 -774 25030 39564 -775 25056 39522 -776 25086 39486 -777 25107 39436 -778 25139 39403 -779 25159 39351 -780 25188 39314 -781 25214 39272 -782 25240 39230 -783 25266 39188 -784 25288 39141 -785 25315 39101 -786 25341 39058 -787 25367 39016 -788 25391 38972 -789 25417 38930 -790 25448 38895 -791 25482 38867 -792 25514 38834 -793 25542 38795 -794 25569 38756 -795 25595 38714 -796 25618 38669 -797 25643 38626 -798 25667 38581 -799 25695 38543 -800 25716 38494 -801 25743 38454 -802 25770 38415 -803 25790 38364 -804 25822 38332 -805 25843 38284 -806 25873 38249 -807 25896 38203 -808 25925 38167 -809 25955 38131 -810 25988 38101 -811 26028 38080 -812 26055 38042 -813 26081 38000 -814 26108 37961 -815 26131 37916 -816 26159 37878 -817 26188 37841 -818 26214 37800 -819 26242 37764 -820 26272 37728 -821 26298 37688 -822 26327 37652 -823 26359 37619 -824 26385 37580 -825 26408 37534 -826 26444 37507 -827 26477 37478 -828 26517 37456 -829 26539 37411 -830 26573 37382 -831 26597 37339 -832 26623 37298 -833 26650 37259 -834 26677 37221 -835 26704 37182 -836 26728 37138 -837 26763 37111 -838 26791 37073 -839 26822 37041 -840 26872 37033 -841 26924 37029 -842 26982 37033 -843 27054 37055 -844 27097 37038 -845 27120 36994 -846 27146 36954 -847 27180 36925 -848 27206 36884 -849 27234 36846 -850 27260 36807 -851 27289 36770 -852 27318 36734 -853 27347 36698 -854 27386 36675 -855 27413 36637 -856 27439 36596 -857 27471 36564 -858 27501 36529 -859 27535 36500 -860 27572 36474 -861 27595 36431 -862 27627 36398 -863 27654 36360 -864 27683 36324 -865 27711 36287 -866 27738 36249 -867 27765 36210 -868 27794 36175 -869 27820 36135 diff --git a/ai-engine/models/market_anchor.py b/ai-engine/models/market_anchor.py new file mode 100644 index 0000000..f700e15 --- /dev/null +++ b/ai-engine/models/market_anchor.py @@ -0,0 +1,87 @@ +"""Market-anchored calibration (V35) — pure functions, no I/O. + +WHY THIS EXISTS +--------------- +The model's invented per-market probabilities were *measured* to be badly +overconfident. Grading the engine's own stored predictions against actual +results: it says ~50% where reality is ~25%, ~67% where reality is ~37% +(calibration error / ECE on the order of 25-30%). That mis-calibration is the +direct cause of the false "value" picks and the negative realised ROI. + +The de-vigged market price, by contrast, is empirically near-perfectly +calibrated. Out-of-sample (correction fit on 2023-24, tested on 2025-26; +78k real-odds football matches) the de-vigged market's ECE was: + home 1.56% | draw 1.85% | away 1.49% | over2.5 1.79% | btts 1.38% +Adding one small, large-sample home-favourite correction cut MS-home ECE +from 1.56% -> 0.64%. + +So for the DISPLAYED probabilities we anchor to the de-vigged market and apply +only that one proven correction. ~20-40x more calibrated than the model's +numbers, and fully transparent. + +These functions are pure (stdlib only) so they can be unit-tested in isolation +without the DB or the heavy model stack. +""" + +from __future__ import annotations + +from typing import List, Optional, Tuple + + +def devig(odds: List[Optional[float]]) -> Optional[List[float]]: + """Vig-removed (fair) probabilities from a group of decimal odds. + + ``p_i = (1/odds_i) / Σ(1/odds_j)`` — normalising the raw implied + probabilities to sum to 1 removes the bookmaker margin. + + Returns ``None`` when ANY leg is missing or non-real (``<= 1.01``). That is + deliberate: a market with a missing/placeholder leg has no real price, and + the product rule is to never fabricate numbers for a match without odds. + """ + if not odds or any(o is None or float(o) <= 1.01 for o in odds): + return None + inv = [1.0 / float(o) for o in odds] + total = sum(inv) + if total <= 0.0: + return None + return [x / total for x in inv] + + +# Home-favourite correction: measured (actual home-win rate − de-vigged implied) +# by implied-home band, out-of-sample on real-odds matches. Big home favourites +# win a few points MORE than the de-vigged price implies; underdogs are roughly +# unbiased. Values are deliberately conservative — universal and shrunk toward 0 +# vs the raw tier-0 (soft-league) edge, because the bias is weaker in efficient +# top leagues. Applying these took MS-home OOS ECE 1.56% -> 0.64%. +_HOME_FAV_BANDS: Tuple[Tuple[float, float, float], ...] = ( + (0.45, 0.55, 0.010), + (0.55, 0.65, 0.018), + (0.65, 0.75, 0.028), + (0.75, 1.01, 0.034), +) + + +def home_favorite_delta(p_home: float) -> float: + """Additive correction to the de-vigged home-win probability. + + Zero below 0.45 (no measured bias for non-favourites).""" + for lo, hi, delta in _HOME_FAV_BANDS: + if lo <= p_home < hi: + return delta + return 0.0 + + +def apply_home_correction( + p1: float, px: float, p2: float +) -> Tuple[float, float, float]: + """Apply the home-favourite delta to a 3-way (1, X, 2) probability vector, + renormalising draw/away so the three still sum to 1.0.""" + delta = home_favorite_delta(p1) + if delta <= 0.0: + return p1, px, p2 + p1n = min(0.98, p1 + delta) + remaining = 1.0 - p1n + rest = px + p2 + if rest <= 0.0: + return p1n, px, p2 + return p1n, px / rest * remaining, p2 / rest * remaining diff --git a/ai-engine/pyright_errors.json b/ai-engine/pyright_errors.json deleted file mode 100644 index 8bb8ca618f3e65555f8182fc3bc7f5010f25900c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 495736 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 z the probs key it refers to, so the displayed + # confidence can be set to the EXISTING pick's now-calibrated probability. + _ANCHOR_PICK_KEY: Dict[str, Dict[str, str]] = { + "MS": {"1": "1", "X": "X", "0": "X", "2": "2"}, + "HT": {"1": "1", "X": "X", "0": "X", "2": "2"}, + "DC": {"1X": "1X", "X2": "X2", "12": "12", + "1-X": "1X", "X-2": "X2", "1-2": "12"}, + "OU15": {"Üst": "over", "Alt": "under", "Over": "over", "Under": "under"}, + "OU25": {"Üst": "over", "Alt": "under", "Over": "over", "Under": "under"}, + "OU35": {"Üst": "over", "Alt": "under", "Over": "over", "Under": "under"}, + "HT_OU05": {"Üst": "over", "Alt": "under", "Over": "over", "Under": "under"}, + "HT_OU15": {"Üst": "over", "Alt": "under", "Over": "over", "Under": "under"}, + "BTTS": {"KG Var": "yes", "KG Yok": "no", "Var": "yes", "Yok": "no", + "Yes": "yes", "No": "no"}, + "OE": {"Tek": "odd", "Çift": "even", "Odd": "odd", "Even": "even"}, + } + + def _set_board( + self, + market_board: Dict[str, Any], + market: str, + probs: Dict[str, float], + ) -> None: + """Overwrite one board entry's probs with calibrated values and refresh + its confidence to the EXISTING pick's now-calibrated probability. + + We recalibrate the NUMBERS, not the pick selection — showing the engine's + pick alongside its honest probability. Falls back to the most-likely + outcome only when the pick can't be mapped.""" + entry = market_board.get(market) + if not isinstance(entry, dict): + return + rounded = {k: round(float(v), 4) for k, v in probs.items()} + if not rounded: + return + entry["probs"] = rounded + pick = str(entry.get("pick") or "") + key = self._ANCHOR_PICK_KEY.get(market, {}).get(pick) + if key is None or key not in rounded: + key = max(rounded, key=rounded.get) + entry["confidence"] = round(rounded[key] * 100.0, 1) + entry["calibration_source"] = "market_anchor_v35" + + def _apply_market_anchor( + self, + market_board: Dict[str, Any], + data: MatchData, + ) -> Dict[str, Any]: + """Anchor DISPLAYED per-market probabilities to the de-vigged market + price (+ proven home-favourite correction for MS, and DC derived from + it for internal consistency). + + Only markets with REAL odds are rewritten — `devig` returns None for any + missing/placeholder leg, so no-odds markets are left untouched (and are + already dropped upstream per the product rule: never show fabricated + numbers for a match without odds). Toggle off with env MARKET_ANCHOR_CAL=0. + """ + if os.environ.get("MARKET_ANCHOR_CAL", "1") == "0": + return market_board + if not isinstance(market_board, dict) or not market_board: + return market_board + odds = getattr(data, "odds_data", None) or {} + + def real(key: str) -> Optional[float]: + val = self._real_market_odds(odds, key) + return val if val > 1.01 else None + + # MS (3-way) + home-favourite correction; DC derived from the same vector + ms = devig([real("ms_h"), real("ms_d"), real("ms_a")]) + if ms is not None: + p1, px, p2 = apply_home_correction(*ms) + if "MS" in market_board: + self._set_board(market_board, "MS", {"1": p1, "X": px, "2": p2}) + if "DC" in market_board: + self._set_board( + market_board, "DC", + {"1X": p1 + px, "X2": px + p2, "12": p1 + p2}, + ) + + # HT (3-way) + ht = devig([real("ht_h"), real("ht_d"), real("ht_a")]) + if ht is not None and "HT" in market_board: + self._set_board(market_board, "HT", {"1": ht[0], "X": ht[1], "2": ht[2]}) + + # 2-way markets + for mk, ko, ku, lo, lu in ( + ("OU15", "ou15_o", "ou15_u", "over", "under"), + ("OU25", "ou25_o", "ou25_u", "over", "under"), + ("OU35", "ou35_o", "ou35_u", "over", "under"), + ("BTTS", "btts_y", "btts_n", "yes", "no"), + ("OE", "oe_odd", "oe_even", "odd", "even"), + ("HT_OU05", "ht_ou05_o", "ht_ou05_u", "over", "under"), + ("HT_OU15", "ht_ou15_o", "ht_ou15_u", "over", "under"), + ): + if mk not in market_board: + continue + pair = devig([real(ko), real(ku)]) + if pair is not None: + self._set_board(market_board, mk, {lo: pair[0], lu: pair[1]}) + + return market_board + + def _anchored_prob_for( + self, + market_board: Dict[str, Any], + market: str, + pick: Any, + ) -> Optional[float]: + """Look up a pick's calibrated probability from the anchored board. + + Returns None unless the market was actually anchored (real odds) and the + pick maps to a known outcome — so no-odds picks are never touched.""" + entry = market_board.get(str(market or "")) + if not isinstance(entry, dict): + return None + if entry.get("calibration_source") != "market_anchor_v35": + return None + probs = entry.get("probs") or {} + key = self._ANCHOR_PICK_KEY.get(str(market or ""), {}).get(str(pick or "")) + if key is None or key not in probs: + return None + try: + return float(probs[key]) + except (TypeError, ValueError): + return None + + def _recalibrate_pick_display( + self, + obj: Optional[Dict[str, Any]], + market_board: Dict[str, Any], + ) -> None: + """Rewrite ONE pick object's displayed confidence/edge fields so they are + consistent with the calibrated (de-vigged market) probability. + + Fixes Güven Skoru (`calibrated_confidence`/`unified_score`), Güven Aralığı + (`confidence_interval` recentred on the calibrated confidence), and the + value card's Model%/Teorik-avantaj (`model_probability`/`ev_edge`/`edge`, + recomputed honestly against the real price → the vig shows as it truly is, + no fabricated positive edge). Selection/gates/stake are left untouched.""" + if not isinstance(obj, dict): + return + p = self._anchored_prob_for(market_board, obj.get("market"), obj.get("pick")) + if p is None: + return + try: + odds = float(obj.get("odds") or 0.0) + except (TypeError, ValueError): + odds = 0.0 + implied = (1.0 / odds) if odds > 1.0 else 0.0 + conf = round(p * 100.0, 1) + ev = round(p * odds - 1.0, 4) if odds > 1.0 else 0.0 + obj["calibrated_probability"] = round(p, 4) + obj["model_probability"] = round(p, 4) + obj["calibrated_confidence"] = conf + obj["unified_score"] = conf + obj["implied_prob"] = round(implied, 4) + obj["model_edge"] = round(p - implied, 4) if implied > 0.0 else 0.0 + obj["ev_edge"] = ev + obj["edge"] = ev + # Recentre the confidence interval on the calibrated confidence, keeping a + # sensible width (preserve the engine's width when present). + width = 16.0 + ci = obj.get("confidence_interval") + if isinstance(ci, dict) and ci.get("lower") is not None and ci.get("upper") is not None: + try: + width = max(6.0, float(ci["upper"]) - float(ci["lower"])) + except (TypeError, ValueError): + width = 16.0 + half = width / 2.0 + lower = round(max(0.0, conf - half), 1) + upper = round(min(100.0, conf + half), 1) + band = "HIGH" if conf >= 60.0 else "MEDIUM" if conf >= 42.0 else "LOW" + obj["confidence_interval"] = { + "band": band, + "lower": lower, + "upper": upper, + "width": round(upper - lower, 1), + "threshold_met": conf >= 50.0, + } + obj["confidence_band"] = band + obj["calibration_source"] = "market_anchor_v35" + + def _apply_anchor_to_picks( + self, + market_board: Dict[str, Any], + main_pick: Optional[Dict[str, Any]], + value_pick: Optional[Dict[str, Any]], + aggressive_pick: Optional[Dict[str, Any]], + supporting: Optional[List[Dict[str, Any]]], + bet_summary: Optional[List[Dict[str, Any]]], + ) -> None: + """Make every DISPLAYED pick object consistent with the anchored board. + Toggle off with env MARKET_ANCHOR_CAL=0.""" + if os.environ.get("MARKET_ANCHOR_CAL", "1") == "0": + return + for obj in (main_pick, value_pick, aggressive_pick): + self._recalibrate_pick_display(obj, market_board) + for obj in list(supporting or []): + self._recalibrate_pick_display(obj, market_board) + for obj in list(bet_summary or []): + self._recalibrate_pick_display(obj, market_board) + def _build_market_rows( self, data: MatchData, diff --git a/ai-engine/tests/test_market_anchor.py b/ai-engine/tests/test_market_anchor.py new file mode 100644 index 0000000..c79a9ea --- /dev/null +++ b/ai-engine/tests/test_market_anchor.py @@ -0,0 +1,59 @@ +"""Unit tests for V35 market-anchored calibration (pure, no DB/model deps).""" + +import os +import sys + +sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) + +from models.market_anchor import devig, home_favorite_delta, apply_home_correction + + +def _approx(a, b, tol=1e-9): + return abs(a - b) <= tol + + +def test_devig_sums_to_one_and_orders_by_odds(): + p = devig([2.0, 3.5, 4.0]) + assert p is not None + assert _approx(sum(p), 1.0) + assert p[0] > p[1] > p[2] # shorter odds -> higher prob + + +def test_devig_removes_bookmaker_margin(): + # 1.61 / 3.15 / 3.77 carries ~20% margin; fair home prob must be BELOW the + # raw implied 1/1.61, and the three must sum to exactly 1. + p = devig([1.61, 3.15, 3.77]) + assert p is not None + assert p[0] < 1.0 / 1.61 + assert _approx(sum(p), 1.0) + + +def test_devig_rejects_missing_or_placeholder_legs(): + assert devig([1.0, 3.0, 4.0]) is None # 1.0 leg = no real price + assert devig([None, 3.0, 4.0]) is None # missing leg + assert devig([1.005, 3.0]) is None # <= 1.01 placeholder + assert devig([]) is None + assert devig([1.90, 1.90]) is not None # valid 2-way + + +def test_home_correction_only_lifts_favorites(): + assert home_favorite_delta(0.30) == 0.0 # underdog/level: no bias + assert home_favorite_delta(0.50) > 0.0 + assert home_favorite_delta(0.80) >= home_favorite_delta(0.60) # monotone + + +def test_apply_home_correction_keeps_distribution_valid(): + p1, px, p2 = apply_home_correction(0.70, 0.18, 0.12) + assert p1 > 0.70 # favourite lifted + assert _approx(p1 + px + p2, 1.0) # still a valid distribution + # underdog vector untouched + q = apply_home_correction(0.30, 0.30, 0.40) + assert _approx(q[0], 0.30) + + +if __name__ == "__main__": + fns = [v for k, v in sorted(globals().items()) if k.startswith("test_")] + for fn in fns: + fn() + print(f"PASS {fn.__name__}") + print(f"\nAll {len(fns)} tests passed.") diff --git a/analyze-match.py b/analyze-match.py deleted file mode 100644 index 88b867c..0000000 --- a/analyze-match.py +++ /dev/null @@ -1,173 +0,0 @@ -""" -VQWEN v3 Model - Tahmin Analizi (SKORLARA BAKMADAN!) -Match ID: 3k1wttysbzdw9ew4akft8a5g4 -Match: Casa Pia vs Benfica -""" - -import json -from datetime import datetime - -print("=" * 80) -print("🤖 VQWEN v3 MODEL - TAHMİN ANALİZİ") -print("⚠️ UYARI: SKORLARA BAKMADAN SADECE TAKIM VERİLERİYLE YAPILMIŞTIR!") -print("=" * 80) - -print("\n📊 1. MAÇ BİLGİLERİ") -print("-" * 80) -print(f" Ev Sahibi: Casa Pia") -print(f" Deplasman: Benfica") -print(f" Lig: Premier Lig (Portekiz 1. Lig)") -print(f" Durum: CANLI (live)") -print(f" Kadrolar: ✅ Her iki takımın da ilk 11'leri açıklandı") -print(f" Sakat/Cezalı: ❌ Yok") - -print("\n🏟️ 2. İLK 11 KADRO ANALİZİ") -print("-" * 80) - -print("\n🔵 BENFİCA (Deplasman) - İLK 11:") -print(" Kaleci: A. Trubin (1)") -print(" Defans: A. Silva (4), A. Bah (6), D. Lukebakio (11), A. Schjelderup (21)") -print(" Orta Saha: S. Dahl (26), N. Otamendi (30), E. Barrenechea (5)") -print(" Hücum: R. Rios (20), Rafa Silva (27), V. Pavlidis (14)") -print() -print(" ⭐ KADRO GÜCÜ: ÇOK YÜKSEK") -print(" 🔑 ANAHTAR OYUNCULAR:") -print(" • V. Pavlidis - Tehlikeli forvet") -print(" • Rafa Silva - Yaratıcı orta saha") -print(" • N. Otamendi - Deneyimli stopper") -print(" • A. Trubin - Kaliteli kaleci") - -print("\n🟠 CASA PİA (Ev Sahibi) - İLK 11:") -print(" Kaleci: P. Sequeira (1)") -print(" Defans: J. Goulart (4), Geraldes (18), T. Morais (21), J. Livolant (29)") -print(" Orta Saha: David Sousa (43), G. Larrazabal (72), Pedro Rosas (75)") -print(" Hücum: R. Brito (8), I. Mohamed (24), Cassiano (90)") -print() -print(" ⭐ KADRO GÜCÜ: ORTA") -print(" 🔑 ANAHTAR OYUNCULAR:") -print(" • Cassiano (90) - Deneyimli forvet") -print(" • G. Larrazabal - Kanat oyuncusu") -print(" • R. Brito - Orta saha direnci") - -print("\n📈 3. VQWEN v3 MODEL ÖZELLİKLERİ (Tahmini)") -print("-" * 80) - -# Model features calculation (based on team quality only, NO SCORES) -print("\n📊 ELO RATINGS:") -print(" Benfica ELO: ~1750 (Portekiz devi, Avrupa tecrübesi)") -print(" Casa Pia ELO: ~1450 (Lig ortası)") -print(" ELO Farkı: ~300 puan → BENFICA CİDDİ ÜSTÜNLÜK") - -print("\n📊 FORM POINTS (Son 5 maç - Genel Bilgi):") -print(" Benfica Form: Muhtemelen WWWDW (Şampiyonluk yarışı)") -print(" Casa Pia Form: Muhtemelen WLDLL (Lig ortası mücadele)") -print(" Benfica Form Puanı: ~85/100") -print(" Casa Pia Form Puanı: ~45/100") - -print("\n📊 SQUAD STRENGTH (İlk 11 Kalitesi):") -print(" Benfica İlk 11: 8.5/10 ⭐⭐⭐⭐⭐") -print(" Casa Pia İlk 11: 5.5/10 ⭐⭐⭐") -print(" Fark: +3.0 → Benfica çok daha güçlü") - -print("\n📊 H2H WIN RATE (Tarihsel):") -print(" Benfica Dominansı: ~75-80%") -print(" Casa Pia Kazanma: ~10-15%") -print(" Beraberlik: ~10-15%") - -print("\n📊 CONTEXTUAL GOALS (Ev/Deplasman Performansı):") -print(" Benfica Deplasman: Gol ort. ~1.8-2.2 maç başı") -print(" Casa Pia Ev: Gol ort. ~1.0-1.3 maç başı") -print(" Benfica YK Deplasman: ~0.6-0.9 gol yeme") - -print("\n📊 REST DAYS (Dinlenme):") -print(" Bilgi yok, ama tipik olarak 3-7 gün") - -print("\n" + "=" * 80) -print("🎯 VQWEN v3 MODEL TAHMİNİ") -print("=" * 80) - -print("\n🥇 ANA TAHMİN (MAIN PICK):") -print(" Market: Maç Sonucu (MS)") -print(" Tahmin: BENFICA (2)") -print(" Güven: %78-82") -print(" Olasılık: ~65-68%") -print(" Bahis Derecesi: A-") -print(" Gerekçe: ELO farkı 300+, kadro kalitesi çok üstün, Rafa Silva + Pavlidis ikilisi") - -print("\n💎 DEĞER TAHMİNİ (VALUE PICK):") -print(" Market: Handikaplı MS (Benfica -1)") -print(" Tahmin: BENFICA -1") -print(" Güven: %62-65") -print(" Edge: +12.5%") -print(" Gerekçe: Benfica farklı galibiyet potansiyeli yüksek, Casa Pia zayıf defans") - -print("\n⚽ SKOR TAHMİNİ:") -print(" İlk Yarı: 0-1 veya 0-2 (Benfica önde)") -print(" Maç Sonu: 1-3 veya 0-2") -print(" xG (Casa Pia): ~0.7-0.9") -print(" xG (Benfica): ~2.1-2.5") -print(" Toplam xG: ~2.8-3.4") - -print("\n📋 TAM TAHMİN LİSTESİ:") -print() -print(" ┌─────┬───────────────────┬──────────┬────────┬─────────┐") -print(" │ # │ Market │ Tahmin │ Oran │ Güven │") -print(" ├─────┼───────────────────┼──────────┼────────┼─────────┤") -print(" │ 🥇 │ Maç Sonucu │ Benfica │ ~1.50 │ %80 │") -print(" │ 🥈 │ Üst 2.5 │ EVET │ ~1.60 │ %72 │") -print(" │ 🥉 │ KG Var │ EVET │ ~1.70 │ %65 │") -print(" │ 💎 │ Handikap -1 │ Benfica │ ~2.20 │ %62 │") -print(" │ ⭐ │ İlk Yarı/MS │ 2/2 │ ~2.80 │ %55 │") -print(" │ 🎯 │ Skor │ 1-3 │ ~12.0 │ %8 │") -print(" └─────┴───────────────────┴──────────┴────────┴─────────┘") - -print("\n🔥 AGRESİF TAHMİN:") -print(" Market: Benfica -1.5 Handikap") -print(" Tahmin: Benfica farklı kazanır (2+ gol fark)") -print(" Güven: %52") -print(" Oran: ~2.80") - -print("\n⚠️ RİSK DEĞERLENDİRMESİ:") -print(" Seviye: DÜŞÜK-ORTA (LOW-MEDIUM)") -print(" Skor: 3.2/10") -print(" Uyarılar:") -print(" • Casa Pia evinde sürpriz yapabilir (düşük ihtimal)") -print(" • Benfica konsantrasyon kaybı yaşayabilir") -print(" • Erken gol Benfica'yı rehavete sokabilir") - -print("\n📊 VERİ KALİTESİ:") -print(" Seviye: YÜKSEK (HIGH)") -print(" Skor: 8.5/10") -print(" Neden: İlk 11'ler belli, sakat yok, lig verileri yeterli") - -print("\n" + "=" * 80) -print("💬 AI YORUMU (Türkçe)") -print("=" * 80) -print(""" - "Benfica bu maçın açıkça favorisi. Kadro kalitesi, ELO rating farkı ve - oyuncu profilleri ev sahibinin çok üstünde. Pavlidis ve Rafa Silva gibi - silahları olan Benfica, Casa Pia'nın zayıf defansını zorlayacaktır. - - Casa Pia evinde direnç gösterebilir ama Benfica'nın kalitesi farkını - koyacaktır. Üst 2.5 gol ve Benfica galibiyeti en güvenilir tercihler. - - Önerilen: Benfica MS + Üst 2.5 kombine. - Skor tahmini: 1-3 veya 0-2." -""") - -print("=" * 80) -print("🏆 SONUÇ") -print("=" * 80) -print() -print(" ✅ BENFICA GALIBIYETI (Güven: %80)") -print(" ✅ ÜST 2.5 GOL (Güven: %72)") -print(" ✅ KG VAR (Güven: %65)") -print() -print(" 🎯 EN İYİ KOMBİNE: Benfica MS + Üst 2.5") -print(" 💰 TOPLAP ORAN: ~2.40") -print(" 📊 BEKLENEN GETIRI: +140% (Value Bet)") -print() -print("=" * 80) -print("⚠️ NOT: Bu analiz SADECE takım verileri ile yapılmıştır.") -print(" Skorlara BAKILMAMIŞTIR. VQWEN v3 model özellikleri kullanılmıştır.") -print("=" * 80) diff --git a/analyze-miss.ts b/analyze-miss.ts deleted file mode 100644 index c55577c..0000000 --- a/analyze-miss.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { PrismaClient } from '@prisma/client'; -import * as dotenv from 'dotenv'; - -dotenv.config(); - -(BigInt.prototype as any).toJSON = function () { - return this.toString(); -}; - -const prisma = new PrismaClient(); - -const matchId = '9jx9757cgs6exshzg12qnwp3o'; - -async function analyzeMiss() { - const match = await prisma.liveMatch.findUnique({ - where: { id: matchId }, - }); - - if (!match) { - console.log('Match not found'); - return; - } - - console.log('🔍 POST-MORTEM ANALYSIS: Montpellier vs Troyes (2-2)'); - console.log('='.repeat(80)); - - console.log('\n❌ PREDICTION vs ACTUAL:'); - console.log(' Predicted: Under 2.5 goals (72.9% confidence)'); - console.log(' Actual: 2-2 (4 goals)'); - console.log(' xG Predicted: 1.07 - 1.09 (Total: 2.15)'); - console.log(' Error: Model UNDERESTIMATED goals by ~1.85'); - - console.log('\n📊 ENGINE BREAKDOWN:'); - console.log(' Team Signal: 29.2% (LOW)'); - console.log(' Player Signal: 80%'); - console.log(' Odds Signal: 91.9% (VERY HIGH - DOMINANT)'); - console.log(' Referee Signal: 80%'); - console.log('\n ⚠️ PROBLEM: Model %91.9 oranlara güvenmiş,'); - console.log(' ama oranlar YANILTIYDİ (bookmakers da düşük gol bekledi)'); - - console.log('\n🎲 INHERENT UNCERTAINTY:'); - console.log(' Confidence: 72.9% = 27.1% chance of being WRONG'); - console.log(' Bu maç o %27 lik dilime düştü'); - - console.log('\n📈 SYSTEMIC ISSUES TO INVESTIGATE:'); - console.log(' 1. Odds signal çok baskın (%91.9) - model kendi xG sini düşük tutmuş'); - console.log(' 2. Team signal düşük (%29.2) - form verisi yetersiz?'); - console.log(' 3. V25 signal available: false - ensemble eksik'); - console.log(' 4. Lineup var ama oyuncu formu hesaba katılmamış olabilir'); - - await prisma.$disconnect(); -} - -analyzeMiss().catch(console.error); diff --git a/analyze-reversal-fast.ts b/analyze-reversal-fast.ts deleted file mode 100644 index 83ff1a2..0000000 --- a/analyze-reversal-fast.ts +++ /dev/null @@ -1,212 +0,0 @@ -import { PrismaClient } from '@prisma/client'; -import * as dotenv from 'dotenv'; - -dotenv.config(); - -(BigInt.prototype as any).toJSON = function () { - return this.toString(); -}; - -const prisma = new PrismaClient(); - -async function main() { - console.log('🔍 ANALYZING HT/FT REVERSAL MATCHES (1/2 & 2/1)'); - console.log('='.repeat(80)); - - // Use raw SQL for performance - const matches: any[] = await prisma.$queryRaw` - SELECT - m.id, m.ht_score_home, m.ht_score_away, m.score_home, m.score_away, m.mst_utc, - ht.name as home_team, at.name as away_team, l.name as league - FROM matches m - LEFT JOIN teams ht ON ht.id = m.home_team_id - LEFT JOIN teams at ON at.id = m.away_team_id - LEFT JOIN leagues l ON l.id = m.league_id - WHERE m.status = 'FT' - AND m.ht_score_home IS NOT NULL - AND m.ht_score_away IS NOT NULL - AND m.score_home IS NOT NULL - AND m.score_away IS NOT NULL - ORDER BY m.mst_utc DESC - `; - - console.log(`📊 Total completed matches: ${matches.length}`); - - let htftCounts: Record = { - '1/1': 0, '1/X': 0, '1/2': 0, 'X/1': 0, 'X/X': 0, 'X/2': 0, '2/1': 0, '2/X': 0, '2/2': 0 - }; - - const reversals: any[] = []; - - for (const m of matches) { - const htH = m.ht_score_home; - const htA = m.ht_score_away; - const ftH = m.score_home; - const ftA = m.score_away; - - const htR = htH > htA ? '1' : htH === htA ? 'X' : '2'; - const ftR = ftH > ftA ? '1' : ftH === ftA ? 'X' : '2'; - const htft = `${htR}/${ftR}`; - - htftCounts[htft] = (htftCounts[htft] || 0) + 1; - - if (htft === '1/2' || htft === '2/1') { - reversals.push({ ...m, htft, htH, htA, ftH, ftA }); - } - } - - const total = matches.length; - console.log('\n📊 HT/FT DISTRIBUTION:'); - for (const [key, count] of Object.entries(htftCounts)) { - const pct = (count / total * 100).toFixed(2); - const marker = (key === '1/2' || key === '2/1') ? ' ⚠️ REVERSAL' : ''; - console.log(` ${key}: ${count} (${pct}%)${marker}`); - } - - console.log(`\n⚠️ TOTAL REVERSALS: ${reversals.length} (${(reversals.length / total * 100).toFixed(2)}%)`); - - // ANALYSIS 1: By League - console.log('\n📈 LEAGUE DISTRIBUTION (min 100 matches):'); - const leagueMap: Record = {}; - for (const m of matches) { - const league = m.league || 'Unknown'; - if (!leagueMap[league]) leagueMap[league] = { total: 0, rev: 0 }; - leagueMap[league].total++; - - const htH = m.ht_score_home; - const htA = m.ht_score_away; - const ftH = m.score_home; - const ftA = m.score_away; - const htR = htH > htA ? '1' : htH === htA ? 'X' : '2'; - const ftR = ftH > ftA ? '1' : ftH === ftA ? 'X' : '2'; - if ((htR === '1' && ftR === '2') || (htR === '2' && ftR === '1')) { - leagueMap[league].rev++; - } - } - - const topLeagues = Object.entries(leagueMap) - .filter(([_, v]) => v.total >= 100 && v.rev > 0) - .sort((a, b) => (b[1].rev / b[1].total) - (a[1].rev / a[1].total)) - .slice(0, 15); - - console.log('\nTop 15 leagues by reversal rate:'); - for (const [league, data] of topLeagues) { - const rate = (data.rev / data.total * 100).toFixed(2); - console.log(` ${league}: ${data.rev}/${data.total} (${rate}%)`); - } - - // ANALYSIS 2: Score patterns - console.log('\n📈 HT SCORE PATTERNS IN REVERSALS:'); - const htScoreMap: Record = {}; - for (const m of reversals) { - const key = `${m.htH}-${m.htA}`; - htScoreMap[key] = (htScoreMap[key] || 0) + 1; - } - - Object.entries(htScoreMap) - .sort((a, b) => b[1] - a[1]) - .slice(0, 10) - .forEach(([score, count]) => { - console.log(` HT ${score}: ${count} matches`); - }); - - console.log('\n📈 FT SCORE PATTERNS IN REVERSALS:'); - const ftScoreMap: Record = {}; - for (const m of reversals) { - const key = `${m.ftH}-${m.ftA}`; - ftScoreMap[key] = (ftScoreMap[key] || 0) + 1; - } - - Object.entries(ftScoreMap) - .sort((a, b) => b[1] - a[1]) - .slice(0, 10) - .forEach(([score, count]) => { - console.log(` FT ${score}: ${count} matches`); - }); - - // ANALYSIS 3: Comeback magnitude - console.log('\n📈 COMEBACK MAGNITUDE:'); - let by1 = 0, by2 = 0, by3plus = 0; - for (const m of reversals) { - const margin = Math.abs((m.ftH - m.ftA)); - if (margin === 1) by1++; - else if (margin === 2) by2++; - else by3plus++; - } - - console.log(` By 1 goal: ${by1} (${(by1/reversals.length*100).toFixed(1)}%)`); - console.log(` By 2 goals: ${by2} (${(by2/reversals.length*100).toFixed(1)}%)`); - console.log(` By 3+ goals: ${by3plus} (${(by3plus/reversals.length*100).toFixed(1)}%) ⚠️`); - - // Show extreme comebacks - const extreme = reversals - .filter(m => Math.abs(m.ftH - m.ftA) >= 2) - .sort((a, b) => Math.abs(b.ftH - b.ftA) - Math.abs(a.ftH - a.ftA)) - .slice(0, 10); - - console.log('\nTop 10 extreme comebacks (2+ goal margin):'); - for (const m of extreme) { - const diff = Math.abs(m.ftH - m.ftA); - console.log(` ${m.league}: ${m.home_team} vs ${m.away_team} | HT: ${m.htH}-${m.htA} => FT: ${m.ftH}-${m.ftA} (margin: ${diff})`); - } - - // ANALYSIS 4: 1/2 vs 2/1 split - const rev_1_2 = reversals.filter(m => m.htft === '1/2'); - const rev_2_1 = reversals.filter(m => m.htft === '2/1'); - - console.log('\n📈 REVERSAL TYPE SPLIT:'); - console.log(` 1/2 (Home leads HT, Away wins FT): ${rev_1_2.length} (${(rev_1_2.length/reversals.length*100).toFixed(1)}%)`); - console.log(` 2/1 (Away leads HT, Home wins FT): ${rev_2_1.length} (${(rev_2_1.length/reversals.length*100).toFixed(1)}%)`); - - // Get odds for a sample of reversals - console.log('\n📈 SAMPLE ODDS ANALYSIS (last 100 reversals):'); - const sample = reversals.slice(0, 100); - let withOdds = 0; - let favLostCount = 0; - - for (const m of sample) { - const odds: any = await prisma.$queryRaw` - SELECT oc.name, os.name as selection, os.odd_value - FROM odd_categories oc - JOIN odd_selections os ON os.odd_category_db_id = oc.db_id - WHERE oc.match_id = ${m.id} - `; - - if (odds.length === 0) continue; - withOdds++; - - let msHome: number | null = null; - let msAway: number | null = null; - - for (const o of odds) { - const cat = (o.name || '').toLowerCase(); - if (cat.includes('maç sonucu')) { - const sel = (o.selection || '').toLowerCase(); - if (sel === '1') msHome = parseFloat(o.odd_value.toString()); - else if (sel === '2') msAway = parseFloat(o.odd_value.toString()); - } - } - - if (msHome && msAway) { - const favWasHome = msHome < msAway; - const actualWinner = m.ftH > m.ftA ? '1' : m.ftA > m.ftH ? '2' : 'X'; - - if ((favWasHome && actualWinner === '2') || (!favWasHome && actualWinner === '1')) { - favLostCount++; - } - } - } - - console.log(` Reversals with odds: ${withOdds}/${sample.length}`); - if (withOdds > 0) { - console.log(` Favorite lost: ${favLostCount}/${withOdds} (${(favLostCount/withOdds*100).toFixed(1)}%) ⚠️`); - } - - console.log('\n' + '='.repeat(80)); - console.log('✅ ANALYSIS COMPLETE'); - console.log('='.repeat(80)); - - await prisma.$disconnect(); -} - -main().catch(console.error); diff --git a/analyze-reversal-matches.ts b/analyze-reversal-matches.ts deleted file mode 100644 index cf9e358..0000000 --- a/analyze-reversal-matches.ts +++ /dev/null @@ -1,365 +0,0 @@ -import { PrismaClient } from '@prisma/client'; -import * as dotenv from 'dotenv'; - -dotenv.config(); - -(BigInt.prototype as any).toJSON = function () { - return this.toString(); -}; - -const prisma = new PrismaClient(); - -async function analyzeReversalMatches() { - console.log('🔍 ANALYZING HT/FT REVERSAL MATCHES (1/2 & 2/1)'); - console.log('='.repeat(80)); - - // Fetch all completed matches with HT and FT scores - const matches = await prisma.match.findMany({ - where: { - status: 'FT', - htScoreHome: { not: null }, - htScoreAway: { not: null }, - scoreHome: { not: null }, - scoreAway: { not: null }, - oddCategories: { some: {} } - }, - include: { - homeTeam: true, - awayTeam: true, - league: true, - oddCategories: { include: { selections: true } } - }, - orderBy: { mstUtc: 'desc' } - }); - - console.log(`📊 Total completed matches with odds: ${matches.length}`); - - // Analyze HT/FT results - const reversalMatches: any[] = []; - let totalMatches = 0; - let htftCounts: Record = { - '1/1': 0, '1/X': 0, '1/2': 0, - 'X/1': 0, 'X/X': 0, 'X/2': 0, - '2/1': 0, '2/X': 0, '2/2': 0 - }; - - for (const match of matches) { - const htHome = match.htScoreHome!; - const htAway = match.htScoreAway!; - const ftHome = match.scoreHome!; - const ftAway = match.scoreAway!; - - const htResult = htHome > htAway ? '1' : htHome === htAway ? 'X' : '2'; - const ftResult = ftHome > ftAway ? '1' : ftHome === ftAway ? 'X' : '2'; - const htft = `${htResult}/${ftResult}`; - - htftCounts[htft] = (htftCounts[htft] || 0) + 1; - totalMatches++; - - if (htft === '1/2' || htft === '2/1') { - // Extract odds - let msHomeOdds: number | null = null; - let msDrawOdds: number | null = null; - let msAwayOdds: number | null = null; - let htHomeOdds: number | null = null; - let htDrawOdds: number | null = null; - let htAwayOdds: number | null = null; - - for (const cat of match.oddCategories) { - const catName = (cat.name || '').toLowerCase(); - const isHT = catName.includes('1.yarı'); - - for (const sel of cat.selections) { - const selName = (sel.name || '').toLowerCase(); - if (!sel.oddValue) continue; - const odd = parseFloat(sel.oddValue.toString()); - - if (catName.includes('maç sonucu') || catName.includes('1.yarı sonucu')) { - if (selName === '1') { if (isHT) htHomeOdds = odd; else msHomeOdds = odd; } - else if (selName === 'x' || selName === '0') { if (isHT) htDrawOdds = odd; else msDrawOdds = odd; } - else if (selName === '2') { if (isHT) htAwayOdds = odd; else msAwayOdds = odd; } - } - } - } - - if (!match.homeTeam || !match.awayTeam || !match.league) continue; - - reversalMatches.push({ - id: match.id, - homeTeam: match.homeTeam.name, - awayTeam: match.awayTeam.name, - league: match.league.name, - htHome, htAway, ftHome, ftAway, - htft, - msHomeOdds, msDrawOdds, msAwayOdds, - htHomeOdds, htDrawOdds, htAwayOdds, - date: match.mstUtc, - }); - } - } - - // Print HT/FT distribution - console.log('\n📊 HT/FT DISTRIBUTION:'); - for (const [key, count] of Object.entries(htftCounts)) { - const pct = (count / totalMatches * 100).toFixed(2); - const marker = (key === '1/2' || key === '2/1') ? ' ⚠️ REVERSAL' : ''; - console.log(` ${key}: ${count} (${pct}%)${marker}`); - } - - console.log(`\n⚠️ TOTAL REVERSAL MATCHES: ${reversalMatches.length} (${(reversalMatches.length / totalMatches * 100).toFixed(2)}%)`); - - // ANALYSIS 1: League distribution - console.log('\n📈 ANALYSIS 1: LEAGUE DISTRIBUTION OF REVERSALS'); - console.log('-'.repeat(80)); - const leagueCounts: Record = {}; - - for (const match of matches) { - if (!match.league) continue; - const htHome = match.htScoreHome!; - const htAway = match.htScoreAway!; - const ftHome = match.scoreHome!; - const ftAway = match.scoreAway!; - - const htResult = htHome > htAway ? '1' : htHome === htAway ? 'X' : '2'; - const ftResult = ftHome > ftAway ? '1' : ftHome === ftAway ? 'X' : '2'; - const htft = `${htResult}/${ftResult}`; - - const league = match.league.name; - if (!leagueCounts[league]) leagueCounts[league] = { total: 0, reversal: 0 }; - leagueCounts[league].total++; - if (htft === '1/2' || htft === '2/1') leagueCounts[league].reversal++; - } - - const leagueSorted = Object.entries(leagueCounts) - .filter(([_, v]) => v.reversal > 0 && v.total >= 50) - .sort((a, b) => (b[1].reversal / b[1].total) - (a[1].reversal / a[1].total)) - .slice(0, 20); - - console.log('\nTop 20 leagues by reversal rate (min 50 matches):'); - for (const [league, data] of leagueSorted) { - const rate = (data.reversal / data.total * 100).toFixed(2); - console.log(` ${league}: ${data.reversal}/${data.total} (${rate}%)`); - } - - // ANALYSIS 2: Odds patterns - console.log('\n📈 ANALYSIS 2: ODDS PATTERNS IN REVERSAL MATCHES'); - console.log('-'.repeat(80)); - - const ms1_2 = reversalMatches.filter(m => m.htft === '1/2'); - const ms2_1 = reversalMatches.filter(m => m.htft === '2/1'); - - console.log(`\n1/2 Reversals: ${ms1_2.length}`); - console.log(`2/1 Reversals: ${ms2_1.length}`); - - // MS odds analysis for 1/2 - const ms1_2_withOdds = ms1_2.filter(m => m.msHomeOdds && m.msAwayOdds); - if (ms1_2_withOdds.length > 0) { - const avgHomeOdd = ms1_2_withOdds.reduce((sum, m) => sum + m.msHomeOdds!, 0) / ms1_2_withOdds.length; - const avgAwayOdd = ms1_2_withOdds.reduce((sum, m) => sum + m.msAwayOdds!, 0) / ms1_2_withOdds.length; - const avgDrawOdd = ms1_2_withOdds.filter(m => m.msDrawOdds).reduce((sum, m) => sum + m.msDrawOdds!, 0) / ms1_2_withOdds.filter(m => m.msDrawOdds).length || 0; - - console.log(`\n 1/2 Matches - Average MS Odds:`); - console.log(` Home Win: ${avgHomeOdd.toFixed(2)} (HT was WINNING!)`); - console.log(` Draw: ${avgDrawOdd.toFixed(2)}`); - console.log(` Away Win: ${avgAwayOdd.toFixed(2)} (but AWAY won FT!)`); - - // Favorite analysis - let favoriteWon = 0; - let underdogWon = 0; - let noFavorite = 0; - - for (const m of ms1_2_withOdds) { - if (m.msHomeOdds! < m.msAwayOdds!) { - // Home was favorite, but away won = UNDERDOG - underdogWon++; - } else if (m.msAwayOdds! < m.msHomeOdds!) { - // Away was favorite and won = FAVORITE - favoriteWon++; - } else { - noFavorite++; - } - } - - console.log(`\n 1/2 - Who was favored vs who won:`); - console.log(` Favorite won (Away was fav): ${favoriteWon} (${(favoriteWon / ms1_2_withOdds.length * 100).toFixed(1)}%)`); - console.log(` Underdog won (Home was fav): ${underdogWon} (${(underdogWon / ms1_2_withOdds.length * 100).toFixed(1)}%) ⚠️`); - } - - // MS odds analysis for 2/1 - const ms2_1_withOdds = ms2_1.filter(m => m.msHomeOdds && m.msAwayOdds); - if (ms2_1_withOdds.length > 0) { - const avgHomeOdd = ms2_1_withOdds.reduce((sum, m) => sum + m.msHomeOdds!, 0) / ms2_1_withOdds.length; - const avgAwayOdd = ms2_1_withOdds.reduce((sum, m) => sum + m.msAwayOdds!, 0) / ms2_1_withOdds.length; - const avgDrawOdd = ms2_1_withOdds.filter(m => m.msDrawOdds).reduce((sum, m) => sum + m.msDrawOdds!, 0) / ms2_1_withOdds.filter(m => m.msDrawOdds).length || 0; - - console.log(`\n 2/1 Matches - Average MS Odds:`); - console.log(` Home Win: ${avgHomeOdd.toFixed(2)} (HOME won FT!)`); - console.log(` Draw: ${avgDrawOdd.toFixed(2)}`); - console.log(` Away Win: ${avgAwayOdd.toFixed(2)} (Away was WINNING at HT!)`); - - let favoriteWon = 0; - let underdogWon = 0; - - for (const m of ms2_1_withOdds) { - if (m.msAwayOdds! < m.msHomeOdds!) { - // Away was favorite at HT, but home won = UNDERDOG - underdogWon++; - } else if (m.msHomeOdds! < m.msAwayOdds!) { - // Home was favorite and won = FAVORITE - favoriteWon++; - } - } - - console.log(`\n 2/1 - Who was favored vs who won:`); - console.log(` Favorite won (Home was fav): ${favoriteWon} (${(favoriteWon / ms2_1_withOdds.length * 100).toFixed(1)}%)`); - console.log(` Underdog won (Away was fav): ${underdogWon} (${(underdogWon / ms2_1_withOdds.length * 100).toFixed(1)}%) ⚠️`); - } - - // ANALYSIS 3: Suspicious patterns - console.log('\n📈 ANALYSIS 3: SUSPICIOUS PATTERNS'); - console.log('-'.repeat(80)); - - // Pattern 1: Heavy favorite loses after leading (1/2 with low home odds) - const suspicious_1_2 = ms1_2_withOdds.filter(m => m.msHomeOdds! < 1.5); - console.log(`\n⚠️ PATTERN 1: Heavy Home Favorite loses after HT lead (MS Home Odds < 1.5):`); - console.log(` Count: ${suspicious_1_2.length}`); - if (suspicious_1_2.length > 0) { - const avgOdd = suspicious_1_2.reduce((sum, m) => sum + m.msHomeOdds!, 0) / suspicious_1_2.length; - console.log(` Avg Home Odds: ${avgOdd.toFixed(2)}`); - console.log(` Sample matches:`); - suspicious_1_2.slice(0, 5).forEach(m => { - console.log(` ${m.league}: ${m.homeTeam} (${m.msHomeOdds}) vs ${m.awayTeam} (${m.msAwayOdds}) => HT: ${m.htHome}-${m.htAway}, FT: ${m.ftHome}-${m.ftAway}`); - }); - } - - // Pattern 2: Heavy away favorite loses after leading (2/1 with low away odds) - const suspicious_2_1 = ms2_1_withOdds.filter(m => m.msAwayOdds! < 1.5); - console.log(`\n⚠️ PATTERN 2: Heavy Away Favorite loses after HT lead (MS Away Odds < 1.5):`); - console.log(` Count: ${suspicious_2_1.length}`); - if (suspicious_2_1.length > 0) { - const avgOdd = suspicious_2_1.reduce((sum, m) => sum + m.msAwayOdds!, 0) / suspicious_2_1.length; - console.log(` Avg Away Odds: ${avgOdd.toFixed(2)}`); - console.log(` Sample matches:`); - suspicious_2_1.slice(0, 5).forEach(m => { - console.log(` ${m.league}: ${m.homeTeam} (${m.msHomeOdds}) vs ${m.awayTeam} (${m.msAwayOdds}) => HT: ${m.htHome}-${m.htAway}, FT: ${m.ftHome}-${m.ftAway}`); - }); - } - - // ANALYSIS 4: HT Odds vs MS Odds correlation - console.log('\n📈 ANALYSIS 4: HT ODDS CORRELATION'); - console.log('-'.repeat(80)); - - const withHTOdds = reversalMatches.filter(m => m.htHomeOdds && m.htAwayOdds); - if (withHTOdds.length > 0) { - console.log(`\n Matches with HT odds: ${withHTOdds.length}`); - - let htCorrectlyPredicted = 0; - for (const m of withHTOdds) { - const htFav = m.htHomeOdds! < m.htAwayOdds! ? '1' : m.htAwayOdds! < m.htHomeOdds! ? '2' : 'X'; - const htActual = m.htHome > m.htAway ? '1' : m.htAway > m.htHome ? '2' : 'X'; - if (htFav === htActual) htCorrectlyPredicted++; - } - console.log(` HT Favorite correctly led at HT: ${htCorrectlyPredicted}/${withHTOdds.length} (${(htCorrectlyPredicted / withHTOdds.length * 100).toFixed(1)}%)`); - - // How often did HT favorite lose FT? - let htFavoriteLostFT = 0; - for (const m of withHTOdds) { - const htFav = m.htHomeOdds! < m.htAwayOdds! ? '1' : m.htAwayOdds! < m.htHomeOdds! ? '2' : 'X'; - const ftActual = m.ftHome > m.ftAway ? '1' : m.ftAway > m.ftHome ? '2' : 'X'; - if (htFav !== ftActual) htFavoriteLostFT++; - } - console.log(` HT Favorite lost FT: ${htFavoriteLostFT}/${withHTOdds.length} (${(htFavoriteLostFT / withHTOdds.length * 100).toFixed(1)}%) ⚠️`); - } - - // ANALYSIS 5: Score patterns - console.log('\n📈 ANALYSIS 5: SCORE PATTERNS IN REVERSALS'); - console.log('-'.repeat(80)); - - // HT score distribution for reversals - const htScores: Record = {}; - for (const m of reversalMatches) { - const key = `${m.htHome}-${m.htAway}`; - htScores[key] = (htScores[key] || 0) + 1; - } - - console.log('\nMost common HT scores in reversal matches:'); - Object.entries(htScores) - .sort((a, b) => b[1] - a[1]) - .slice(0, 10) - .forEach(([score, count]) => { - console.log(` HT ${score}: ${count} matches`); - }); - - // FT score distribution - const ftScores: Record = {}; - for (const m of reversalMatches) { - const key = `${m.ftHome}-${m.ftAway}`; - ftScores[key] = (ftScores[key] || 0) + 1; - } - - console.log('\nMost common FT scores in reversal matches:'); - Object.entries(ftScores) - .sort((a, b) => b[1] - a[1]) - .slice(0, 10) - .forEach(([score, count]) => { - console.log(` FT ${score}: ${count} matches`); - }); - - // ANALYSIS 6: Goal difference patterns - console.log('\n📈 ANALYSIS 6: COMEBACK MAGNITUDE'); - console.log('-'.repeat(80)); - - let comebackBy1 = 0; - let comebackBy2 = 0; - let comebackBy3Plus = 0; - - for (const m of reversalMatches) { - const htDiff = Math.abs(m.htHome - m.htAway); - const ftDiff = Math.abs(m.ftHome - m.ftAway); - - if (m.htft === '1/2') { - // Home was leading, away won - const margin = (m.ftAway - m.ftHome); - if (margin === 1) comebackBy1++; - else if (margin === 2) comebackBy2++; - else comebackBy3Plus++; - } else { - // Away was leading, home won - const margin = (m.ftHome - m.ftAway); - if (margin === 1) comebackBy1++; - else if (margin === 2) comebackBy2++; - else comebackBy3Plus++; - } - } - - console.log(`\n Comeback by 1 goal: ${comebackBy1} (${(comebackBy1 / reversalMatches.length * 100).toFixed(1)}%)`); - console.log(` Comeback by 2 goals: ${comebackBy2} (${(comebackBy2 / reversalMatches.length * 100).toFixed(1)}%)`); - console.log(` Comeback by 3+ goals: ${comebackBy3Plus} (${(comebackBy3Plus / reversalMatches.length * 100).toFixed(1)}%) ⚠️`); - - // Show extreme comebacks - const extremeComebacks = reversalMatches - .filter(m => { - if (m.htft === '1/2') return (m.ftAway - m.ftHome) >= 2; - return (m.ftHome - m.ftAway) >= 2; - }) - .sort((a, b) => { - const diffA = a.htft === '1/2' ? (a.ftAway - a.ftHome) : (a.ftHome - a.ftAway); - const diffB = b.htft === '1/2' ? (b.ftAway - b.ftHome) : (b.ftHome - b.ftAway); - return diffB - diffA; - }) - .slice(0, 10); - - console.log('\nTop 10 most extreme comebacks:'); - extremeComebacks.forEach(m => { - const diff = m.htft === '1/2' ? (m.ftAway - m.ftHome) : (m.ftHome - m.ftAway); - console.log(` ${m.league}: ${m.homeTeam} vs ${m.awayTeam} | HT: ${m.htHome}-${m.htAway} => FT: ${m.ftHome}-${m.ftAway} (Diff: ${diff})`); - }); - - console.log('\n' + '='.repeat(80)); - console.log('✅ ANALYSIS COMPLETE'); - console.log('='.repeat(80)); - - await prisma.$disconnect(); -} - -analyzeReversalMatches().catch(console.error); diff --git a/backup_fixed.sql b/backup_fixed.sql deleted file mode 100644 index e69de29..0000000 diff --git a/check-lineup-data.ts b/check-lineup-data.ts deleted file mode 100644 index 58f983a..0000000 --- a/check-lineup-data.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { PrismaClient } from '@prisma/client'; -import * as dotenv from 'dotenv'; - -dotenv.config(); - -// BigInt serialization fix -(BigInt.prototype as any).toJSON = function () { - return this.toString(); -}; - -const prisma = new PrismaClient(); - -const matchId = '7cnm7h7qbsq2bbaxngusojh90'; - -async function checkLineupData() { - const match = await prisma.liveMatch.findUnique({ - where: { id: matchId }, - }); - - if (!match) { - console.log('❌ Match not found'); - return; - } - - console.log('\n📊 LINEUP DATA INSPECTION'); - console.log('='.repeat(80)); - - console.log(`\n1. lineups field:`); - console.log(` Type: ${typeof match.lineups}`); - console.log(` Is null: ${match.lineups === null}`); - console.log(` Content:`, JSON.stringify(match.lineups, null, 2)); - - console.log(`\n2. sidelined field:`); - console.log(` Type: ${typeof match.sidelined}`); - console.log(` Is null: ${match.sidelined === null}`); - console.log(` Content:`, JSON.stringify(match.sidelined, null, 2)); - - console.log(`\n3. odds field:`); - console.log(` Type: ${typeof match.odds}`); - console.log(` Is null: ${match.odds === null}`); - - // Check if it's JSON object or string - if (match.odds) { - const oddsStr = typeof match.odds === 'string' ? match.odds : JSON.stringify(match.odds); - console.log(` Length: ${oddsStr.length}`); - console.log(` Preview: ${oddsStr.substring(0, 200)}...`); - } - - console.log(`\n4. refereeName:`); - console.log(` Value: ${match.refereeName}`); - - // Now check what AI Engine sees - console.log('\n\n🔍 AI ENGINE PERSPECTIVE'); - console.log('='.repeat(80)); - - // Simulate AI Engine's lineup parsing - const lineups = match.lineups as any; - let homePlayers: any[] = []; - let awayPlayers: any[] = []; - - if (lineups && typeof lineups === 'object') { - if (lineups.home?.xi) { - homePlayers = lineups.home.xi; - } - if (lineups.away?.xi) { - awayPlayers = lineups.away.xi; - } - } - - console.log(`\nHome lineup count: ${homePlayers.length}`); - console.log(`Away lineup count: ${awayPlayers.length}`); - console.log(`Lineup source would be: ${homePlayers.length >= 9 && awayPlayers.length >= 9 ? 'confirmed_live' : 'none/probable'}`); - - await prisma.$disconnect(); -} - -checkLineupData().catch(console.error); diff --git a/copy_key.exp b/copy_key.exp deleted file mode 100644 index 8ba56ac..0000000 --- a/copy_key.exp +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/expect -f -spawn ssh -p 2222 -o StrictHostKeyChecking=accept-new haruncan@95.70.252.214 "mkdir -p ~/.ssh && echo 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGo7pRd2fozEvxIultfwgoajgNOzc0RVywcqrqgZho62 piton@Pitons-MacBook-Air.local' >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys" - -expect { - "assword:" { - send "M594xH%\$iM&4MM\r" - exp_continue - } - eof -} diff --git a/docker_info.txt b/docker_info.txt deleted file mode 100644 index 70ff0a1..0000000 --- a/docker_info.txt +++ /dev/null @@ -1,62 +0,0 @@ -Thu Apr 16 12:20:54 UTC 2026 -==== DOCKER PS ==== -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -78aab6872b85 gitea/runner-images:ubuntu-latest "/bin/sleep 10800" 2 seconds ago Up 1 second GITEA-ACTIONS-TASK-185_WORKFLOW-Check-Docker-Pi_JOB-check-docker -784ca4842e79 iddaai-be:latest "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 3000/tcp, 127.0.0.1:1810->3005/tcp iddaai-be -48f495d45025 iddaai-fe:latest "docker-entrypoint.s…" 2 hours ago Up 2 hours 127.0.0.1:1510->3000/tcp iddaai-fe -a60b07c52d7a gitea/act_runner:latest "/sbin/tini -- run.sh" 22 hours ago Up 22 hours gitea_runner -436552af4199 iddaai-ai-engine "uvicorn main:app --…" 23 hours ago Up 23 hours (healthy) 8000/tcp iddaai-ai-engine -696050fc89de postgres:17-alpine "docker-entrypoint.s…" 23 hours ago Up 23 hours (healthy) 5432/tcp iddaai-postgres -abcc43242dbb redis:7-alpine "docker-entrypoint.s…" 23 hours ago Up 23 hours (healthy) 6379/tcp iddaai-redis -da0f2d5bc898 temporalio/auto-setup:latest "/etc/temporal/entry…" 3 weeks ago Up 8 days 6933-6935/tcp, 6939/tcp, 7233-7235/tcp, 7239/tcp temporal -4768eec66926 ghcr.io/gitroomhq/postiz-app:latest "docker-entrypoint.s…" 3 weeks ago Up 8 days 0.0.0.0:4007->5000/tcp, [::]:4007->5000/tcp postiz -5cfb55782d8b postgres:16 "docker-entrypoint.s…" 3 weeks ago Up 8 days 5432/tcp temporal-postgresql -cf8591458662 redis:7.2 "docker-entrypoint.s…" 3 weeks ago Up 8 days (healthy) 6379/tcp postiz-redis -0108dc0b875d postgres:17-alpine "docker-entrypoint.s…" 3 weeks ago Up 8 days (healthy) 5432/tcp postiz-postgres -c88a569ddb22 elasticsearch:8.16.2 "/bin/tini -- /usr/l…" 3 weeks ago Up 8 days 9200/tcp, 9300/tcp temporal-elasticsearch -208bbf92c2d8 temporalio/ui:latest "./start-ui-server.sh" 3 weeks ago Up 8 days 0.0.0.0:8085->8080/tcp, [::]:8085->8080/tcp temporal-ui -a0555f255857 haruncan-studio-fe:latest "/docker-entrypoint.…" 3 weeks ago Up 8 days 0.0.0.0:1509->80/tcp, [::]:1509->80/tcp haruncan-studio-fe-container -7591abf68bf5 backend-haruncan-studio:latest "docker-entrypoint.s…" 3 weeks ago Up 8 days 0.0.0.0:1809->3000/tcp, [::]:1809->3000/tcp backend-haruncan-studio-container -96d02609b108 ui-indir:latest "docker-entrypoint.s…" 5 weeks ago Up 8 days 0.0.0.0:1507->3000/tcp, [::]:1507->3000/tcp ui-indir-container -f67335b1625f ghcr.io/open-webui/open-webui:main "bash start.sh" 6 weeks ago Up 8 days (healthy) 0.0.0.0:3001->8080/tcp, [::]:3001->8080/tcp openclaw -24b3c6e32817 gitea/gitea:latest "/usr/bin/entrypoint…" 6 weeks ago Up 8 days 0.0.0.0:222->22/tcp, [::]:222->22/tcp, 0.0.0.0:1224->3000/tcp, [::]:1224->3000/tcp gitea -4e64e3199178 postgres:14 "docker-entrypoint.s…" 6 weeks ago Up 8 days 5432/tcp gitea_db -cb7fdcbcd79f postgres:16-alpine "docker-entrypoint.s…" 6 weeks ago Up 8 days 5432/tcp backend_db -f0784aedcadf redis:alpine "docker-entrypoint.s…" 6 weeks ago Up 8 days 6379/tcp apps_redis -fdc89d4a236a portainer/portainer-ce:latest "/portainer" 6 weeks ago Up 8 days 8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, [::]:9000->9000/tcp portainer -2de41ca39c1f backend-proje:latest "docker-entrypoint.s…" 2 months ago Restarting (1) 35 seconds ago backend-container -89268da2ab86 skript-ui "docker-entrypoint.s…" 2 months ago Up 8 days 0.0.0.0:1506->3000/tcp, [::]:1506->3000/tcp ui-skript-container -8fced773c984 skript-be "docker-entrypoint.s…" 2 months ago Exited (1) 8 days ago backend-skript-container -ec90982f14b6 backend-digicraft "docker-entrypoint.s…" 2 months ago Up 8 days 0.0.0.0:1805->3001/tcp, [::]:1805->3001/tcp backend-digicraft-container -4eec58a7f453 ui-digicraft "/docker-entrypoint.…" 2 months ago Up 8 days 0.0.0.0:1505->80/tcp, [::]:1505->80/tcp ui-digicraft-container -37f844a6cd20 frontend-proje:latest "docker-entrypoint.s…" 2 months ago Up 8 days 0.0.0.0:1800->3000/tcp, [::]:1800->3000/tcp frontend-container -==== DOCKER STATS ==== -CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS -78aab6872b85 GITEA-ACTIONS-TASK-185_WORKFLOW-Check-Docker-Pi_JOB-check-docker 1.07% 0B / 0B 0.00% 1.12MB / 13.6kB 135kB / 0B 12 -784ca4842e79 iddaai-be 0.00% 0B / 0B 0.00% 12.9MB / 1.04MB 250kB / 0B 18 -48f495d45025 iddaai-fe 0.00% 0B / 0B 0.00% 491kB / 221kB 1.84MB / 0B 26 -a60b07c52d7a gitea_runner 0.10% 0B / 0B 0.00% 25.6MB / 24.8MB 4MB / 0B 11 -436552af4199 iddaai-ai-engine 0.14% 0B / 0B 0.00% 881kB / 840kB 175MB / 0B 20 -696050fc89de iddaai-postgres 0.00% 0B / 0B 0.00% 130MB / 311MB 685MB / 0B 13 -abcc43242dbb iddaai-redis 2.39% 0B / 0B 0.00% 222kB / 126B 3.95MB / 0B 6 -da0f2d5bc898 temporal 1.49% 0B / 0B 0.00% 1.75GB / 1.88GB 300MB / 0B 15 -4768eec66926 postiz 0.54% 0B / 0B 0.00% 8.09MB / 4.33MB 474MB / 0B 152 -5cfb55782d8b temporal-postgresql 0.03% 0B / 0B 0.00% 1.88GB / 1.75GB 57.1MB / 0B 39 -cf8591458662 postiz-redis 0.17% 0B / 0B 0.00% 1.17MB / 545kB 23.4MB / 0B 6 -0108dc0b875d postiz-postgres 0.00% 0B / 0B 0.00% 945kB / 176kB 46.1MB / 0B 8 -c88a569ddb22 temporal-elasticsearch 0.18% 0B / 0B 0.00% 763kB / 96.1kB 288MB / 0B 94 -208bbf92c2d8 temporal-ui 0.00% 0B / 0B 0.00% 655kB / 22.7kB 66.6MB / 0B 8 -a0555f255857 haruncan-studio-fe-container 0.00% 0B / 0B 0.00% 2.13MB / 7.98MB 4.78MB / 0B 5 -7591abf68bf5 backend-haruncan-studio-container 0.00% 0B / 0B 0.00% 776kB / 724kB 127MB / 0B 17 -96d02609b108 ui-indir-container 0.00% 0B / 0B 0.00% 118MB / 27.3MB 139MB / 0B 11 -f67335b1625f openclaw 0.11% 0B / 0B 0.00% 652kB / 16.4kB 1GB / 0B 19 -24b3c6e32817 gitea 2.44% 0B / 0B 0.00% 1.69GB / 1.24GB 200MB / 0B 20 -4e64e3199178 gitea_db 0.74% 0B / 0B 0.00% 1.03GB / 1.25GB 69.1MB / 0B 10 -cb7fdcbcd79f backend_db 0.00% 0B / 0B 0.00% 677kB / 126B 41.4MB / 0B 6 -f0784aedcadf apps_redis 0.23% 0B / 0B 0.00% 677kB / 126B 31MB / 0B 6 -fdc89d4a236a portainer 0.00% 0B / 0B 0.00% 4.08MB / 20.8MB 126MB / 0B 7 -2de41ca39c1f backend-container 0.00% 0B / 0B 0.00% 0B / 0B 0B / 0B 0 -89268da2ab86 ui-skript-container 0.00% 0B / 0B 0.00% 1.71MB / 11.3kB 51.3MB / 0B 11 -ec90982f14b6 backend-digicraft-container 0.06% 0B / 0B 0.00% 2.41MB / 436kB 142MB / 0B 38 -4eec58a7f453 ui-digicraft-container 0.00% 0B / 0B 0.00% 3.95MB / 27.3MB 5.8MB / 0B 5 -37f844a6cd20 frontend-container 0.01% 0B / 0B 0.00% 1.93MB / 3.11MB 13.6MB / 0B 11 diff --git a/lint-output.txt b/lint-output.txt deleted file mode 100644 index b8a229e..0000000 --- a/lint-output.txt +++ /dev/null @@ -1,4 +0,0 @@ - -> Suggest-Bet-BE@0.0.1 lint -> eslint "{src,apps,libs,test}/**/*.ts" --fix - diff --git a/parse_errors.py b/parse_errors.py deleted file mode 100644 index db37379..0000000 --- a/parse_errors.py +++ /dev/null @@ -1,17 +0,0 @@ -import json - -targets = [ - "bet_recommender.py", "score_calculator.py", "db.py", "upset_engine_v2.py", - "v20_ensemble.py", "v27_predictor.py", "betting_brain.py", - "single_match_orchestrator.py", "v26_shadow_engine.py" -] - -d = json.load(open("pyright_main_errors.json", encoding="utf-16")) -for diag in d["generalDiagnostics"]: - if diag["severity"] == "error": - fname = diag["file"] - if any(t in fname for t in targets): - # Print safely encoding to ascii to avoid charmap errors - safe_fname = fname.split('ai-engine')[1].encode('ascii', 'ignore').decode() - safe_msg = diag["message"].encode('ascii', 'ignore').decode() - print(f"{safe_fname} L{diag['range']['start']['line']+1}: {safe_msg}") diff --git a/predict-single.ts b/predict-single.ts deleted file mode 100644 index cc7e92f..0000000 --- a/predict-single.ts +++ /dev/null @@ -1,153 +0,0 @@ -import { PrismaClient } from '@prisma/client'; -import * as dotenv from 'dotenv'; -import axios from 'axios'; - -dotenv.config(); - -// BigInt serialization fix -(BigInt.prototype as any).toJSON = function () { - return this.toString(); -}; - -const prisma = new PrismaClient(); - -const matchId = '30gnuehy43on5orc9n3sh8pw4'; // Valencia vs Celta Vigo - HT/FT test - -async function getPrediction() { - console.log('🔮 VQWEN v3 PREDICTION'); - console.log('='.repeat(80)); - - // Fetch match from database - const match = await prisma.liveMatch.findUnique({ - where: { id: matchId }, - include: { - homeTeam: true, - awayTeam: true, - league: true, - }, - }); - - if (!match) { - console.log(`❌ Match not found: ${matchId}`); - await prisma.$disconnect(); - return; - } - - console.log(`\n📊 ${match.homeTeam?.name} vs ${match.awayTeam?.name}`); - console.log(`🏆 League: ${match.league?.name}`); - console.log(`📅 Match Time: ${new Date(Number(match.mstUtc)).toISOString()}`); - console.log(`📍 Status: ${match.state} / ${match.substate}`); - - // Check data availability - console.log(`\n📦 DATA CHECK:`); - console.log(` Odds: ${match.odds ? '✅' : '❌'}`); - console.log(` Lineups: ${match.lineups ? '✅' : '❌'}`); - console.log(` Sidelined: ${match.sidelined ? '✅' : '❌'}`); - console.log(` Referee: ${match.refereeName || 'N/A'}`); - - // Send prediction request - const aiEngineUrl = 'http://localhost:8007'; - const predictionUrl = `${aiEngineUrl}/v20plus/analyze/${matchId}`; - - console.log(`\n🤖 Sending to AI Engine...`); - - const startTime = Date.now(); - const response = await axios.post(predictionUrl, {}, { - timeout: 120000, - }); - const elapsed = ((Date.now() - startTime) / 1000).toFixed(2); - - console.log(`✅ Prediction received in ${elapsed}s\n`); - - const pkg = response.data; - - // Print full JSON - console.log('='.repeat(80)); - console.log('📊 FULL PREDICTION JSON:'); - console.log('='.repeat(80)); - console.log(JSON.stringify(pkg, null, 2)); - - // Summary - console.log(`\n${'='.repeat(80)}`); - console.log('🎯 PREDICTION SUMMARY:'); - console.log('='.repeat(80)); - - const dq = pkg.data_quality; - console.log(`\n📦 Data Quality: ${dq.label} (${dq.score})`); - console.log(` Home lineup: ${dq.home_lineup_count}`); - console.log(` Away lineup: ${dq.away_lineup_count}`); - console.log(` Source: ${dq.lineup_source}`); - - const eb = pkg.engine_breakdown; - console.log(`\n📈 Engine Signals:`); - console.log(` Team: ${eb.team}%`); - console.log(` Player: ${eb.player}%`); - console.log(` Odds: ${eb.odds}%`); - console.log(` Referee: ${eb.referee}%`); - - const mp = pkg.main_pick; - console.log(`\n🥇 Main Pick:`); - console.log(` Market: ${mp.market}`); - console.log(` Pick: ${mp.pick}`); - console.log(` Confidence: ${mp.confidence}%`); - console.log(` Odds: ${mp.odds}`); - console.log(` Edge: ${(mp.edge * 100).toFixed(2)}%`); - console.log(` Grade: ${mp.bet_grade}`); - console.log(` Playable: ${mp.playable}`); - console.log(` Stake: ${mp.stake_units} units`); - - if (pkg.value_pick) { - const vp = pkg.value_pick; - console.log(`\n💎 Value Pick:`); - console.log(` Market: ${vp.market}`); - console.log(` Pick: ${vp.pick}`); - console.log(` Confidence: ${vp.confidence}%`); - console.log(` Odds: ${vp.odds}`); - console.log(` Edge: ${(vp.edge * 100).toFixed(2)}%`); - } - - const sp = pkg.score_prediction; - console.log(`\n⚽ Score Prediction:`); - console.log(` FT: ${sp.ft}`); - console.log(` HT: ${sp.ht}`); - console.log(` xG: ${sp.xg_home} - ${sp.xg_away} (Total: ${sp.xg_total})`); - - console.log(`\n🎲 Top 5 Scores:`); - pkg.scenario_top5.forEach((s: any, i: number) => { - console.log(` ${i + 1}. ${s.score} (${s.prob}%)`); - }); - - const risk = pkg.risk; - console.log(`\n⚠️ Risk: ${risk.level} (${risk.score}/10)`); - if (risk.warnings?.length > 0) { - console.log(` Warnings: ${risk.warnings.join(', ')}`); - } - - console.log(`\n💬 Reasoning:`); - pkg.reasoning_factors.forEach((f: string) => console.log(` - ${f}`)); - - if (pkg.ai_commentary) { - console.log(`\n💬 AI Commentary:`); - console.log(` ${pkg.ai_commentary}`); - } - - // HT/FT specific check - console.log(`\n🔍 HT/FT CHECK:`); - const htft = pkg.market_board?.HTFT; - if (htft && htft.probs && Object.keys(htft.probs).length > 0) { - console.log(` ✅ HT/FT PROBS PRESENT:`); - Object.entries(htft.probs).forEach(([key, val]) => { - console.log(` ${key}: ${(val as number * 100).toFixed(2)}%`); - }); - - // Find best HT/FT - const best = Object.entries(htft.probs).reduce((a, b) => (b[1] as number) > (a[1] as number) ? b : a); - console.log(`\n 🎯 BEST HT/FT: ${best[0]} (${(best[1] as number * 100).toFixed(2)}%)`); - } else { - console.log(` ❌ HT/FT PROBS EMPTY`); - } - - await prisma.$disconnect(); -} - -getPrediction().catch(console.error); diff --git a/query-3-matches.ts b/query-3-matches.ts deleted file mode 100644 index b156b53..0000000 --- a/query-3-matches.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { PrismaClient } from '@prisma/client'; -import * as dotenv from 'dotenv'; - -dotenv.config(); - -// BigInt serialization fix -(BigInt.prototype as any).toJSON = function () { - return this.toString(); -}; - -const prisma = new PrismaClient(); - -const matchIds = [ - '7cnm7h7qbsq2bbaxngusojh90', - '7lmrfu2k1e2uxprxfxgaevcb8', - '3ko3otchy41d28rzxfpvl3d3o' -]; - -async function getMatches() { - for (const matchId of matchIds) { - try { - const match = await prisma.liveMatch.findUnique({ - where: { id: matchId }, - include: { - homeTeam: true, - awayTeam: true, - league: true, - }, - }); - - if (!match) { - console.log(`\n❌ Maç bulunamadı: ${matchId}`); - continue; - } - - console.log(`\n${'='.repeat(80)}`); - console.log(`📊 MAÇ: ${match.homeTeam?.name} vs ${match.awayTeam?.name}`); - console.log('='.repeat(80)); - console.log(`ID: ${match.id}`); - console.log(`Lig: ${match.league?.name}`); - console.log(`Durum: ${match.state} / ${match.substate}`); - console.log(`Maç Zamanı (MS): ${match.mstUtc?.toString()}`); - console.log(`Hakem: ${match.refereeName || 'Bilinmiyor'}`); - console.log(`İlk 11 Var: ${match.lineups ? '✅' : '❌'}`); - console.log(`Sakat/Cezalı: ${match.sidelined ? '✅ Var' : '❌ Yok'}`); - - // Lineups summary - if (match.lineups) { - const lineups = match.lineups as any; - if (lineups.home && lineups.home.xi) { - console.log(`\n🏠 EV SAHİBİ İLK 11 (${match.homeTeam?.name}):`); - lineups.home.xi.forEach((p: any) => { - console.log(` ${p.matchName} (${p.shirtNumber}) - ${p.position}`); - }); - } - if (lineups.away && lineups.away.xi) { - console.log(`\n✈️ DEPLASMAN İLK 11 (${match.awayTeam?.name}):`); - lineups.away.xi.forEach((p: any) => { - console.log(` ${p.matchName} (${p.shirtNumber}) - ${p.position}`); - }); - } - } - - console.log('\n'); - - } catch (error) { - console.error(`❌ Hata (${matchId}):`, error); - } - } - - await prisma.$disconnect(); -} - -getMatches(); diff --git a/query-match.ts b/query-match.ts deleted file mode 100644 index 4dcf8df..0000000 --- a/query-match.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { PrismaClient } from '@prisma/client'; -import * as dotenv from 'dotenv'; - -dotenv.config(); - -const prisma = new PrismaClient(); - -// BigInt serialization fix -(BigInt.prototype as any).toJSON = function () { - return this.toString(); -}; - -async function getMatch() { - try { - const match = await prisma.liveMatch.findUnique({ - where: { id: '3kemwubzpmga0nwhtc0o0vgno' }, - include: { - homeTeam: true, - awayTeam: true, - league: true, - }, - }); - - if (!match) { - console.log('❌ Maç bulunamadı!'); - return; - } - - console.log('✅ Maç bulundu:'); - console.log(JSON.stringify(match, null, 2)); - - // Maç bilgilerini özetle - console.log('\n📊 MAÇ ÖZETİ:'); - console.log('ID:', match.id); - console.log('Slug:', match.matchSlug); - console.log('Ev sahibi:', match.homeTeam?.name); - console.log('Deplasman:', match.awayTeam?.name); - console.log('Lig:', match.league?.name); - console.log('Durum:', match.status); - console.log('Spor:', match.sport); - console.log('Maç Zamanı (MS):', match.mstUtc?.toString()); - console.log('Skor:', match.scoreHome, '-', match.scoreAway); - - } catch (error) { - console.error('❌ Hata:', error); - } finally { - await prisma.$disconnect(); - } -} - -getMatch(); diff --git a/query-matches-detailed.ts b/query-matches-detailed.ts deleted file mode 100644 index f689f40..0000000 --- a/query-matches-detailed.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { PrismaClient } from '@prisma/client'; -import * as dotenv from 'dotenv'; - -dotenv.config(); - -// BigInt serialization fix -(BigInt.prototype as any).toJSON = function () { - return this.toString(); -}; - -const prisma = new PrismaClient(); - -const matchIds = [ - '7cnm7h7qbsq2bbaxngusojh90', - '7lmrfu2k1e2uxprxfxgaevcb8', - '3ko3otchy41d28rzxfpvl3d3o' -]; - -async function getMatches() { - for (const matchId of matchIds) { - try { - const match = await prisma.liveMatch.findUnique({ - where: { id: matchId }, - include: { - homeTeam: true, - awayTeam: true, - league: true, - }, - }); - - if (!match) { - console.log(`\n❌ Maç bulunamadı: ${matchId}`); - continue; - } - - console.log(`\n${'='.repeat(80)}`); - console.log(`🏟️ ${match.homeTeam?.name} vs ${match.awayTeam?.name}`); - console.log(`📍 Lig: ${match.league?.name}`); - console.log(`📅 Maç Zamanı: ${new Date(Number(match.mstUtc)).toLocaleString('tr-TR')}`); - console.log(`👨‍⚖️ Hakem: ${match.refereeName || 'Bilinmiyor'}`); - console.log('='.repeat(80)); - - // Lineups - if (match.lineups) { - const lineups = match.lineups as any; - - // Home team - if (lineups.home && lineups.home.xi) { - console.log(`\n🏠 EV SAHİBİ İLK 11 (${match.homeTeam?.name}):`); - console.log('-'.repeat(80)); - const goalscorers = lineups.home.xi.filter((p: any) => p.events?.some((e: any) => e.name === 'goal')); - const cards = lineups.home.xi.filter((p: any) => p.events?.some((e: any) => e.name === 'yellow-card' || e.name === 'red-card')); - const subs = lineups.home.xi.filter((p: any) => p.events?.some((e: any) => e.name === 'sub-off')); - - lineups.home.xi.forEach((p: any) => { - const hasGoal = p.events?.some((e: any) => e.name === 'goal'); - const hasCard = p.events?.some((e: any) => e.name === 'yellow-card' || e.name === 'red-card'); - const marker = hasGoal ? ' ⚽' : hasCard ? ' 🟨' : ''; - console.log(` ${p.matchName} (${p.shirtNumber}) - ${p.position}${marker}`); - }); - - if (goalscorers.length > 0) { - console.log(` ⚽ Gol Edenler: ${goalscorers.map((p: any) => p.matchName).join(', ')}`); - } - } - - // Away team - if (lineups.away && lineups.away.xi) { - console.log(`\n✈️ DEPLASMAN İLK 11 (${match.awayTeam?.name}):`); - console.log('-'.repeat(80)); - lineups.away.xi.forEach((p: any) => { - const hasGoal = p.events?.some((e: any) => e.name === 'goal'); - const hasCard = p.events?.some((e: any) => e.name === 'yellow-card' || e.name === 'red-card'); - const marker = hasGoal ? ' ⚽' : hasCard ? ' 🟨' : ''; - console.log(` ${p.matchName} (${p.shirtNumber}) - ${p.position}${marker}`); - }); - } - - // Sidelined - if (match.sidelined) { - const sidelined = match.sidelined as any; - const homeSidelined = sidelined.homeTeam?.totalSidelined || 0; - const awaySidelined = sidelined.awayTeam?.totalSidelined || 0; - console.log(`\n🏥 Sakat/Cezalı:`); - console.log(` Ev Sahibi: ${homeSidelined} oyuncu`); - console.log(` Deplasman: ${awaySidelined} oyuncu`); - } - } - - console.log('\n'); - - } catch (error) { - console.error(`❌ Hata (${matchId}):`, error); - } - } - - await prisma.$disconnect(); -} - -getMatches(); diff --git a/query-matches-simple.ts b/query-matches-simple.ts deleted file mode 100644 index 3a22f28..0000000 --- a/query-matches-simple.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { PrismaClient } from '@prisma/client'; -import * as dotenv from 'dotenv'; - -dotenv.config(); - -// BigInt serialization fix -(BigInt.prototype as any).toJSON = function () { - return this.toString(); -}; - -const prisma = new PrismaClient(); - -async function getMatches() { - const matches = await prisma.liveMatch.findMany({ - where: { - id: { - in: [ - '7cnm7h7qbsq2bbaxngusojh90', - '7lmrfu2k1e2uxprxfxgaevcb8', - '3ko3otchy41d28rzxfpvl3d3o' - ] - } - }, - include: { - homeTeam: true, - awayTeam: true, - league: true, - }, - }); - - matches.forEach((match, idx) => { - console.log(`\n${'='.repeat(80)}`); - console.log(`MAÇ ${idx + 1}: ${match.homeTeam?.name} vs ${match.awayTeam?.name}`); - console.log('='.repeat(80)); - console.log(`ID: ${match.id}`); - console.log(`Lig: ${match.league?.name} (${match.league?.countryId})`); - console.log(`Durum: ${match.state} / ${match.substate}`); - console.log(`Skor: ${match.scoreHome ?? '?'} - ${match.scoreAway ?? '?'}`); - console.log(`Hakem: ${match.refereeName || 'Bilinmiyor'}`); - console.log(`Lineups Tip: ${typeof match.lineups} | ${match.lineups ? 'VAR' : 'YOK'}`); - - if (match.lineups) { - const lineups = match.lineups as any; - console.log(`Lineups Keys: ${Object.keys(lineups).join(', ')}`); - - // Check structure - if (lineups.home) { - const homeXi = lineups.home.xi || lineups.home.stats || []; - console.log(`Ev Sahibi İlk 11: ${Array.isArray(homeXi) ? homeXi.length : 'N/A'} oyuncu`); - } - if (lineups.away) { - const awayXi = lineups.away.xi || lineups.away.stats || []; - console.log(`Deplasman İlk 11: ${Array.isArray(awayXi) ? awayXi.length : 'N/A'} oyuncu`); - } - } - - console.log(''); - }); - - await prisma.$disconnect(); -} - -getMatches(); diff --git a/run-prediction.py b/run-prediction.py deleted file mode 100644 index 3d281a0..0000000 --- a/run-prediction.py +++ /dev/null @@ -1,170 +0,0 @@ -""" -VQWEN v3 Model - Manual Prediction Script -Match ID: 558o1fq1vbfsi3m5gm4ekpyc4 -Match: Kaiserslautern vs F. Düsseldorf -League: 2. Bundesliga -""" - -import requests -import json -from datetime import datetime - -# AI Engine base URL -AI_ENGINE_URL = "http://127.0.0.1:8000" -MATCH_ID = "558o1fq1vbfsi3m5gm4ekpyc4" - -def check_engine_health(): - """Check if AI Engine is running""" - try: - response = requests.get(f"{AI_ENGINE_URL}/health", timeout=5) - return response.status_code == 200 - except: - return False - -def run_prediction(): - """Run VQWEN v3 prediction for the match""" - - print("=" * 80) - print("🤖 VQWEN v3 MODEL - MANUEL TAHMİN SİSTEMİ") - print("=" * 80) - print(f"\n📊 Maç Bilgileri:") - print(f" ID: {MATCH_ID}") - print(f" Ev Sahibi: Kaiserslautern") - print(f" Deplasman: F. Düsseldorf") - print(f" Lig: 2. Bundesliga") - print(f" Maç Zamanı: 2026-04-01 (MS: 1775300400000)") - print(f" Hakem: D. Schlager") - print() - - # Check engine health - print("🔍 AI Engine kontrol ediliyor...") - if not check_engine_health(): - print("❌ AI Engine (Python FastAPI) çalışmıyor!") - print() - print("ℹ️ Lütfen AI Engine'i başlatın:") - print(" cd ai-engine") - print(" uvicorn main:app --host 0.0.0.0 --port 8000 --reload") - print() - print("📋 Alternatif olarak, maç verilerini hazırlayabilirim:") - print() - - # Prepare match data for analysis - match_data = { - "match_id": MATCH_ID, - "home_team": "Kaiserslautern", - "away_team": "F. Düsseldorf", - "league": "2. Bundesliga", - "match_date_ms": "1775300400000", - "referee": "D. Schlager", - "odds": { - "MS_1": 2.13, - "MS_X": 3.23, - "MS_2": 2.34, - "Alt_2.5": 2.09, - "Ust_2.5": 1.38, - "KG_Var": 1.32, - "KG_Yok": 2.25 - }, - "lineups_available": True, - "sidelined_count": 0 - } - - print("✅ Maç verileri hazırlandı:") - print(json.dumps(match_data, indent=2, ensure_ascii=False)) - print() - print("⚠️ Tahmin almak için AI Engine'in çalışması gerekiyor.") - print() - return - - # If engine is running, call the analysis endpoint - print("✅ AI Engine çalışıyor!") - print() - print("🎯 Tahmin yapılıyor...") - - try: - response = requests.post( - f"{AI_ENGINE_URL}/v20plus/analyze/{MATCH_ID}", - json={}, - timeout=60 - ) - - if response.status_code == 200: - result = response.json() - - print("\n" + "=" * 80) - print("📊 TAHMİN SONUÇLARI") - print("=" * 80) - - # Main Pick - if 'main_pick' in result: - main = result['main_pick'] - print(f"\n🎯 ANA TAHMİN:") - print(f" Market: {main.get('market', 'N/A')}") - print(f" Tahmin: {main.get('pick', 'N/A')}") - print(f" Oran: {main.get('odds', 'N/A')}") - print(f" Güven: {main.get('confidence', 0):.1f}%") - print(f" Olasılık: {main.get('probability', 0):.1f}%") - print(f" Bahis Derecesi: {main.get('bet_grade', 'N/A')}") - - # Value Pick - if 'value_pick' in result: - value = result['value_pick'] - print(f"\n💎 DEĞER TAHMİNİ:") - print(f" Market: {value.get('market', 'N/A')}") - print(f" Tahmin: {value.get('pick', 'N/A')}") - print(f" Oran: {value.get('odds', 'N/A')}") - print(f" Güven: {value.get('confidence', 0):.1f}%") - print(f" Edge: {value.get('edge', 0):.2f}") - - # Score Prediction - if 'score_prediction' in result: - score = result['score_prediction'] - print(f"\n⚽ SKOR TAHMİNİ:") - print(f" İlk Yarı: {score.get('ht', 'N/A')}") - print(f" Maç Sonu: {score.get('ft', 'N/A')}") - print(f" xG (Ev): {score.get('xg_home', 0):.2f}") - print(f" xG (Dep): {score.get('xg_away', 0):.2f}") - print(f" Toplam xG: {score.get('xg_total', 0):.2f}") - - # Bet Summary - if 'bet_summary' in result: - print(f"\n📋 TÜM TAHMİNLER:") - for bet in result['bet_summary']: - print(f" • {bet.get('market', 'N/A')}: {bet.get('pick', 'N/A')} " - f"(Güven: {bet.get('calibrated_confidence', 0):.1f}%, " - f"Derece: {bet.get('bet_grade', 'N/A')})") - - # AI Commentary - if 'ai_commentary' in result: - print(f"\n💬 AI YORUMU:") - print(f" {result['ai_commentary']}") - - # Risk Assessment - if 'risk' in result: - risk = result['risk'] - print(f"\n⚠️ RİSK DEĞERLENDİRMESİ:") - print(f" Seviye: {risk.get('level', 'N/A')}") - print(f" Skor: {risk.get('score', 0):.1f}") - if risk.get('warnings'): - print(f" Uyarılar: {', '.join(risk['warnings'][:3])}") - - # Data Quality - if 'data_quality' in result: - quality = result['data_quality'] - print(f"\n📊 VERİ KALİTESİ:") - print(f" Seviye: {quality.get('label', 'N/A')}") - print(f" Skor: {quality.get('score', 0):.1f}") - - print("\n" + "=" * 80) - - else: - print(f"❌ Hata: HTTP {response.status_code}") - print(f" {response.text}") - - except requests.exceptions.Timeout: - print("❌ Zaman aşımı! AI Engine yanıt vermiyor.") - except Exception as e: - print(f"❌ Hata: {str(e)}") - -if __name__ == "__main__": - run_prediction() diff --git a/run-predictions.ts b/run-predictions.ts deleted file mode 100644 index ace349b..0000000 --- a/run-predictions.ts +++ /dev/null @@ -1,153 +0,0 @@ -import { PrismaClient } from '@prisma/client'; -import * as dotenv from 'dotenv'; -import axios from 'axios'; - -dotenv.config(); - -// BigInt serialization fix -(BigInt.prototype as any).toJSON = function () { - return this.toString(); -}; - -const prisma = new PrismaClient(); - -const matchIds = [ - '7cnm7h7qbsq2bbaxngusojh90', // Club Brugge vs Anderlecht - TESTED ✅ - '7lmrfu2k1e2uxprxfxgaevcb8', // Castellon vs Granada - '3ko3otchy41d28rzxfpvl3d3o' // SV Ried vs Altach -]; - -async function getPrediction(matchId: string) { - try { - console.log(`\n${'='.repeat(80)}`); - console.log(`🔮 PREDICTION REQUEST: ${matchId}`); - console.log('='.repeat(80)); - - // Fetch match from database - const match = await prisma.liveMatch.findUnique({ - where: { id: matchId }, - include: { - homeTeam: true, - awayTeam: true, - league: true, - }, - }); - - if (!match) { - console.log(`❌ Match not found: ${matchId}`); - return null; - } - - console.log(`📊 ${match.homeTeam?.name} vs ${match.awayTeam?.name}`); - console.log(`🏆 League: ${match.league?.name}`); - console.log(`📅 Match Time: ${new Date(Number(match.mstUtc)).toISOString()}`); - - // Send prediction request to AI Engine - const aiEngineUrl = 'http://localhost:8007'; - const predictionUrl = `${aiEngineUrl}/v20plus/analyze/${matchId}`; - - console.log(`\n🤖 Sending to AI Engine: ${predictionUrl}`); - - const startTime = Date.now(); - const response = await axios.post(predictionUrl, {}, { - timeout: 120000, // 2 minutes timeout - }); - - const elapsed = ((Date.now() - startTime) / 1000).toFixed(2); - - console.log(`✅ Prediction received in ${elapsed}s`); - console.log(`\n${'='.repeat(80)}`); - console.log(`📊 FULL PREDICTION JSON:`); - console.log('='.repeat(80)); - console.log(JSON.stringify(response.data, null, 2)); - - // Summary - const pkg = response.data; - if (pkg.main_pick) { - console.log(`\n${'='.repeat(80)}`); - console.log(`🎯 SUMMARY:`); - console.log('='.repeat(80)); - console.log(`Main Pick: ${pkg.main_pick.market} → ${pkg.main_pick.pick}`); - console.log(`Confidence: ${pkg.main_pick.confidence}%`); - console.log(`Odds: ${pkg.main_pick.odds}`); - console.log(`Bet Grade: ${pkg.main_pick.bet_grade}`); - console.log(`Edge: ${pkg.main_pick.edge || 'N/A'}`); - - if (pkg.value_pick) { - console.log(`\nValue Pick: ${pkg.value_pick.market} → ${pkg.value_pick.pick}`); - console.log(`Confidence: ${pkg.value_pick.confidence}%`); - console.log(`Odds: ${pkg.value_pick.odds}`); - } - - if (pkg.bet_advice) { - console.log(`\n💡 Bet Advice:`); - console.log(` Playable: ${pkg.bet_advice.playable}`); - console.log(` Stake: ${pkg.bet_advice.suggested_stake_units} units`); - console.log(` Reason: ${pkg.bet_advice.reason}`); - } - - if (pkg.score_prediction) { - console.log(`\n⚽ Score Prediction:`); - console.log(` FT: ${pkg.score_prediction.ft}`); - console.log(` HT: ${pkg.score_prediction.ht}`); - console.log(` xG: ${pkg.score_prediction.xg_home} - ${pkg.score_prediction.xg_away}`); - } - - if (pkg.risk) { - console.log(`\n⚠️ Risk Level: ${pkg.risk.level} (${pkg.risk.score})`); - if (pkg.risk.warnings?.length > 0) { - console.log(` Warnings: ${pkg.risk.warnings.join(', ')}`); - } - } - - if (pkg.ai_commentary) { - console.log(`\n💬 AI Commentary:`); - console.log(` ${pkg.ai_commentary}`); - } - } - - return response.data; - - } catch (error: any) { - console.error(`❌ Error for match ${matchId}:`); - if (error.response) { - console.error(` Status: ${error.response.status}`); - console.error(` Data: ${JSON.stringify(error.response.data, null, 2)}`); - } else { - console.error(` Message: ${error.message}`); - } - return null; - } -} - -async function main() { - console.log('🚀 VQWEN v3 Prediction Engine - Batch Analysis'); - console.log(`📡 AI Engine: ${process.env.AI_ENGINE_URL || 'http://localhost:8007'}`); - console.log(`🎯 Matches: ${matchIds.length}`); - - const results: { matchId: string; success: boolean }[] = []; - - for (const matchId of matchIds) { - const result = await getPrediction(matchId); - if (result) { - results.push({ matchId, success: true }); - } else { - results.push({ matchId, success: false }); - } - - // Small delay between requests - await new Promise(resolve => setTimeout(resolve, 1000)); - } - - console.log(`\n${'='.repeat(80)}`); - console.log(`📊 BATCH SUMMARY:`); - console.log('='.repeat(80)); - results.forEach((r, i) => { - console.log(`${r.success ? '✅' : '❌'} ${i + 1}. ${r.matchId}`); - }); - console.log(`\nTotal: ${results.filter(r => r.success).length}/${results.length} successful`); - - await prisma.$disconnect(); -} - -main().catch(console.error); diff --git a/ts_error.txt b/ts_error.txt deleted file mode 100644 index 9d437eb0f1ce460776dba9c425faa00975dfc917..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3496 zcmds)T~8B16o$`LFHHOo8!jxOP+C5OYBZ*RdZDP`6-83ErPe^H?V>bBf4cg-XPDBa z6*O{zWHP(6JF{ob`<{r76D!jzT&woZdc5g!t=fUr>;vN#<4tSx ze$AggGpbrXx0YMaE#zi$8@WO*&%J8TSew~%JF$IMwAiJNjG9Xrewt-oGNLAXcH}yp z*dgz=cgA&gFkj`VYpKg@yY8oGuQg>`u_arz+jh&I@+Lt-%XKYVk*5>{HNMr8*4*RW z9s1N6-q*|>Ta#-I9TMB%>!?H2?j!pY2D(Jnrv6DvK%9U=Eo%1Nu1k|f$ypO;75K@p zO%t}d*0&e%alkmP8NSP#UNM*1mUZ|hh0_Ci1IuY{`VwCYoLp@0GO{x?k*%9{7pXh8 zYxlXoWgmHyv|Y!)Q|=v}TD)sJ(@|I9+Q3&2X?=UcsOH`ibzMikyrT=+I%@+i@z65G zK!v#@S`E2%_KK?mcf$;JS)C!j%gTh_urJ)V!EpZ7G%{MqYBGO}$7z?8HHy*9kxiPH z4vOX8Z&&nS=ivzMh(Fxl``oB5LRy$f$OdgR+V_Y^&_ec39d!ro6emK_cPno(BYTMJ zvdauHTX1XCooDG;AR-&ibjE1(Y0jm$ks#h>7v-W5>C?pd5-1nJBmFcJtP_|l`FzRe z}k9 z`G}a3-9y}r@_Ts>94Ps7s)dVH2HR!ad9I0m-u+hY;$CZ zIotCLc2hVI`em>O5160GL9CL>o@I6F>Xg$-I-dDcd_^a~A-vW6+zOT13Kg6(xBP89 zn~eIHa?2+otL51>RAbsz`8%BPJ?!vkU 50) { - console.log(` ✅ ODDS DATA: USED SIGNIFICANTLY (${eb.odds}%)`); - } else if (eb.odds > 0) { - console.log(` ⚠️ ODDS DATA: USED MINIMALLY (${eb.odds}%)`); - } else { - console.log(` ❌ ODDS DATA: NOT USED`); - } - } - - // 5. Check sidelined impact - console.log('\n⚠️ SIDELINED IMPACT:'); - const reasoning = pkg.reasoning_factors || []; - const hasSidelinedMention = reasoning.some((f: string) => - f.toLowerCase().includes('sideline') || - f.toLowerCase().includes('injury') || - f.toLowerCase().includes('absence') || - f.toLowerCase().includes('missing') - ); - - if (hasSidelinedMention) { - console.log(` ✅ SIDELINED DATA: MENTIONED IN REASONING`); - reasoning.forEach((f: string) => { - if (f.toLowerCase().includes('sideline') || - f.toLowerCase().includes('injury') || - f.toLowerCase().includes('absence') || - f.toLowerCase().includes('missing')) { - console.log(` - ${f}`); - } - }); - } else { - console.log(` ⚠️ SIDELINED DATA: No explicit mention (but may still be used internally)`); - console.log(` Reasoning factors: ${reasoning.join(', ')}`); - } - - // 6. Main pick summary - console.log('\n🎯 PREDICTION SUMMARY:'); - const mp = pkg.main_pick; - console.log(` Market: ${mp.market}`); - console.log(` Pick: ${mp.pick}`); - console.log(` Confidence: ${mp.confidence}%`); - console.log(` Odds: ${mp.odds}`); - console.log(` Edge: ${(mp.edge * 100).toFixed(2)}%`); - console.log(` Grade: ${mp.bet_grade}`); - - console.log('\n' + '='.repeat(80)); - console.log('✅ VERIFICATION COMPLETE'); - console.log('='.repeat(80)); - - await prisma.$disconnect(); -} - -verifyDataUsage().catch(console.error);