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.
Tom 2800ded11b worked on readme 5 years ago
qubo_lab@f1c63793c7 added qubo_lab 5 years ago
.gitignore pipenv support 5 years ago
.gitmodules added qubo_lab 5 years ago
Pipfile fixed pipfile / readme 5 years ago
Pipfile.lock pipenv support 5 years ago
README.md worked on readme 5 years ago

README.md

Bachelorarbeit Ergebnisse reproduzieren

git clone --recursive http://sargas.org:3000/QA_SAT/BA_Reproduzierbarkeit_Anleitung.git

Setup

Zuerst muss das virtual environment für Python eingerichtet werden. Gehen sie hierfür in das Hauptverzeichnis des Projekts und führen

pipenv install

aus. Anschließend muss noch ein kernel für jupyter erstellt werden, hierzu führen sie

python -m ipykernel install --user --name=BA_Reproduzierbarkeit_Anleitung

aus. Anschließend kann das virtual environment mit

pipenv shell

aktiviert werden.

Datenbanken einrichten

Es werden zwei Datenbanken benötigt, eine MySQL und eine MongoDB Datenbank. In der MongoDB Datenbank werden Objekte wie SAT-Instanzen, QUBOS, oder D-Wave SampleSets gespeichert. Die MySQL Datenbank wird dazu verwendet, um Daten aus diesen Objekten zu extrahieren und diese anschließend zu untersuchen. Damit die Datenbanken genutzt werden können muss im Hauptverzeichnis ein File namens database.config angelegt werden, welches folgende Struktur aufzuweisen hat.

[INSTANCE_POOL]
user = ...
pw = ...
url = ...
port = ...
database = ...

[EXPERIMENT_DB]
user = ...
pw = ...
url = ...
port = ...
database = ...

Bei [INSTANCE_POOL] handelt es sich um die MongoDB Datenbank und bei [EXPERIMENT_DB] um die MySQL Datenbank.

Datensatz generieren

Ein k-SAT-Instanzen Datensatz mit einer fixer Klauselanzahl und logistisch verteilen Variablenanzahlen kann mit folgendem Python script erzeugt werden. Rufen sie hierzu einfach den interaktiven Modus von Python auf

from qubo_lab.util import script
from qubo_lab.util import random_instance_pool as rip

instance_db = script.connect_to_instance_pool()
experiment_db = script.connect_to_experimetns_db()

script.create_experiment_scope(instance_db, "my description", "scope_name")

logistic_variable_distr_params = 
	{
	number_of_clauses: 42,
	min_variables: 5,
	max_variables: 84,
	alpha_point_of_interest: 4.2,
	steepness: 1.4
	}
	
number_of_instances = 250

instance_params = rip.Instance_parameters(42, 5, 3);

pool = rip.create_random_logistic_pool(logistic_variable_distr_params, 250, instance_params)

for instance in pool:
	instacne_id = script.write_instance_to_pool_db(instance_db, instance)
	script.add_instance_to_experiment_scope(instance_db, "scope_name", instacne_id)