Commit b5c5e0e8 authored by  tawada's avatar tawada

randomize variables and its indeces

parent a1d0df36
......@@ -8,6 +8,7 @@ import math
import re
import glob
import time
import random
if __name__ == '__main__':
import cv2 as cv # opencv
......@@ -359,7 +360,7 @@ def debug_satA(filename, Q, nodes, TF=None):
return A
def generate_sat(Q, WH=None):
def generate_sat(Q, WH=None, seed=0):
nodes = {}
cnfs = []
......@@ -395,6 +396,15 @@ def generate_sat(Q, WH=None):
for i in range(h):
for j in range(w):
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
for b in range(1,num_b+1):
cnf = {}
......@@ -649,7 +659,7 @@ def generate_sat(Q, WH=None):
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/Q003_10X10_b5_l5.txt')
#Q = readQ('./adc2019problem/Q004_10X10_b8_l9.txt')
......@@ -663,10 +673,10 @@ def main():
#Q = readQ('./adc2019problem/Q014_10X10_b9_l9.txt')
#Q = readQ('./adc2019problem/Q015_10X10_b8_l9.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()
nodes,cnfs = generate_sat(Q, WH=None)
nodes,cnfs = generate_sat(Q, WH=None, seed=0)
print_cnf(nodes, cnfs)
os.system('minisat p.txt a.txt')
A = read_satA('a.txt', Q, nodes)
......
import argparse
import os
import subprocess
import time
if __name__ == '__main__':
import solver
......@@ -31,6 +32,7 @@ def solve(params):
problem = params['problem']
timeout = params['timeout']
seed = params.get('seed', int(time.time))
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