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.

71 lines
2.3 KiB

  1. # Bachelorarbeit Ergebnisse reproduzieren
  2. ~~~bash
  3. git clone --recursive http://sargas.org:3000/QA_SAT/BA_Reproduzierbarkeit_Anleitung.git
  4. ~~~
  5. ## Setup
  6. Zuerst muss das virtual environment für Python eingerichtet werden. Gehen sie hierfür in das Hauptverzeichnis des Projekts und führen
  7. ~~~bash
  8. pipenv install
  9. ~~~
  10. aus. Anschließend muss noch ein kernel für jupyter erstellt werden, hierzu führen sie
  11. ~~~bash
  12. python -m ipykernel install --user --name=BA_Reproduzierbarkeit_Anleitung
  13. ~~~
  14. aus. Anschließend kann das virtual environment mit
  15. ~~~bash
  16. pipenv shell
  17. ~~~
  18. aktiviert werden.
  19. ## Datenbanken einrichten
  20. 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.
  21. ~~~ini
  22. [INSTANCE_POOL]
  23. user = ...
  24. pw = ...
  25. url = ...
  26. port = ...
  27. database = ...
  28. [EXPERIMENT_DB]
  29. user = ...
  30. pw = ...
  31. url = ...
  32. port = ...
  33. database = ...
  34. ~~~
  35. Bei **[INSTANCE_POOL]** handelt es sich um die MongoDB Datenbank und bei **[EXPERIMENT_DB]** um die MySQL Datenbank.
  36. ## Datensatz generieren
  37. 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
  38. ~~~python
  39. from qubo_lab.util import script
  40. from qubo_lab.util import random_instance_pool as rip
  41. instance_db = script.connect_to_instance_pool()
  42. experiment_db = script.connect_to_experimetns_db()
  43. script.create_experiment_scope(instance_db, "my description", "scope_name")
  44. logistic_variable_distr_params =
  45. {
  46. number_of_clauses: 42,
  47. min_variables: 5,
  48. max_variables: 84,
  49. alpha_point_of_interest: 4.2,
  50. steepness: 1.4
  51. }
  52. number_of_instances = 250
  53. instance_params = rip.Instance_parameters(42, 5, 3);
  54. pool = rip.create_random_logistic_pool(logistic_variable_distr_params, 250, instance_params)
  55. for instance in pool:
  56. instacne_id = script.write_instance_to_pool_db(instance_db, instance)
  57. script.add_instance_to_experiment_scope(instance_db, "scope_name", instacne_id)
  58. ~~~