anl-agents 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. anl_agents-0.1.0/.gitignore +119 -0
  2. anl_agents-0.1.0/.pre-commit-config.yaml +42 -0
  3. anl_agents-0.1.0/PKG-INFO +72 -0
  4. anl_agents-0.1.0/README.md +62 -0
  5. anl_agents-0.1.0/pyproject.toml +15 -0
  6. anl_agents-0.1.0/pyrightconfig.json +8 -0
  7. anl_agents-0.1.0/src/anl_agents/__init__.py +4 -0
  8. anl_agents-0.1.0/src/anl_agents/__main__.py +0 -0
  9. anl_agents-0.1.0/src/anl_agents/agents.py +307 -0
  10. anl_agents-0.1.0/src/anl_agents/anl2024/__init__.py +47 -0
  11. anl_agents-0.1.0/src/anl_agents/anl2024/antiagents/__init__.py +15 -0
  12. anl_agents-0.1.0/src/anl_agents/anl2024/antiagents/antiagent.py +243 -0
  13. anl_agents-0.1.0/src/anl_agents/anl2024/antiagents/report.pdf +0 -0
  14. anl_agents-0.1.0/src/anl_agents/anl2024/antiagents/requirements.txt +4 -0
  15. anl_agents-0.1.0/src/anl_agents/anl2024/carc/__init__.py +9 -0
  16. anl_agents-0.1.0/src/anl_agents/anl2024/carc/carcagent.py +183 -0
  17. anl_agents-0.1.0/src/anl_agents/anl2024/carc/report.pdf +0 -0
  18. anl_agents-0.1.0/src/anl_agents/anl2024/susumu/README.md +74 -0
  19. anl_agents-0.1.0/src/anl_agents/anl2024/susumu/__init__.py +10 -0
  20. anl_agents-0.1.0/src/anl_agents/anl2024/susumu/helpers/__init__.py +0 -0
  21. anl_agents-0.1.0/src/anl_agents/anl2024/susumu/helpers/example.py +136 -0
  22. anl_agents-0.1.0/src/anl_agents/anl2024/susumu/helpers/runner.py +95 -0
  23. anl_agents-0.1.0/src/anl_agents/anl2024/susumu/nayesian.py +165 -0
  24. anl_agents-0.1.0/src/anl_agents/anl2024/susumu/nayesian2.py +373 -0
  25. anl_agents-0.1.0/src/anl_agents/anl2024/susumu/report.pdf +0 -0
  26. anl_agents-0.1.0/src/anl_agents/anl2024/takafam/__init__.py +9 -0
  27. anl_agents-0.1.0/src/anl_agents/anl2024/takafam/helpers/__init__.py +0 -0
  28. anl_agents-0.1.0/src/anl_agents/anl2024/takafam/helpers/runner.py +79 -0
  29. anl_agents-0.1.0/src/anl_agents/anl2024/takafam/report.pdf +0 -0
  30. anl_agents-0.1.0/src/anl_agents/anl2024/takafam/requirements.txt +204 -0
  31. anl_agents-0.1.0/src/anl_agents/anl2024/takafam/shochan.py +2879 -0
  32. anl_agents-0.1.0/src/anl_agents/anl2024/team_123/__init__.py +9 -0
  33. anl_agents-0.1.0/src/anl_agents/anl2024/team_123/base.py +50 -0
  34. anl_agents-0.1.0/src/anl_agents/anl2024/team_123/helpers/__init__.py +0 -0
  35. anl_agents-0.1.0/src/anl_agents/anl2024/team_123/helpers/example.py +136 -0
  36. anl_agents-0.1.0/src/anl_agents/anl2024/team_123/helpers/runner.py +104 -0
  37. anl_agents-0.1.0/src/anl_agents/anl2024/team_123/nyan.py +202 -0
  38. anl_agents-0.1.0/src/anl_agents/anl2024/team_123/report.pdf +0 -0
  39. anl_agents-0.1.0/src/anl_agents/anl2024/team_182/__init__.py +9 -0
  40. anl_agents-0.1.0/src/anl_agents/anl2024/team_182/missg.py +508 -0
  41. anl_agents-0.1.0/src/anl_agents/anl2024/team_186/__init__.py +10 -0
  42. anl_agents-0.1.0/src/anl_agents/anl2024/team_186/helpers/__init__.py +0 -0
  43. anl_agents-0.1.0/src/anl_agents/anl2024/team_186/helpers/example.py +136 -0
  44. anl_agents-0.1.0/src/anl_agents/anl2024/team_186/helpers/runner.py +95 -0
  45. anl_agents-0.1.0/src/anl_agents/anl2024/team_186/ilan.py +113 -0
  46. anl_agents-0.1.0/src/anl_agents/anl2024/team_186/myagent.py +75 -0
  47. anl_agents-0.1.0/src/anl_agents/anl2024/team_186/report.pdf +0 -0
  48. anl_agents-0.1.0/src/anl_agents/anl2024/team_191/README.md +71 -0
  49. anl_agents-0.1.0/src/anl_agents/anl2024/team_191/__init__.py +10 -0
  50. anl_agents-0.1.0/src/anl_agents/anl2024/team_191/func.py +66 -0
  51. anl_agents-0.1.0/src/anl_agents/anl2024/team_191/helpers/__init__.py +0 -0
  52. anl_agents-0.1.0/src/anl_agents/anl2024/team_191/helpers/runner.py +85 -0
  53. anl_agents-0.1.0/src/anl_agents/anl2024/team_191/inegotiator.py +775 -0
  54. anl_agents-0.1.0/src/anl_agents/anl2024/team_191/others.py +756 -0
  55. anl_agents-0.1.0/src/anl_agents/anl2024/team_191/requirements.txt +201 -0
  56. anl_agents-0.1.0/src/anl_agents/anl2024/team_199/__init__.py +9 -0
  57. anl_agents-0.1.0/src/anl_agents/anl2024/team_199/hard_chaos.py +108 -0
  58. anl_agents-0.1.0/src/anl_agents/anl2024/team_199/report.pdf +0 -0
  59. anl_agents-0.1.0/src/anl_agents/anl2024/team_205/__init__.py +9 -0
  60. anl_agents-0.1.0/src/anl_agents/anl2024/team_205/helpers/__init__.py +0 -0
  61. anl_agents-0.1.0/src/anl_agents/anl2024/team_205/helpers/example.py +136 -0
  62. anl_agents-0.1.0/src/anl_agents/anl2024/team_205/helpers/runner.py +95 -0
  63. anl_agents-0.1.0/src/anl_agents/anl2024/team_205/kosagent.py +195 -0
  64. anl_agents-0.1.0/src/anl_agents/anl2024/team_205/report.pdf +0 -0
  65. anl_agents-0.1.0/src/anl_agents/anl2024/team_209/__init__.py +9 -0
  66. anl_agents-0.1.0/src/anl_agents/anl2024/team_209/acceptance_logic.py +71 -0
  67. anl_agents-0.1.0/src/anl_agents/anl2024/team_209/bargain_bot.py +145 -0
  68. anl_agents-0.1.0/src/anl_agents/anl2024/team_209/bidding_strategy.py +287 -0
  69. anl_agents-0.1.0/src/anl_agents/anl2024/team_209/helpers/__init__.py +0 -0
  70. anl_agents-0.1.0/src/anl_agents/anl2024/team_209/helpers/config.py +99 -0
  71. anl_agents-0.1.0/src/anl_agents/anl2024/team_209/opponent_model.py +256 -0
  72. anl_agents-0.1.0/src/anl_agents/anl2024/team_232/__init__.py +9 -0
  73. anl_agents-0.1.0/src/anl_agents/anl2024/team_232/helpers/__init__.py +0 -0
  74. anl_agents-0.1.0/src/anl_agents/anl2024/team_232/helpers/runner.py +79 -0
  75. anl_agents-0.1.0/src/anl_agents/anl2024/team_232/report.pdf +0 -0
  76. anl_agents-0.1.0/src/anl_agents/anl2024/team_232/tak.py +314 -0
  77. anl_agents-0.1.0/src/anl_agents/anl2024/team_234/__init__.py +9 -0
  78. anl_agents-0.1.0/src/anl_agents/anl2024/team_234/ardabot.py +178 -0
  79. anl_agents-0.1.0/src/anl_agents/anl2024/team_234/helpers/__init__.py +0 -0
  80. anl_agents-0.1.0/src/anl_agents/anl2024/team_234/helpers/runner.py +79 -0
  81. anl_agents-0.1.0/src/anl_agents/anl2024/team_234/report.pdf +0 -0
  82. anl_agents-0.1.0/src/anl_agents/anl2024/team_235/__init__.py +9 -0
  83. anl_agents-0.1.0/src/anl_agents/anl2024/team_235/group6.py +86 -0
  84. anl_agents-0.1.0/src/anl_agents/anl2024/team_235/helpers/__init__.py +0 -0
  85. anl_agents-0.1.0/src/anl_agents/anl2024/team_235/helpers/example.py +136 -0
  86. anl_agents-0.1.0/src/anl_agents/anl2024/team_235/helpers/runner.py +97 -0
  87. anl_agents-0.1.0/src/anl_agents/anl2024/team_235/report.pdf +0 -0
  88. anl_agents-0.1.0/src/anl_agents/anl2024/team_235/requirements.txt +0 -0
  89. anl_agents-0.1.0/src/anl_agents/anl2024/team_236/__init__.py +9 -0
  90. anl_agents-0.1.0/src/anl_agents/anl2024/team_236/group7.py +308 -0
  91. anl_agents-0.1.0/src/anl_agents/anl2024/team_236/helpers/__init__.py +0 -0
  92. anl_agents-0.1.0/src/anl_agents/anl2024/team_236/helpers/runner.py +79 -0
  93. anl_agents-0.1.0/src/anl_agents/anl2024/team_236/report.pdf +0 -0
  94. anl_agents-0.1.0/src/anl_agents/anl2024/team_240/__init__.py +9 -0
  95. anl_agents-0.1.0/src/anl_agents/anl2024/team_240/bidbot.py +278 -0
  96. anl_agents-0.1.0/src/anl_agents/anl2024/team_240/helpers/__init__.py +0 -0
  97. anl_agents-0.1.0/src/anl_agents/anl2024/team_240/helpers/runner.py +79 -0
  98. anl_agents-0.1.0/src/anl_agents/anl2024/team_240/report.pdf +0 -0
  99. anl_agents-0.1.0/src/anl_agents/anl2024/team_moto/__init__.py +9 -0
  100. anl_agents-0.1.0/src/anl_agents/anl2024/team_moto/helpers/__init__.py +0 -0
  101. anl_agents-0.1.0/src/anl_agents/anl2024/team_moto/helpers/runner.py +96 -0
  102. anl_agents-0.1.0/src/anl_agents/anl2024/team_moto/requirements.txt +159 -0
  103. anl_agents-0.1.0/src/anl_agents/anl2024/team_moto/uoagent.py +257 -0
  104. anl_agents-0.1.0/src/anl_agents/anl2024/team_renting/ReservationValuePredictor.py +164 -0
  105. anl_agents-0.1.0/src/anl_agents/anl2024/team_renting/__init__.py +9 -0
  106. anl_agents-0.1.0/src/anl_agents/anl2024/team_renting/model/__init__.py +1 -0
  107. anl_agents-0.1.0/src/anl_agents/anl2024/team_renting/model/model1-v4_features_scaler.joblib +0 -0
  108. anl_agents-0.1.0/src/anl_agents/anl2024/team_renting/model/model1-v4_history_scaler.joblib +0 -0
  109. anl_agents-0.1.0/src/anl_agents/anl2024/team_renting/model/model1-v4_phase1.keras +0 -0
  110. anl_agents-0.1.0/src/anl_agents/anl2024/team_renting/model/model1-v4_phase2.keras +0 -0
  111. anl_agents-0.1.0/src/anl_agents/anl2024/team_renting/renting2024.py +951 -0
  112. anl_agents-0.1.0/src/anl_agents/anl2024/team_renting/report.pdf +0 -0
  113. anl_agents-0.1.0/src/anl_agents/anl2024/team_twistin/__init__.py +9 -0
  114. anl_agents-0.1.0/src/anl_agents/anl2024/team_twistin/group5.py +573 -0
  115. anl_agents-0.1.0/src/anl_agents/anl2024/team_twistin/helpers/__init__.py +0 -0
  116. anl_agents-0.1.0/src/anl_agents/anl2024/team_twistin/helpers/runner.py +90 -0
  117. anl_agents-0.1.0/src/anl_agents/anl2024/team_twistin/report.pdf +0 -0
  118. anl_agents-0.1.0/src/anl_agents/anl2024/teamkb/__init__.py +9 -0
  119. anl_agents-0.1.0/src/anl_agents/anl2024/teamkb/agentkb.py +309 -0
  120. anl_agents-0.1.0/src/anl_agents/anl2024/teamkb/helpers/__init__.py +0 -0
  121. anl_agents-0.1.0/src/anl_agents/anl2024/teamkb/helpers/example.py +135 -0
  122. anl_agents-0.1.0/src/anl_agents/anl2024/teamkb/helpers/runner.py +95 -0
  123. anl_agents-0.1.0/src/anl_agents/anl2024/teamkb/report.pdf +0 -0
  124. anl_agents-0.1.0/src/anl_agents/anl2024/tipsonly/__init__.py +9 -0
  125. anl_agents-0.1.0/src/anl_agents/anl2024/tipsonly/a.ipynb +235 -0
  126. anl_agents-0.1.0/src/anl_agents/anl2024/tipsonly/katla_nir_aent.py +383 -0
  127. anl_agents-0.1.0/src/anl_agents/anl2024/tipsonly/pratice/__init__.py +1 -0
  128. anl_agents-0.1.0/src/anl_agents/anl2024/tipsonly/pratice/agents_utility_comparison.py +131 -0
  129. anl_agents-0.1.0/src/anl_agents/anl2024/tipsonly/pratice/basic_negotiation_main.py +154 -0
  130. anl_agents-0.1.0/src/anl_agents/anl2024/tipsonly/pratice/general_negotation_model.py +462 -0
  131. anl_agents-0.1.0/src/anl_agents/anl2024/tipsonly/report.pdf +0 -0
  132. anl_agents-0.1.0/src/anl_agents/anl2024/tipsonly/requirements.txt +0 -0
  133. anl_agents-0.1.0/src/anl_agents/anl2024/tulsa_eulers/README.md +71 -0
  134. anl_agents-0.1.0/src/anl_agents/anl2024/tulsa_eulers/__init__.py +9 -0
  135. anl_agents-0.1.0/src/anl_agents/anl2024/tulsa_eulers/goldie.py +248 -0
  136. anl_agents-0.1.0/src/anl_agents/anl2024/tulsa_eulers/helpers/__init__.py +0 -0
  137. anl_agents-0.1.0/src/anl_agents/anl2024/tulsa_eulers/helpers/runner.py +79 -0
  138. anl_agents-0.1.0/src/anl_agents/anl2024/tulsa_eulers/report.pdf +0 -0
  139. anl_agents-0.1.0/src/anl_agents/contrib/__init__.py +0 -0
  140. anl_agents-0.1.0/src/tests/test_agents.py +41 -0
  141. anl_agents-0.1.0/src/tests/test_tournament.py +52 -0
  142. anl_agents-0.1.0/uv.lock +3064 -0
