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.
- anl_agents-0.1.0/.gitignore +119 -0
- anl_agents-0.1.0/.pre-commit-config.yaml +42 -0
- anl_agents-0.1.0/PKG-INFO +72 -0
- anl_agents-0.1.0/README.md +62 -0
- anl_agents-0.1.0/pyproject.toml +15 -0
- anl_agents-0.1.0/pyrightconfig.json +8 -0
- anl_agents-0.1.0/src/anl_agents/__init__.py +4 -0
- anl_agents-0.1.0/src/anl_agents/__main__.py +0 -0
- anl_agents-0.1.0/src/anl_agents/agents.py +307 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/__init__.py +47 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/antiagents/__init__.py +15 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/antiagents/antiagent.py +243 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/antiagents/report.pdf +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/antiagents/requirements.txt +4 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/carc/__init__.py +9 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/carc/carcagent.py +183 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/carc/report.pdf +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/susumu/README.md +74 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/susumu/__init__.py +10 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/susumu/helpers/__init__.py +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/susumu/helpers/example.py +136 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/susumu/helpers/runner.py +95 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/susumu/nayesian.py +165 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/susumu/nayesian2.py +373 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/susumu/report.pdf +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/takafam/__init__.py +9 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/takafam/helpers/__init__.py +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/takafam/helpers/runner.py +79 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/takafam/report.pdf +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/takafam/requirements.txt +204 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/takafam/shochan.py +2879 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_123/__init__.py +9 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_123/base.py +50 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_123/helpers/__init__.py +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_123/helpers/example.py +136 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_123/helpers/runner.py +104 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_123/nyan.py +202 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_123/report.pdf +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_182/__init__.py +9 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_182/missg.py +508 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_186/__init__.py +10 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_186/helpers/__init__.py +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_186/helpers/example.py +136 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_186/helpers/runner.py +95 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_186/ilan.py +113 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_186/myagent.py +75 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_186/report.pdf +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_191/README.md +71 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_191/__init__.py +10 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_191/func.py +66 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_191/helpers/__init__.py +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_191/helpers/runner.py +85 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_191/inegotiator.py +775 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_191/others.py +756 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_191/requirements.txt +201 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_199/__init__.py +9 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_199/hard_chaos.py +108 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_199/report.pdf +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_205/__init__.py +9 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_205/helpers/__init__.py +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_205/helpers/example.py +136 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_205/helpers/runner.py +95 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_205/kosagent.py +195 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_205/report.pdf +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_209/__init__.py +9 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_209/acceptance_logic.py +71 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_209/bargain_bot.py +145 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_209/bidding_strategy.py +287 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_209/helpers/__init__.py +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_209/helpers/config.py +99 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_209/opponent_model.py +256 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_232/__init__.py +9 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_232/helpers/__init__.py +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_232/helpers/runner.py +79 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_232/report.pdf +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_232/tak.py +314 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_234/__init__.py +9 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_234/ardabot.py +178 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_234/helpers/__init__.py +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_234/helpers/runner.py +79 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_234/report.pdf +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_235/__init__.py +9 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_235/group6.py +86 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_235/helpers/__init__.py +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_235/helpers/example.py +136 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_235/helpers/runner.py +97 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_235/report.pdf +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_235/requirements.txt +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_236/__init__.py +9 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_236/group7.py +308 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_236/helpers/__init__.py +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_236/helpers/runner.py +79 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_236/report.pdf +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_240/__init__.py +9 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_240/bidbot.py +278 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_240/helpers/__init__.py +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_240/helpers/runner.py +79 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_240/report.pdf +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_moto/__init__.py +9 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_moto/helpers/__init__.py +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_moto/helpers/runner.py +96 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_moto/requirements.txt +159 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_moto/uoagent.py +257 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_renting/ReservationValuePredictor.py +164 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_renting/__init__.py +9 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_renting/model/__init__.py +1 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_renting/model/model1-v4_features_scaler.joblib +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_renting/model/model1-v4_history_scaler.joblib +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_renting/model/model1-v4_phase1.keras +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_renting/model/model1-v4_phase2.keras +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_renting/renting2024.py +951 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_renting/report.pdf +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_twistin/__init__.py +9 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_twistin/group5.py +573 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_twistin/helpers/__init__.py +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_twistin/helpers/runner.py +90 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/team_twistin/report.pdf +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/teamkb/__init__.py +9 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/teamkb/agentkb.py +309 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/teamkb/helpers/__init__.py +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/teamkb/helpers/example.py +135 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/teamkb/helpers/runner.py +95 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/teamkb/report.pdf +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/tipsonly/__init__.py +9 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/tipsonly/a.ipynb +235 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/tipsonly/katla_nir_aent.py +383 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/tipsonly/pratice/__init__.py +1 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/tipsonly/pratice/agents_utility_comparison.py +131 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/tipsonly/pratice/basic_negotiation_main.py +154 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/tipsonly/pratice/general_negotation_model.py +462 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/tipsonly/report.pdf +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/tipsonly/requirements.txt +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/tulsa_eulers/README.md +71 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/tulsa_eulers/__init__.py +9 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/tulsa_eulers/goldie.py +248 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/tulsa_eulers/helpers/__init__.py +0 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/tulsa_eulers/helpers/runner.py +79 -0
- anl_agents-0.1.0/src/anl_agents/anl2024/tulsa_eulers/report.pdf +0 -0
- anl_agents-0.1.0/src/anl_agents/contrib/__init__.py +0 -0
- anl_agents-0.1.0/src/tests/test_agents.py +41 -0
- anl_agents-0.1.0/src/tests/test_tournament.py +52 -0
- 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"
|
|
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"
|