From 95222e280849589c8e9f63d4da2ecf2e516cca71 Mon Sep 17 00:00:00 2001 From: Tom Date: Mon, 12 Aug 2019 22:52:19 +0200 Subject: [PATCH] final --- README.md | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index af45018..f311735 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@ git clone --recursive http://sargas.org:3000/QA_SAT/BA_Reproduzierbarkeit_Anleit ~~~ ## Setup -Zuerst muss das virtual environment für Python eingerichtet werden. Gehen sie hierfür in das Hauptverzeichnis des Projekts und führen +Zuerst muss ein virtual environment für Python eingerichtet werden. Gehen Sie hierfür in das Hauptverzeichnis des Projekts und führen Sie ~~~bash pipenv install ~~~ -aus. Anschließend muss noch ein kernel für jupyter erstellt werden, hierzu führen sie +aus. Anschließend muss noch ein kernel für jupyter erstellt werden, hierzu führen Sie ~~~bash python -m ipykernel install --user --name=BA_Reproduzierbarkeit_Anleitung ~~~ @@ -22,10 +22,10 @@ pipenv shell aktiviert werden. ## Kompilieren -Führen sie folgende Anweisungen aus, um die notwendigen libraries zu kompilieren. +Führen Sie folgende Anweisungen aus, um die notwendigen libraries und Tools zu kompilieren. ~~~bash -qubo_lab/SconsLocal/scons.py -C ./qubo_lab/ --init +./qubo_lab/SconsLocal/scons.py -C ./qubo_lab/ --init ~~~ ~~~bash @@ -33,7 +33,7 @@ qubo_lab/SconsLocal/scons.py -C ./qubo_lab/ --init ~~~ ## 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. +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. ~~~ini [INSTANCE_POOL] @@ -54,10 +54,10 @@ database = ... Bei **[INSTANCE_POOL]** handelt es sich um die MongoDB Datenbank und bei **[EXPERIMENT_DB]** um die MySQL Datenbank. ## Verbindung zum D-Wave Solver -Der Zugriff auf einen D-Wave Solver setzt ein **dwave.config** file im Hauptverzeichnis voraus. Weitere Informationen hierzu finden sie in der offiziellen [Dokumentation](https://docs.ocean.dwavesys.com/projects/cloud-client/en/latest/index.html) des D-Wave Cloud Clients : +Der Zugriff auf einen D-Wave Solver setzt ein **dwave.config** file im Hauptverzeichnis voraus. Weitere Informationen hierzu finden Sie in der offiziellen [Dokumentation](https://docs.ocean.dwavesys.com/projects/cloud-client/en/latest/index.html) des D-Wave Cloud Clients : ## 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 +Ein k-SAT-Instanzen Datensatz mit einer fixer Klauselanzahl und logistisch verteilen Variablenanzahlen kann mit folgendem Python script erzeugt werden. ~~~python from qubo_lab.util import script @@ -102,7 +102,7 @@ CREATE TABLE `instances` ( ) ENGINE=InnoDB DEFAULT CHARSET=latin1; ~~~ -Anschließend können sie mit diesem Python code extrahiert werden. +Anschließend können Sie mit diesem Python code extrahiert werden. ~~~python from qubo_lab.util import script @@ -111,7 +111,7 @@ instance_db = script.connect_to_instance_pool() script.extract_instance_parameters() ~~~ -Sie werden nun nach einigen dingen gefragt, folgende Tabelle erklärt die Bedeutungen der Abfragen: +Sie werden nun nach einigen Dingen gefragt, folgende Tabelle erklärt die Bedeutungen der Abfragen: Abfrage| Erklärung ----------|--------------- @@ -120,11 +120,11 @@ table name: | Name der gerade erstellten Tabelle ("instances") ## Minisat ausführen Als nächstes muss der Minisat Solver auf dem gerade generierten Datensatz gelaufen lassen werden. -Hierzu führen sie vom Hauptverzeichnis +Hierzu führen Sie vom Hauptverzeichnis ~~~bash ./qubo_lab/build/release/runMinisat ~~~ -aus. Wenn sie nach dem Datenbanken Konfigurationsfile gefragt werden, geben sie das oben beschriebene **database.config** file an. Als "Experiment scope" geben sie den **scope_name** aus dem Abschnitt *Datensatz generieren* an. +aus. Wenn Sie nach dem Datenbanken Konfigurationsfile gefragt werden, geben Sie das oben beschriebene **database.config** file an. Als "Experiment scope" geben Sie den **scope_name** aus dem Abschnitt *"Datensatz generieren"* an. Anschließend müssen die Ergebnisse des Minisat Solvers extrahiert werden. Hierfür muss eine Tabelle in der Experiment Datenbank angelegt werden: ~~~sql @@ -136,7 +136,7 @@ CREATE TABLE `minisat_runs` ( ) ENGINE=InnoDB DEFAULT CHARSET=latin1; ~~~ -Ist diese Tabelle angelegt, können die Ergebnisse extrahiert werden führen sie hierzu folgenden Python code aus. +Ist diese Tabelle angelegt, können die Ergebnisse extrahiert werden, führen Sie hierzu folgenden Python code aus. ~~~python from qubo_lab.util import data_extraction @@ -179,12 +179,12 @@ qubos.query("scope_name") script.find_embeddings_for_scope(instance_db, solver_graph, qubos) ~~~ -Führen sie (**find_embeddings_for_scope(...)**) solange aus bis alle für alle qubos ein Embedding gefunden wurde. Sollte dies nicht möglich sein, sind die QUBOs zu groß für den Hardwaregraphen. -Nun können die QUBOs dem D-Wave Solver übergeben werden. Führen sie hierzu das script +Führen Sie (**find_embeddings_for_scope(...)**) solange aus bis alle für alle QUBOs ein Embedding gefunden wurde. Sollte dies nicht möglich sein, sind die QUBOs zu groß für den Hardwaregraphen. +Nun können die QUBOs dem D-Wave Solver übergeben werden. Führen Sie hierzu ~~~bash ./qubo_lab/run_sampler_on_scope.py ~~~ -aus. Folgende Tabelle erklärt wieder die Abfragen des scripts: +aus. Folgende Tabelle erklärt wieder die Abfragen des Scripts: Abfrage | Erklärung --------- |-------------- @@ -216,7 +216,7 @@ CREATE TABLE `wmis_qpu_results` ( ) ENGINE=InnoDB DEFAULT CHARSET=latin1; ~~~ -um anschließend daten aus den Ergebnissen des D-Wave Solvers zu extrahieren: +um anschließend Daten aus den Ergebnissen des D-Wave Solvers zu extrahieren: ~~~python from qubo_lab.util import script @@ -261,15 +261,15 @@ qubos.query("scope_name") script.find_embeddings_for_scope(instance_db, solver_graph, qubos) ~~~ -Nun können sie wieder den D-Wave Sampler über die Instanzen laufen lassen. +Nun können Sie wieder den D-Wave Sampler über die Instanzen laufen lassen. ~~~bash ./qubo_lab/run_sampler_on_scope.py ~~~ -Achten sie darauf bei der Abfrage der *"Ising/qubo collection"* diesmal "wmis_2_qubos" anzugeben. +Achten Sie darauf bei der Abfrage der *"Ising/qubo collection"* diesmal "wmis_2_qubos" anzugeben. -Nun erstellen sie erneut eine Tabelle für die zu extrahierenden Daten. +Nun erstellen Sie erneut eine Tabelle für die zu extrahierenden Daten. ~~~sql CREATE TABLE `wmis_2_qpu_results` ( `result_id` char(24) NOT NULL DEFAULT '', @@ -302,3 +302,7 @@ Abfrage| Erklärung scope: | Name des Experiment-Scopes (**scope_name**) result collection: | "wmis_qubos" table name: | Name der gerade erstellten Tabelle ("wmis_2_qpu_results") + +## Auswertung + +Die extrahierten Daten befinden sich nun in zur Auswertung geeigneter Form in der MySQL Datenbank. Für weitere Erläuterungen zur Auswertung wird auf die Bachelorarbeit verwiesen.