@@ -0,0 +1,119 @@
1
+ *.py[cod]
2
+ __pycache__
3
+ **/__pycache__
4
+ **/*.pyc.*
5
+ # C extensions
6
+ *.so
7
+
8
+ # Packages
9
+ *.egg
10
+ *.egg-info
11
+ dist
12
+ build
13
+ eggs
14
+ .eggs
15
+ parts
16
+ bin
17
+ var
18
+ sdist
19
+ wheelhouse
20
+ develop-eggs
21
+ .installed.cfg
22
+ lib
23
+ lib64
24
+ venv*/
25
+ pyvenv*/
26
+ pip-wheel-metadata/
27
+
28
+ # Installer logs
29
+ pip-log.txt
30
+
31
+ # Unit test / coverage reports
32
+ .coverage
33
+ .tox
34
+ .coverage.*
35
+ .pytest_cache/
36
+ nosetests.xml
37
+ coverage.xml
38
+ htmlcov
39
+
40
+ # Translations
41
+ *.mo
42
+
43
+ # Mr Developer
44
+ .mr.developer.cfg
45
+ .project
46
+ .pydevproject
47
+ .idea
48
+ *.iml
49
+ *.komodoproject
50
+
51
+ # Complexity
52
+ output/*.html
53
+ output/*/index.html
54
+
55
+ # Sphinx
56
+ docs/_build
57
+
58
+ .DS_Store
59
+ *~
60
+ .*.sw[po]
61
+ .build
62
+ .ve
63
+ .env
64
+ .cache
65
+ .pytest
66
+ .benchmarks
67
+ .bootstrap
68
+ .appveyor.token
69
+ *.bak
70
+
71
+ # Mypy Cache
72
+ .mypy_cache/
73
+ venv/
74
+ venv/*
75
+ **/logs/*
76
+ **/logs
77
+ */logs
78
+ tests/logs
79
+ src/tests/logs
80
+ **/my_results
81
+ AVERAGE_STEPS.txt
82
+ .venv
83
+ venv
84
+ /.venv
85
+ /venv
86
+ logs
87
+ /logs
88
+ /logs/*
89
+ **/logs
90
+ */logs
91
+ /my_results
92
+ /my_results/*
93
+ tags
94
+ /docs/_build/*
95
+ /docs/_build
96
+ /docs/site/*
97
+ /docs/site
98
+ tags
99
+ .vscode
100
+ .eggs
101
+ .venv
102
+ venv
103
+ my_results
104
+ limits_brute.csv
105
+ max_stats_brute.csv
106
+ min_stats_brute.csv
107
+ scratch/data.zip
108
+ scratch/max_stats_g.csv
109
+ scratch/min_stats_a.csv
110
+ scratch/min_stats_b.csv
111
+ scratch/min_stats_g.csv
112
+ /build
113
+ ./build
114
+ build/*
115
+ .envrc
116
+ tmp/
117
+ /docs/site/
118
+ /docs/site/*
119
+ **/docs/site
@@ -0,0 +1,42 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v4.0.1
4
+ hooks:
5
+ - id: debug-statements
6
+ - id: check-yaml
7
+ - id: end-of-file-fixer
8
+ - id: trailing-whitespace
9
+ - id: fix-byte-order-marker # Forbid UTF-8 byte-order markers
10
+ # - id: check-docstring-first
11
+ - id: check-case-conflict
12
+ - id: check-json
13
+ - id: end-of-file-fixer
14
+ - id: mixed-line-ending
15
+ - id: check-added-large-files
16
+ # - id: fix-encoding-pragma
17
+
18
+ # - repo: https://github.com/asottile/pyupgrade
19
+ # rev: v2.26.0
20
+ # hooks:
21
+ # - id: pyupgrade
22
+ # args: [--py37-plus]
23
+ # exclude: __init__.py
24
+
25
+ - repo: https://github.com/pre-commit/mirrors-isort
26
+ rev: v5.9.3
27
+ hooks:
28
+ - id: isort
29
+ args: ["--profile", "black"]
30
+ exclude: __init__.py
31
+
32
+ - repo: https://github.com/psf/black
33
+ rev: 21.8b0
34
+ hooks:
35
+ - id: black
36
+
37
+ - repo: https://github.com/asottile/blacken-docs
38
+ rev: v1.11.0
39
+ hooks:
40
+ - id: blacken-docs
41
+ exclude: __init__.py
42
+ additional_dependencies: [black==20.8b1]
@@ -0,0 +1,72 @@
1
+ Metadata-Version: 2.3
2
+ Name: anl-agents
3
+ Version: 0.1.0
4
+ Summary: Add your description here
5
+ Requires-Python: >=3.11
6
+ Requires-Dist: anl
7
+ Requires-Dist: tensorflow
8
+ Requires-Dist: torch
9
+ Description-Content-Type: text/markdown
10
+
11
+ This repository contains agents (negotiators) submitted to the [ANL league](https://anac.cs.brown.edu/anl) of the [ANAC Competition](https://anac.cs.brown.edu)
12
+
13
+ To install this package just run:
14
+
15
+ ```bash
16
+ pip install anl-agents
17
+ ```
18
+
19
+ There are two ways to submit agents to this repository:
20
+
21
+ 1. Participate in the ANAC competition [https://anac.cs.brown.edu/anl](https://anac.cs.brown.edu/anl)
22
+ 2. Submit a pull-request with your agent added to the contrib directory.
23
+
24
+ # Getting lists of agents
25
+
26
+ You can get any specific subset of the agents in the library using `get_agents()`. This function
27
+ has the following parameters:
28
+
29
+ - version: Either a competition year (2024, ...) or the value "contrib" for all other agents. You can also pass "all" or "any" to get all agents.
30
+ - track: The track (advantage, utility, welfare, nash, kalai, kalai-smorodinsky)
31
+ - qualified_only: If true, only agents that were submitted to SCML and ran in the qualifications round will be
32
+ returned.
33
+ - finalists_only: If true, only agents that were submitted to SCML and passed qualifications will be
34
+ returned.
35
+ - winners_only: If true, only winners of SCML (the given version) will be returned.
36
+ - top_only: Either a fraction of finalists or the top n finalists with highest scores in the finals of
37
+ SCML.
38
+ - as_class: If true, the agent classes will be returned otherwise their full class names.
39
+
40
+ For example, to get the top 10% of the "advantage" track finalists in year 2024 as strings, you can use:
41
+
42
+ ```bash
43
+ get_agents(version=2024, track="advantage", finalists_only=True, top_only=0.1, as_class=False)
44
+ ```
45
+
46
+ # Winners of the ANL 2024 Competition
47
+
48
+ ## Advantage Track
49
+
50
+ - First Place: Shochan
51
+ - Second Place: UOAgent
52
+ - Third Place: AgentRenting2024
53
+
54
+ You can get these agents after installing anl-agents by running:
55
+
56
+ ```bash
57
+ get_agents(2024, track="advantage", winners_only=True)
58
+ ```
59
+
60
+ ## Nash Track
61
+
62
+ - First Place: Shochan
63
+
64
+ You can get this agent after installing anl-agents by running:
65
+
66
+ ```bash
67
+ get_agents(2024, track="nash", winners_only=True)
68
+ ```
69
+
70
+ # Installation Note
71
+
72
+ If you are on Apple M1, you will need to install tensorflow **before** installing this package on conda using the method described [here](https://developer.apple.com/metal/tensorflow-plugin/)
@@ -0,0 +1,62 @@
1
+ This repository contains agents (negotiators) submitted to the [ANL league](https://anac.cs.brown.edu/anl) of the [ANAC Competition](https://anac.cs.brown.edu)
2
+
3
+ To install this package just run:
4
+
5
+ ```bash
6
+ pip install anl-agents
7
+ ```
8
+
9
+ There are two ways to submit agents to this repository:
10
+
11
+ 1. Participate in the ANAC competition [https://anac.cs.brown.edu/anl](https://anac.cs.brown.edu/anl)
12
+ 2. Submit a pull-request with your agent added to the contrib directory.
13
+
14
+ # Getting lists of agents
15
+
16
+ You can get any specific subset of the agents in the library using `get_agents()`. This function
17
+ has the following parameters:
18
+
19
+ - version: Either a competition year (2024, ...) or the value "contrib" for all other agents. You can also pass "all" or "any" to get all agents.
20
+ - track: The track (advantage, utility, welfare, nash, kalai, kalai-smorodinsky)
21
+ - qualified_only: If true, only agents that were submitted to SCML and ran in the qualifications round will be
22
+ returned.
23
+ - finalists_only: If true, only agents that were submitted to SCML and passed qualifications will be
24
+ returned.
25
+ - winners_only: If true, only winners of SCML (the given version) will be returned.
26
+ - top_only: Either a fraction of finalists or the top n finalists with highest scores in the finals of
27
+ SCML.
28
+ - as_class: If true, the agent classes will be returned otherwise their full class names.
29
+
30
+ For example, to get the top 10% of the "advantage" track finalists in year 2024 as strings, you can use:
31
+
32
+ ```bash
33
+ get_agents(version=2024, track="advantage", finalists_only=True, top_only=0.1, as_class=False)
34
+ ```
35
+
36
+ # Winners of the ANL 2024 Competition
37
+
38
+ ## Advantage Track
39
+
40
+ - First Place: Shochan
41
+ - Second Place: UOAgent
42
+ - Third Place: AgentRenting2024
43
+
44
+ You can get these agents after installing anl-agents by running:
45
+
46
+ ```bash
47
+ get_agents(2024, track="advantage", winners_only=True)
48
+ ```
49
+
50
+ ## Nash Track
51
+
52
+ - First Place: Shochan
53
+
54
+ You can get this agent after installing anl-agents by running:
55
+
56
+ ```bash
57
+ get_agents(2024, track="nash", winners_only=True)
58
+ ```
59
+
60
+ # Installation Note
61
+
62
+ If you are on Apple M1, you will need to install tensorflow **before** installing this package on conda using the method described [here](https://developer.apple.com/metal/tensorflow-plugin/)
@@ -0,0 +1,15 @@
1
+ [project]
2
+ name = "anl-agents"
3
+ version = "0.1.0"
4
+ description = "Add your description here"
5
+ readme = "README.md"
6
+ requires-python = ">=3.11"
7
+ dependencies = ["anl", "tensorflow", "torch"]
8
+ dev-dependencies = [
9
+ "pytest",
10
+ "hypothesis"
11
+ ]
12
+
13
+ [build-system]
14
+ requires = ["hatchling"]
15
+ build-backend = "hatchling.build"
@@ -0,0 +1,8 @@
1
+ {
2
+ "venvPath": "/Users/yasser/myvenvs",
3
+ "venv": "anl-agents",
4
+ "extraPaths": [
5
+ "/Users/yasser/code/projects/negmas"
6
+ ],
7
+ "useLibraryCodeForTypes": true
8
+ }
@@ -0,0 +1,4 @@
1
+ # -*- coding: utf-8 -*-
2
+ from .agents import *
3
+
4
+ __all__ = agents.__all__ + ["anl2024", "contrib"]
File without changes
@@ -0,0 +1,307 @@
1
+ from __future__ import annotations
2
+
3
+ from inspect import ismodule
4
+ from typing import Literal, overload
5
+
6
+ from anl_agents.anl2024.antiagents.antiagent import AntiAgent
7
+ from anl_agents.anl2024.carc.carcagent import CARCAgent
8
+ from anl_agents.anl2024.susumu.nayesian2 import Nayesian2
9
+ from anl_agents.anl2024.takafam.shochan import Shochan
10
+ from anl_agents.anl2024.team_123.nyan import AgentNyan
11
+ from anl_agents.anl2024.team_182.missg import MissG
12
+ from anl_agents.anl2024.team_186.ilan import Ilan
13
+ from anl_agents.anl2024.team_191.inegotiator import INegotiator
14
+ from anl_agents.anl2024.team_199.hard_chaos import HardChaosNegotiator
15
+ from anl_agents.anl2024.team_205.kosagent import KosAgent
16
+ from anl_agents.anl2024.team_209.bargain_bot import BargainBot
17
+ from anl_agents.anl2024.team_232.tak import TAKAgent
18
+ from anl_agents.anl2024.team_234.ardabot import Ardabot
19
+ from anl_agents.anl2024.team_235.group6 import Group6
20
+ from anl_agents.anl2024.team_236.group7 import Group7
21
+ from anl_agents.anl2024.team_240.bidbot import BidBot
22
+ from anl_agents.anl2024.team_moto.uoagent import UOAgent
23
+ from anl_agents.anl2024.team_renting.renting2024 import AgentRenting2024
24
+ from anl_agents.anl2024.team_twistin.group5 import Group5
25
+ from anl_agents.anl2024.teamkb.agentkb import AgentKB
26
+ from anl_agents.anl2024.tipsonly.katla_nir_aent import KatlaNirAgent
27
+ from anl_agents.anl2024.tulsa_eulers.goldie import Goldie
28
+
29
+ from negmas import SAONegotiator
30
+ from negmas.helpers import get_class, get_full_type_name
31
+ from negmas.situated import Agent
32
+
33
+ import anl_agents.anl2024 as anl2024
34
+
35
+ __all__ = ["get_agents", "FAILING_AGENTS"]
36
+
37
+ FAILING_AGENTS = {
38
+ # get_full_type_name(
39
+ # anl2021.YIYAgent
40
+ # ): "Needs scikit-learn<=1.3.* and is tested on python 3.10 only",
41
+ # get_full_type_name(
42
+ # anl2021.QlAgent
43
+ # ): "Needs scikit-learn<=1.3.* and is tested on python 3.10 only",
44
+ # get_full_type_name(
45
+ # anl2022.AdaptiveQlAgent
46
+ # ): "Needs scikit-learn<=1.3.* and is tested on python 3.10 only",
47
+ }
48
+ """Maps agents known to fail to the failure reason."""
49
+
50
+
51
+ @overload
52
+ def get_agents(
53
+ version: str | int,
54
+ *,
55
+ track: str = "advantage",
56
+ qualified_only: bool = False,
57
+ finalists_only: bool = False,
58
+ winners_only: bool = False,
59
+ top_only: int | float | None = None,
60
+ ignore_failing=False,
61
+ as_class: Literal[False] = False,
62
+ ) -> tuple[str, ...]: ...
63
+
64
+
65
+ @overload
66
+ def get_agents(
67
+ version: str | int,
68
+ *,
69
+ track: str = "advantage",
70
+ qualified_only: bool = False,
71
+ finalists_only: bool = False,
72
+ winners_only: bool = False,
73
+ top_only: int | float | None = None,
74
+ ignore_failing=False,
75
+ as_class: Literal[True] = True,
76
+ ) -> tuple[type[Agent], ...]: ...
77
+
78
+
79
+ def get_agents(
80
+ version: str | int,
81
+ *,
82
+ track: str = "advantage",
83
+ qualified_only: bool = False,
84
+ finalists_only: bool = False,
85
+ winners_only: bool = False,
86
+ top_only: int | float | None = None,
87
+ ignore_failing=False,
88
+ as_class: bool = True,
89
+ ) -> tuple[type[Agent] | str, ...]:
90
+ """
91
+ Gets agent classes/full class names for a version which can either be a competition year (int) or "contrib".
92
+
93
+ Args:
94
+ version: Either a competition year (2019, 2020, 2021, ....) or the following special values:
95
+
96
+ - "contrib" for agents contributed directly to the repository not through ANAC's anl Competition
97
+ - "all"/"any" for all agents
98
+
99
+ track: The track ("welfare", "utility", "advantage", "nash", "kalai", "kalai-smorodonisky")
100
+ qualified_only: If true, only agents that were submitted to anl and ran in the qualifications round will be
101
+ returned
102
+ finalists_only: If true, only agents that were submitted to anl and passed qualifications will be
103
+ returned
104
+ winners_only: If true, only winners of anl (the given version) will be returned.
105
+ top_only: Either a fraction of finalists or the top n finalists with highest scores in the finals of
106
+ anl
107
+ as_class: If true, the agent classes will be returned otherwise their full class names.
108
+ """
109
+ if version in ("all", "any"):
110
+ results = []
111
+ for v in (2024, "contrib"):
112
+ results += list(
113
+ get_agents( # type: ignore
114
+ v,
115
+ track=track,
116
+ qualified_only=qualified_only,
117
+ finalists_only=finalists_only,
118
+ winners_only=winners_only,
119
+ top_only=top_only,
120
+ as_class=as_class, # type: ignore
121
+ )
122
+ )
123
+ if ignore_failing:
124
+ results = [
125
+ _ for _ in results if get_full_type_name(_) not in FAILING_AGENTS.keys()
126
+ ]
127
+ return tuple(results)
128
+ classes: tuple[str | type[Agent], ...] = tuple() # type: ignore
129
+ track = track.lower()
130
+ if isinstance(version, int) and version == 2024:
131
+ if track in ("advantage",) and winners_only:
132
+ classes = (Shochan, UOAgent, AgentRenting2024)
133
+ elif track in ("nash",) and winners_only:
134
+ classes = (Shochan,)
135
+ elif track in ("advantage",) and finalists_only:
136
+ classes = (
137
+ Shochan,
138
+ UOAgent,
139
+ AgentRenting2024,
140
+ AntiAgent,
141
+ HardChaosNegotiator,
142
+ KosAgent,
143
+ Nayesian2,
144
+ CARCAgent,
145
+ BidBot,
146
+ AgentNyan,
147
+ )
148
+ elif track in ("nash",) and finalists_only:
149
+ classes = (
150
+ Shochan,
151
+ CARCAgent,
152
+ Nayesian2,
153
+ AntiAgent,
154
+ UOAgent,
155
+ AgentRenting2024,
156
+ KosAgent,
157
+ BidBot,
158
+ HardChaosNegotiator,
159
+ AgentNyan,
160
+ )
161
+ elif track in ("kalai",) and finalists_only:
162
+ classes = (
163
+ Nayesian2,
164
+ Shochan,
165
+ CARCAgent,
166
+ UOAgent,
167
+ KosAgent,
168
+ HardChaosNegotiator,
169
+ BidBot,
170
+ AntiAgent,
171
+ AgentRenting2024,
172
+ AgentNyan,
173
+ )
174
+ elif track in ("kalai-smorodonisky",) and finalists_only:
175
+ classes = (
176
+ Nayesian2,
177
+ CARCAgent,
178
+ KosAgent,
179
+ Shochan,
180
+ UOAgent,
181
+ AntiAgent,
182
+ AgentRenting2024,
183
+ BidBot,
184
+ HardChaosNegotiator,
185
+ AgentNyan,
186
+ )
187
+ elif track in ("utility",) and finalists_only:
188
+ classes = (
189
+ UOAgent,
190
+ Shochan,
191
+ AgentRenting2024,
192
+ AntiAgent,
193
+ KosAgent,
194
+ HardChaosNegotiator,
195
+ Nayesian2,
196
+ CARCAgent,
197
+ BidBot,
198
+ AgentNyan,
199
+ )
200
+ elif track in ("welfare") and qualified_only:
201
+ classes = (
202
+ Nayesian2,
203
+ INegotiator,
204
+ Ardabot,
205
+ Shochan,
206
+ BidBot,
207
+ AgentRenting2024,
208
+ Group6,
209
+ AntiAgent,
210
+ KosAgent,
211
+ UOAgent,
212
+ Group5,
213
+ CARCAgent,
214
+ Goldie,
215
+ Group7,
216
+ Ilan,
217
+ AgentNyan,
218
+ KatlaNirAgent,
219
+ BargainBot,
220
+ HardChaosNegotiator,
221
+ MissG,
222
+ TAKAgent,
223
+ AgentKB,
224
+ )
225
+ elif track in ("nash") and qualified_only:
226
+ classes = (
227
+ CARCAgent,
228
+ Nayesian2,
229
+ Shochan,
230
+ Group6,
231
+ BidBot,
232
+ Goldie,
233
+ AntiAgent,
234
+ Ilan,
235
+ Group7,
236
+ INegotiator,
237
+ AgentRenting2024,
238
+ KosAgent,
239
+ AgentNyan,
240
+ BargainBot,
241
+ UOAgent,
242
+ Group5,
243
+ HardChaosNegotiator,
244
+ MissG,
245
+ TAKAgent,
246
+ Ardabot,
247
+ AgentKB,
248
+ KatlaNirAgent,
249
+ )
250
+ elif track in ("advantage") and qualified_only:
251
+ classes = (
252
+ AgentRenting2024,
253
+ AntiAgent,
254
+ Shochan,
255
+ UOAgent,
256
+ KosAgent,
257
+ HardChaosNegotiator,
258
+ Nayesian2,
259
+ CARCAgent,
260
+ MissG,
261
+ AgentNyan,
262
+ BidBot,
263
+ Group6,
264
+ Group7,
265
+ INegotiator,
266
+ BargainBot,
267
+ Group5,
268
+ Ilan,
269
+ Goldie,
270
+ TAKAgent,
271
+ AgentKB,
272
+ Ardabot,
273
+ KatlaNirAgent,
274
+ )
275
+ else:
276
+ classes = tuple(
277
+ sum(
278
+ (
279
+ [eval(f"anl2024.{_}.{a}") for a in eval(f"anl2024.{_}").__all__]
280
+ for _ in dir(anl2024)
281
+ if ismodule(eval(f"anl2024.{_}"))
282
+ ),
283
+ [],
284
+ )
285
+ )
286
+ elif isinstance(version, str) and version == "contrib":
287
+ classes = tuple()
288
+ else:
289
+ raise ValueError(
290
+ f"The version {version} is unknown. Valid versions are 2019, 2020 (as ints), 'contrib' as a string"
291
+ )
292
+ classes: tuple[type[SAONegotiator] | str, ...]
293
+ if as_class:
294
+ classes = tuple(get_class(_) for _ in classes)
295
+ else:
296
+ classes = tuple(get_full_type_name(_) for _ in classes) # type: ignore
297
+
298
+ if ignore_failing:
299
+ classes = tuple(
300
+ [_ for _ in classes if get_full_type_name(_) not in FAILING_AGENTS.keys()]
301
+ )
302
+ if top_only is not None:
303
+ n = int(top_only) if top_only >= 1 else (top_only * len(classes))
304
+ if n > 0:
305
+ return tuple(classes[: min(n, len(classes))])
306
+
307
+ return classes # type: ignore
@@ -0,0 +1,47 @@
1
+ from .antiagents import *
2
+ from .carc import *
3
+ from .susumu import *
4
+ from .takafam import *
5
+ from .team_123 import *
6
+ from .team_182 import *
7
+ from .team_186 import *
8
+ from .team_191 import *
9
+ from .team_199 import *
10
+ from .team_205 import *
11
+ from .team_209 import *
12
+ from .team_232 import *
13
+ from .team_234 import *
14
+ from .team_235 import *
15
+ from .team_236 import *
16
+ from .team_240 import *
17
+ from .team_moto import *
18
+ from .team_renting import *
19
+ from .team_twistin import *
20
+ from .teamkb import *
21
+ from .tipsonly import *
22
+ from .tulsa_eulers import *
23
+
24
+ __all__ = (
25
+ antiagents.__all__
26
+ + carc.__all__
27
+ + susumu.__all__
28
+ + takafam.__all__
29
+ + team_123.__all__
30
+ + team_182.__all__
31
+ + team_186.__all__
32
+ + team_191.__all__
33
+ + team_199.__all__
34
+ + team_205.__all__
35
+ + team_209.__all__
36
+ + team_232.__all__
37
+ + team_234.__all__
38
+ + team_235.__all__
39
+ + team_236.__all__
40
+ + team_240.__all__
41
+ + team_moto.__all__
42
+ + team_renting.__all__
43
+ + team_twistin.__all__
44
+ + teamkb.__all__
45
+ + tipsonly.__all__
46
+ + tulsa_eulers.__all__
47
+ )
@@ -0,0 +1,15 @@
1
+ from .antiagent import *
2
+
3
+ MAIN_AGENT = AntiAgent
4
+ __all__ = antiagent.__all__
5
+
6
+ __author__ = ""
7
+ __team__ = """
8
+ 1. Panagiotis Aronis <p.aronis@students.uu.nl>
9
+ 2. Sander van Bennekom <s.vanbennekom1@students.uu.nl>
10
+ 3. Mats Buis <m.p.buis@students.uu.nl>
11
+ 4. Vedant Puneet Singh <v.p.singh@students.uu.nl>
12
+ 5. Collin de Wit <c.r.dewit@students.uu.nl>
13
+ """
14
+ __email__ = ""
15
+ __version__ = "0.1.0"