-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathportfolio.py
61 lines (53 loc) · 1.84 KB
/
portfolio.py
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
from algorithm.portfolio import Portfolio
from algorithm.portfolio.schema import Elitism, MuPlusLambda
from algorithm.module.limit import WallTime
from algorithm.module.evolution.mutation import Doer
from algorithm.module.evolution.selection import Roulette
from algorithm.module.evolution.crossover import TwoPoint
from method.impl import Method
from method.module.sampling import Const
from function.impl import UPGuessAndDetermine
from function.module.measure.impl import Propagations
from function.module.solver.impl.pysat import Glucose3
from executor.impl import ProcessExecutor
from executor.module.shaping.impl import Chunks
from instance.impl import Instance
from instance.typings.cnf import CNF
from instance.typings.variables import Interval
from output.impl import JSONOut
if __name__ == '__main__':
algorithm = Portfolio(
schemas=[
MuPlusLambda(
mu=1, lmbda=1,
mutation=Doer(),
selection=Roulette(),
),
Elitism(
size=8, elites=2,
mutation=Doer(),
selection=Roulette(),
crossover=TwoPoint(),
)
],
limit=WallTime('00:05:00'),
method=Method(
function=UPGuessAndDetermine(
max_n=30,
solver=Glucose3(),
measure=Propagations(),
),
executor=ProcessExecutor(
workers=4,
shaping=Chunks(chunk_rate=4)
),
sampling=Const(count=100)
),
instance=Instance(
input_set=Interval(start=1, length=3244),
cnf=CNF(path='sort/pvs_4_7.cnf'),
),
output=JSONOut(path='test/pvs/4_7'),
)
backdoor = algorithm.instance.get_backdoor()
solution = algorithm.start_from_backdoors(backdoor)