Tom 6778628e24 | 5 years ago | |
---|---|---|
qubo_lab@34fa181195 | 5 years ago | |
.gitignore | 5 years ago | |
.gitmodules | 5 years ago | |
Pipfile | 5 years ago | |
Pipfile.lock | 5 years ago | |
README.md | 5 years ago |
git clone --recursive http://sargas.org:3000/QA_SAT/BA_Reproduzierbarkeit_Anleitung.git
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.
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.
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)