-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdev_check.py
More file actions
73 lines (53 loc) · 1.55 KB
/
dev_check.py
File metadata and controls
73 lines (53 loc) · 1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import numpy as np
from bm_opt_tens import *
from bs_opt_tens import *
from protes_jax import protes_jax
from protes_jax_fast import protes_jax_fast
from protes_tor import protes_tor
from utils import Log
from utils import folder_ensure
# Benchmarks:
bm_all = [
BmOptTensKnapsack(),
BmOptTensMaxCut(d=50),
BmOptTensMvc(d=50),
BmOptTensKnapsackQuad(d=50),
BmOptTensControl(d=25),
BmOptTensControl(d=50),
BmOptTensControl(d=100),
BmOptTensControlConstr(d=25),
BmOptTensControlConstr(d=50),
BmOptTensControlConstr(d=100),
]
# Baselines:
bs_all = [
BsOptTensTTOpt(),
BsOptTensOptimaTT(),
BsOptTensNgOPO(),
BsOptTensNgPSO(),
BsOptTensNgNB(),
BsOptTensNgSPSA(),
BsOptTensNgPortfolio(),
]
def check(m=1.E+4, use_jax=True, with_bs=False, with_log=True):
log = Log(f'result/logs/check.txt')
log(f'--> Computations | m={m:-7.1e}')
for bm in bm_all:
log('')
name = f'{bm.name}-{bm.d}D'
text = name + ' ' * max(0, 20-len(name)) + ' >>> '
i_opt, y_opt = protes_jax_fast(bm.f, bm.n, m, log=with_log)
text += f'XXX {y_opt:-9.2e} | '
#i_opt, y_opt = protes_jax(bm.f, bm.n, m, log=with_log)
#text += f'JAX {y_opt:-9.2e} | '
if with_bs:
for i, bs in enumerate(bs_all, 1):
bs.prep(bm.f, bm.n, m).optimize()
text += f'BS{i} {bs.y_opt:-9.2e} | '
log(text)
break
if __name__ == '__main__':
np.random.seed(42)
folder_ensure('result')
folder_ensure('result/logs')
check()