You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

61 lines
2.3 KiB

#!/usr/bin/env python3
from util import randomSAT
from util import kSAT
import argparse
import configparser
import os
def main():
parser = argparse.ArgumentParser()
parser.add_argument("-d", "--base_directory", help="the base directorey of the new dataset; should contain a dataset.config file", type=str)
parser.add_argument("-i", "--instances", help="number of random kSAT instances", type=int)
parser.add_argument("-v", "--variables", help="number of variables in ksat instances", type=int)
parser.add_argument("-c", "--clauses", help="number of clauses in ksat instances", type=int)
parser.add_argument("--variables_per_clause", help="variables per clause in ksat instances", type=int, default=3)
parser.add_argument("-o", "--output", help="output directory", type=str)
args = parser.parse_args()
baseDir = args.base_directory
if baseDir != None:
config = __readConfig(os.path.join(baseDir, "dataset.config"));
numberOfVariables = args.variables
if numberOfVariables == None:
numberOfVariables = int(input("Number of variables per instance: "))
numberOfClauses = args.clauses
if numberOfClauses == None:
numberOfClauses = int(input("Number of clauses per instance: "))
numberOfInstances = args.instances
if numberOfInstances == None:
numberOfInstances = int(input("Number of instances: "))
instanceDir = None
if "instance_dir" in config["STRUCTURE"]:
instanceDir = os.path.join(baseDir, config["STRUCTURE"]["instance_dir"])
elif args.output != None:
instanceDir = args.output
elif args.output == None:
instanceDir = str(input("output directory: "))
for i in range(numberOfInstances):
ksatInstance = randomSAT.generateRandomKSAT(numberOfClauses,
numberOfVariables,
args.variables_per_clause)
instanceFilePath = os.path.join(instanceDir, "instance_%d.dimacs" % (i))
ksatInstance.writeDIMACS(instanceFilePath)
def __readConfig(configFilePath):
config = configparser.ConfigParser()
if os.path.isfile(configFilePath):
config.read(configFilePath)
return config
if __name__ == "__main__":
main()