|
|
- #!/usr/bin/env python3
-
- import util.script as script
- import util.queries as queries
- import dimod
- import random
- import numpy as np
-
- from tqdm import tqdm
-
- def main():
- #instance_parameters()
- #wmis_results()
- #wmis_siman_results_alpha_num_of_assignments()
- wmis_qpu_results_alpha_num_of_assignments()
- #primitive_2_siman_results_alpha_num_of_assignments()
- #primitive_5_siman_results_alpha_num_of_assignments()
- #primitive_5_qpu_results_alpha_num_of_assignments()
- #primitive_8_siman_results_alpha_num_of_assignments()
- #wmis_2_qpu_results()
- #minisat_runs()
-
- #wmis_engergy()
- #wmis_2_engergy()
-
- def instance_parameters():
- edb = script.connect_to_experimetns_db()
- edb_cursor = edb.cursor()
-
- idb = script.connect_to_instance_pool()
-
- instances = queries.Instance_scope_query(idb)
- instances.query("c42_vLogistic_6")
-
- insert_row = ("INSERT INTO c42_vLogistic_6_instances "
- "(instance_id, "
- " number_of_clauses, "
- " number_of_variables) "
- "VALUES (%s, %s, %s)")
-
- for instance, instance_id in tqdm(instances):
- edb_cursor.execute(insert_row, (str(instance_id),
- int(instance.getNumberOfClauses()),
- int(instance.getNumberOfVariables())))
-
- edb.commit()
- edb_cursor.close()
- edb.close()
-
-
- def wmis_siman_results():
- db = script.connect_to_instance_pool()
-
- q = queries.WMIS_result_scope_query_raw(db)
- q.query("c45_v[5-45]_1", "wmis_siman_results")
-
- for i in range(2):
- result = q.__next__()
-
- sample_set = queries.read_raw_wmis_sample_set(result["data"])
-
- data = script.analyze_wmis_sample(sample_set.first)
-
- print(data)
-
- def wmis_siman_results_alpha_num_of_assignments():
- edb = script.connect_to_experimetns_db()
- edb_cursor = edb.cursor()
-
- idb = script.connect_to_instance_pool()
-
- q = queries.WMIS_result_scope_query_raw(idb)
- q.query("c42_vLogistic_6", "wmis_siman_results")
-
- insert_row = ("INSERT INTO c42_vLogistic_6_wmis_siman_results "
- "(result_id, "
- " run, "
- " instance_id, "
- " number_of_found_assignments, "
- " chain_break_fraction, "
- " num_occurrences, "
- " energy, "
- " satisfiable) "
- "VALUES (%s, %s, %s, %s, %s, %s, %s, %s) ")
-
- run = int(input("run: "))
- for result in tqdm(q):
- if "run" in result and result["run"] == run:
- #if result["run"] == run:
- sample_set = queries.read_raw_wmis_sample_set(result["data"])
-
- data = script.analyze_wmis_sample(sample_set.first)
-
- sat = queries.get_instance_by_id(idb["instances"], result["instance"])
-
- model = script.majority_vote_sample(sample_set.first.sample)
-
- isSatisfiable = sat.checkAssignment(model)
-
- edb_cursor.execute(insert_row, (str(result["_id"]),
- int(result["run"]),
- str(result["instance"]),
- int(data["number_of_assignments"]),
- float(data["chain_break_fraction"]),
- int(data["num_occurrences"]),
- int(data["energy"]),
- isSatisfiable))
-
- edb.commit()
- edb_cursor.close()
- edb.close()
-
-
- def primitive_2_siman_results_alpha_num_of_assignments():
- edb = script.connect_to_experimetns_db()
- edb_cursor = edb.cursor()
-
- idb = script.connect_to_instance_pool()
-
- q = queries.WMIS_result_scope_query_raw(idb)
- q.query("c42_vLogistic_6", "primitive_isings_2_siman_results")
-
- insert_row = ("INSERT INTO c42_vLogistic_6_primitive_2_siman_results "
- "(result_id, "
- " run, "
- " instance_id, "
- " chain_break_fraction, "
- " num_occurrences, "
- " energy, "
- " satisfiable) "
- "VALUES (%s, %s, %s, %s, %s, %s, %s) ")
-
-
- for result in tqdm(q):
- sample_set = queries.read_raw_primitive_ising_sample_set(result["data"])
-
- data = script.analyze_wmis_sample(sample_set.first)
-
- sat = queries.get_instance_by_id(idb["instances"], result["instance"])
-
- model = queries.extract_primitive_ising_model(sample_set.first.sample)
-
- isSatisfiable = sat.checkAssignment(model)
-
- edb_cursor.execute(insert_row, (str(result["_id"]),
- int(result["run"]),
- str(result["instance"]),
- float(data["chain_break_fraction"]),
- int(data["num_occurrences"]),
- int(data["energy"]),
- isSatisfiable))
-
- edb.commit()
- edb_cursor.close()
- edb.close()
-
-
- def primitive_5_siman_results_alpha_num_of_assignments():
- edb = script.connect_to_experimetns_db()
- edb_cursor = edb.cursor()
-
- idb = script.connect_to_instance_pool()
-
- q = queries.WMIS_result_scope_query_raw(idb)
- q.query("c42_vLogistic_6", "primitive_isigns_5_siman")
-
- insert_row = ("INSERT INTO c42_vLogistic_6_primitive_5_siman_results "
- "(result_id, "
- " run, "
- " instance_id, "
- " chain_break_fraction, "
- " num_occurrences, "
- " energy, "
- " satisfiable, "
- " num_conflicts, "
- " monte_carlo_steps) "
- "VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s) ")
-
-
- for result in tqdm(q):
- sample_set = queries.read_raw_primitive_ising_sample_set(result["data"])
-
- data = script.analyze_wmis_sample(sample_set.first)
-
- sat = queries.get_instance_by_id(idb["instances"], result["instance"])
-
- post_process_results = __post_process_prim_5_sample(sat, sample_set.first.sample)
-
- #print(post_process_results)
-
- edb_cursor.execute(insert_row, (str(result["_id"]),
- int(result["run"]),
- str(result["instance"]),
- float(data["chain_break_fraction"]),
- int(data["num_occurrences"]),
- int(data["energy"]),
- bool(post_process_results["satisfiable"]),
- int(len(post_process_results["conflicts"])),
- int(post_process_results["monte_carlo_steps"])))
-
- edb.commit()
- edb_cursor.close()
- edb.close()
-
- def primitive_5_qpu_results_alpha_num_of_assignments():
- edb = script.connect_to_experimetns_db()
- edb_cursor = edb.cursor()
-
- idb = script.connect_to_instance_pool()
-
- q = queries.WMIS_result_scope_query_raw(idb)
- q.query("c42_vLogistic_6", "primitive_isings_5_qpu")
-
- insert_row = ("INSERT INTO c42_vLogistic_6_primitive_5_qpu_results "
- "(result_id, "
- " run, "
- " instance_id, "
- " chain_break_fraction, "
- " num_occurrences, "
- " energy, "
- " satisfiable, "
- " num_conflicts, "
- " monte_carlo_steps, "
- " anneal_time) "
- "VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s) ")
-
-
- run = int(input("run: "))
-
- for result in tqdm(q):
- if True:
- #if result["run"] == run:
- sample_set = queries.read_raw_primitive_ising_sample_set(result["data"])
-
- data = script.analyze_wmis_sample(sample_set.first)
-
- sat = queries.get_instance_by_id(idb["instances"], result["instance"])
-
- post_process_results = __post_process_prim_5_sample(sat,
- sample_set.first.sample)
-
- anneal_time = result["data"]["info"]["timing"]["qpu_anneal_time_per_sample"]
- #print(post_process_results)
-
- edb_cursor.execute(insert_row, (str(result["_id"]),
- int(result["run"]),
- str(result["instance"]),
- float(data["chain_break_fraction"]),
- int(data["num_occurrences"]),
- int(data["energy"]),
- bool(post_process_results["satisfiable"]),
- int(len(post_process_results["conflicts"])),
- int(post_process_results["monte_carlo_steps"]),
- int(anneal_time)))
-
- edb.commit()
- edb_cursor.close()
- edb.close()
-
- def primitive_8_siman_results_alpha_num_of_assignments():
- edb = script.connect_to_experimetns_db()
- edb_cursor = edb.cursor()
-
- idb = script.connect_to_instance_pool()
-
- q = queries.WMIS_result_scope_query_raw(idb)
- q.query("c42_vLogistic_6", "wmis_4_qubos_siman")
-
- insert_row = ("INSERT INTO c42_vLogistic_6_wmis_4_siman_results "
- "(result_id, "
- " run, "
- " instance_id, "
- " chain_break_fraction, "
- " num_occurrences, "
- " energy, "
- " satisfiable) "
- "VALUES (%s, %s, %s, %s, %s, %s, %s) ")
-
-
- run = int(input("run: "))
-
- for result in tqdm(q):
- if result["run"] == run:
- sample_set = queries.read_raw_primitive_ising_sample_set(result["data"])
-
- data = script.analyze_wmis_sample(sample_set.first)
-
- sat = queries.get_instance_by_id(idb["instances"], result["instance"])
-
- post_process_results = __post_process_prim_5_sample(sat,
- sample_set.first.sample)
-
- #print(post_process_results)
-
- edb_cursor.execute(insert_row, (str(result["_id"]),
- int(result["run"]),
- str(result["instance"]),
- float(data["chain_break_fraction"]),
- int(data["num_occurrences"]),
- int(data["energy"]),
- bool(post_process_results["satisfiable"])))
-
- edb.commit()
- edb_cursor.close()
- edb.close()
-
- def wmis_2_qpu_results():
- edb = script.connect_to_experimetns_db()
- edb_cursor = edb.cursor()
-
- idb = script.connect_to_instance_pool()
-
- q = queries.WMIS_result_scope_query_raw(idb)
- q.query("c42_vLogistic_6", "wmis_2_qubos_2_qpu")
-
- insert_row = ("INSERT INTO c42_vLogistic_6_wmis_2_vertex_eq_edge_qpu_results "
- "(result_id, "
- " run, "
- " instance_id, "
- " chain_break_fraction, "
- " num_occurrences, "
- " energy, "
- " satisfiable, "
- " anneal_time, "
- " energy_reach, "
- " sample_size) "
- "VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s) ")
-
-
- run = int(input("run: "))
-
- for result in tqdm(q):
- if True:
- #if result["run"] == run:
- sample_set = queries.read_raw_primitive_ising_sample_set(result["data"])
-
- data = script.analyze_wmis_sample(sample_set.first)
-
- sat = queries.get_instance_by_id(idb["instances"], result["instance"])
-
- post_process_results = __post_process_prim_5_sample(sat,
- sample_set.first.sample)
-
- anneal_time = result["data"]["info"]["timing"]["qpu_anneal_time_per_sample"]
- #print(post_process_results)
-
- energy_reach = abs(sample_set.record["energy"].max() -
- sample_set.record["energy"].min())
- sample_size = np.sum(sample_set.record["num_occurrences"])
-
- edb_cursor.execute(insert_row, (str(result["_id"]),
- int(result["run"]),
- str(result["instance"]),
- float(data["chain_break_fraction"]),
- int(data["num_occurrences"]),
- int(data["energy"]),
- bool(post_process_results["satisfiable"]),
- int(anneal_time),
- int(energy_reach),
- int(sample_size)))
-
- edb.commit()
- edb_cursor.close()
- edb.close()
-
- def __post_process_prim_5_sample(sat, sample):
- post_process_results = {}
-
- assignments = {}
- vars = set()
-
- for node, energy in sample.items():
- if node[0] == "x":
- lit = int(node[1:])
-
- vars.add(abs(lit))
-
- assignments[lit] = energy
-
- conflicts = set()
- for var in vars:
- if var in assignments and -var in assignments:
- if assignments[var] == assignments[-var]:
- conflicts.add(var)
-
- model = [True for i in range(len(vars))]
-
- for var in vars:
- if var in assignments:
- model[var - 1] = True if assignments[var] == 1 else False
- elif -var in assignments:
- model[var - 1] = True if assignments[-var] == 0 else False
-
-
-
- #var_list = list(conflicts)
- #
- #monte_carlo_steps = 0
- #if len(conflicts) > 0:
- # for i in range(1000):
- # rand_var = random.choice(var_list)
- #
- # if sat.checkAssignment(model):
- # monte_carlo_steps
- # break
- #
- # model[rand_var - 1] = not model[rand_var - 1]
- #
- # monte_carlo_steps += 1
-
- post_process_results["conflicts"] = conflicts
- post_process_results["satisfiable"] = sat.checkAssignment(model)
- #post_process_results["monte_carlo_steps"] = monte_carlo_steps
-
- return post_process_results
-
- def wmis_qpu_results_alpha_num_of_assignments():
- edb = script.connect_to_experimetns_db()
- edb_cursor = edb.cursor()
-
- idb = script.connect_to_instance_pool()
-
- q = queries.WMIS_result_scope_query_raw(idb)
- q.query("c42_vLogistic_6", "wmis_qpu_results")
-
- insert_row = ("INSERT INTO c42_vLogistic_6_wmis_qpu_results "
- "(result_id, "
- " run, "
- " instance_id, "
- " number_of_found_assignments, "
- " chain_break_fraction, "
- " num_occurrences, "
- " energy, "
- " satisfiable, "
- " anneal_time, "
- " energy_reach, "
- " sample_size) "
- "VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) ")
-
- run = int(input("run: "))
- for result in tqdm(q):
- #if result["run"] == run:
- if True:
- sample_set = queries.read_raw_wmis_sample_set(result["data"])
-
- data = script.analyze_wmis_sample(sample_set.first)
-
- sat = queries.get_instance_by_id(idb["instances"], result["instance"])
-
- model = script.majority_vote_sample(sample_set.first.sample)
-
- isSatisfiable = sat.checkAssignment(model)
-
- anneal_time = result["data"]["info"]["timing"]["qpu_anneal_time_per_sample"]
-
- energy_reach = abs(sample_set.record["energy"].max() -
- sample_set.record["energy"].min())
-
- sample_size = np.sum(sample_set.record["num_occurrences"])
-
- edb_cursor.execute(insert_row, (str(result["_id"]),
- int(result["run"]),
- str(result["instance"]),
- int(data["number_of_assignments"]),
- float(data["chain_break_fraction"]),
- int(data["num_occurrences"]),
- int(data["energy"]),
- isSatisfiable,
- int(anneal_time),
- int(energy_reach),
- int(sample_size)))
-
- edb.commit()
- edb_cursor.close()
- edb.close()
-
- def wmis_engergy():
- edb = script.connect_to_experimetns_db()
- edb_cursor = edb.cursor()
-
- idb = script.connect_to_instance_pool()
-
- q = queries.WMIS_result_scope_query_raw(idb)
- q.query("c42_vLogistic_6", "wmis_qpu_results")
-
- insert_row = ("INSERT INTO c42_vLogistic_6_wmis_qpu_energy "
- "(result_id, "
- " sample_index, "
- " run, "
- " instance_id, "
- " energy, "
- " anneal_time, "
- " sample_size) "
- "VALUES (%s, %s, %s, %s, %s, %s, %s) ")
-
- run = int(input("run: "))
- for result in tqdm(q):
- #if result["run"] == run:
- if True:
- sample_set = queries.read_raw_wmis_sample_set(result["data"])
-
-
- anneal_time = result["data"]["info"]["timing"]["qpu_anneal_time_per_sample"]
-
- sample_size = np.sum(sample_set.record["num_occurrences"])
-
- count = 1
- for energy, in sample_set.data(fields=["energy"], sorted_by=("energy")):
-
- edb_cursor.execute(insert_row, (str(result["_id"]),
- int(count),
- int(result["run"]),
- str(result["instance"]),
- int(energy),
- int(anneal_time),
- int(sample_size)))
-
- count += 1
-
- edb.commit()
- edb_cursor.close()
- edb.close()
-
- def wmis_2_engergy():
- edb = script.connect_to_experimetns_db()
- edb_cursor = edb.cursor()
-
- idb = script.connect_to_instance_pool()
-
- q = queries.WMIS_result_scope_query_raw(idb)
- q.query("c42_vLogistic_6", "wmis_2_qubos_2_qpu")
-
- insert_row = ("INSERT INTO c42_vLogistic_6_wmis_2_vertex_eq_edge_qpu_energy "
- "(result_id, "
- " sample_index, "
- " run, "
- " instance_id, "
- " energy, "
- " anneal_time, "
- " sample_size) "
- "VALUES (%s, %s, %s, %s, %s, %s, %s) ")
-
- run = int(input("run: "))
- for result in tqdm(q):
- if result["run"] == run:
- #if True:
- sample_set = queries.read_raw_wmis_sample_set(result["data"])
-
-
- anneal_time = result["data"]["info"]["timing"]["qpu_anneal_time_per_sample"]
-
- sample_size = np.sum(sample_set.record["num_occurrences"])
-
- count = 1
- for energy, in sample_set.data(fields=["energy"], sorted_by=("energy")):
-
- edb_cursor.execute(insert_row, (str(result["_id"]),
- int(count),
- int(result["run"]),
- str(result["instance"]),
- int(energy),
- int(anneal_time),
- int(sample_size)))
-
- count += 1
-
- edb.commit()
- edb_cursor.close()
- edb.close()
-
- def minisat_runs():
- edb = script.connect_to_experimetns_db()
- edb_cursor = edb.cursor();
-
- idb = script.connect_to_instance_pool()
-
- runs = queries.Minisat_run_scope_query_raw(idb)
- runs.query("c42_vLogistic_6", "minisat_runs")
-
- insert_row = ("INSERT INTO c42_vLogistic_6_minisat_runs "
- "(run_id, "
- " instance_id, "
- " satisfiable) "
- "VALUES (%s, %s, %s) ")
-
- for run in tqdm(runs):
- data = script.analyde_minisat_run(run)
-
- edb_cursor.execute(insert_row, (str(run["_id"]),
- str(run["instance"]),
- int(data["satisfiable"])))
-
- edb.commit()
- edb_cursor.close()
- edb.close()
-
- def wmis_results():
- edb = script.connect_to_experimetns_db()
- edb_cursor = edb.cursor();
-
- idb = script.connect_to_instance_pool()
-
- q = queries.WMIS_result_scope_query_raw(idb)
- q.query("c42_v[5-84]_1", "wmis_qbsolv_results")
-
- for i in range(501):
- q.__next__()
-
- res = q.__next__()
-
- sample_set = queries.read_raw_wmis_sample_set(res["data"])
-
-
- model = script.majority_vote_sample(sample_set.first.sample)
-
- sat = queries.get_instance_by_id(idb["instances"], res["instance"])
-
- print(model)
-
- print(sat.getNumberOfVariables())
- print(sat.checkAssignment(model))
-
-
- if __name__ == "__main__":
- main()
|