Skip to main content

Two public adjudicators for the Tangled game

Project description

snowdrop-adjudicators

This contains two public adjudicators for the Tangled game, one using the Schrodinger equation and one using simulated annealing. The Schrodinger equation adjudicator matches the ground truth output of the quantum annealer for all problem instances up to the largest sizes I've been able to test (all the terminal states of all the X-Prize graphs except the Mutant C60 graph), whereas the simulated annealing solver, while enormously faster, makes deterministic adjudication errors as described in the X-Prize Phase 1 Submission document. The simulated annealing solver's parameters were chosen to give unbiased sampling of all classically degenerate ground states of the diagonal Ising model part of the Hamiltonian, which fails to accurately compute game scores for some terminal states due to not taking into account order-by-disorder effects.

Using these adjudicators

Both included adjudicators have parameters that you need to set. To see the minimum number and type of these for both, look at test_schrodinger.py and test_simulated_annealing.py which show how to set these parameters and how to use the adjudicators themselves. To see the full suite of settable parameters, look at the schrodinger.py and simulated_annealing.py files.

What will happen if I train an agent using these adjudicators?

If you use the Schrodinger adjudicator, your agent will be learning from the ground truth, but you will be limited to very small graphs, and training could take forever. If you want to go this route, you should enumerate all possible terminal states for your graph, use the Schrodinger adjudicator to adjudicate all of them, and store the results in a lookup table. You can then create a new lookup table adjudicator (see next section) which will then be very fast.

If you use the simulated annealing adjudicator, you will get very fast results, but they will be systematically wrong for some fraction of the terminal states. The more frustration in the ground states of your instance, the more potential there is for getting a wrong answer. If you train an agent using this adjudicator, it will learn from a corrupted reward signal and may perform poorly.

Building your own adjudicators

If you have an idea for how to spoof the quantum annealing hardware more effectively, for example using tensor networks, you can build your own adjudicator. Just follow the pattern in simulated_annealing.py. Subclass the Adjudicator base class, define the adjudicator's parameters and a setup method, and then define your adjudication method. Ensure that the adjudicate method takes a GameState instance as input and returns an AdjudicationResult object as output.

Important Note: If you want to enter an agent into the $10,000 Mutant $C_{60}$ prize challenge, using output of the D-Wave quantum annealing hardware as part of an adjudicator is strictly forbidden.

Running unit tests

There are two unit tests here, one per adjudicator. If you build a new adjudicator I strongly recommend following the unit test pattern here and adding the exact same type of test for your new adjudicator.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

snowdrop_adjudicators-0.0.5.tar.gz (27.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

snowdrop_adjudicators-0.0.5-py3-none-any.whl (30.1 kB view details)

Uploaded Python 3

File details

Details for the file snowdrop_adjudicators-0.0.5.tar.gz.

File metadata

  • Download URL: snowdrop_adjudicators-0.0.5.tar.gz
  • Upload date:
  • Size: 27.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.11.12 Windows/10

File hashes

Hashes for snowdrop_adjudicators-0.0.5.tar.gz
Algorithm Hash digest
SHA256 dbe0c2212be9569a6ed3f4344690c4f15b7e50efce1c0d527a1952eb925a8bad
MD5 eab8b9c542dc88e0935979ca9275bf4d
BLAKE2b-256 3b67b2d7f454c679377539ba097347f2d76a27ad51d97cd6ca30378deb0433d3

See more details on using hashes here.

File details

Details for the file snowdrop_adjudicators-0.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for snowdrop_adjudicators-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 562d38b80bc1dffe415a832de3286220471ea6be69be7c241fd8a238e1487e21
MD5 5d18eebb65bc518d8ea7f17c3d1764f4
BLAKE2b-256 3a251c42c7f2d46f431273d732c85959130b6b935d4b764b42ea877e5d146129

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page