#!/usr/bin/env python3 import randomSAT 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()