Commit b5c5e0e8 authored by  tawada's avatar tawada

randomize variables and its indeces

parent a1d0df36
...@@ -8,6 +8,7 @@ import math ...@@ -8,6 +8,7 @@ import math
import re import re
import glob import glob
import time import time
import random
if __name__ == '__main__': if __name__ == '__main__':
import cv2 as cv # opencv import cv2 as cv # opencv
...@@ -359,7 +360,7 @@ def debug_satA(filename, Q, nodes, TF=None): ...@@ -359,7 +360,7 @@ def debug_satA(filename, Q, nodes, TF=None):
return A return A
def generate_sat(Q, WH=None): def generate_sat(Q, WH=None, seed=0):
nodes = {} nodes = {}
cnfs = [] cnfs = []
...@@ -395,6 +396,15 @@ def generate_sat(Q, WH=None): ...@@ -395,6 +396,15 @@ def generate_sat(Q, WH=None):
for i in range(h): for i in range(h):
for j in range(w): for j in range(w):
nodes[f'l{l}_{j}_{i}'] = len(nodes) + 1 nodes[f'l{l}_{j}_{i}'] = len(nodes) + 1
# minisatが決定的に動く?ので変数の番号をランダムに割り当て
keys = list(nodes.keys())
values = list(nodes.values())
random.seed(seed)
np.random.seed(seed)
random.shuffle(values)
nodes = dict(zip(keys, values))
# b one-hot # b one-hot
for b in range(1,num_b+1): for b in range(1,num_b+1):
cnf = {} cnf = {}
...@@ -649,7 +659,7 @@ def generate_sat(Q, WH=None): ...@@ -649,7 +659,7 @@ def generate_sat(Q, WH=None):
def main(): def main():
#Q = readQ('./adc2019problem/Q001_10X10_b8_l11.txt') Q = readQ('./adc2019problem/Q001_10X10_b8_l11.txt')
#Q = readQ('./adc2019problem/Q002_10X10_b8_l9.txt') #Q = readQ('./adc2019problem/Q002_10X10_b8_l9.txt')
#Q = readQ('./adc2019problem/Q003_10X10_b5_l5.txt') #Q = readQ('./adc2019problem/Q003_10X10_b5_l5.txt')
#Q = readQ('./adc2019problem/Q004_10X10_b8_l9.txt') #Q = readQ('./adc2019problem/Q004_10X10_b8_l9.txt')
...@@ -663,10 +673,10 @@ def main(): ...@@ -663,10 +673,10 @@ def main():
#Q = readQ('./adc2019problem/Q014_10X10_b9_l9.txt') #Q = readQ('./adc2019problem/Q014_10X10_b9_l9.txt')
#Q = readQ('./adc2019problem/Q015_10X10_b8_l9.txt') #Q = readQ('./adc2019problem/Q015_10X10_b8_l9.txt')
#Q = readQ('./adc2019problem/QRAND327_20X20_b20_l15.txt') #Q = readQ('./adc2019problem/QRAND327_20X20_b20_l15.txt')
Q = readQ('./adc2019problem/QRAND368_10X10_b10_l15.txt') #Q = readQ('./adc2019problem/QRAND368_10X10_b10_l15.txt')
#start_time = time.time() #start_time = time.time()
nodes,cnfs = generate_sat(Q, WH=None) nodes,cnfs = generate_sat(Q, WH=None, seed=0)
print_cnf(nodes, cnfs) print_cnf(nodes, cnfs)
os.system('minisat p.txt a.txt') os.system('minisat p.txt a.txt')
A = read_satA('a.txt', Q, nodes) A = read_satA('a.txt', Q, nodes)
......
import argparse import argparse
import os import os
import subprocess import subprocess
import time
if __name__ == '__main__': if __name__ == '__main__':
import solver import solver
...@@ -31,6 +32,7 @@ def solve(params): ...@@ -31,6 +32,7 @@ def solve(params):
problem = params['problem'] problem = params['problem']
timeout = params['timeout'] timeout = params['timeout']
seed = params.get('seed', int(time.time))
basedir = os.path.abspath(os.path.dirname(__file__)) basedir = os.path.abspath(os.path.dirname(__file__))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment