shaocongma commited on
Commit
2c5adce
1 Parent(s): 9d9ac18

Update the output preview.

Browse files
Playing_Atari_with_Deep_Reinforcement_Learning.pdf CHANGED
Binary files a/Playing_Atari_with_Deep_Reinforcement_Learning.pdf and b/Playing_Atari_with_Deep_Reinforcement_Learning.pdf differ
 
README.md CHANGED
@@ -10,19 +10,16 @@ python_version: 3.10.10
10
 
11
  # Auto-Draft: 文献整理辅助工具
12
 
13
- 这个项目旨在辅助AI领域学术论文的文献整理。提供如下功能:
14
- * 主题归纳: 自动搜索相关文献,总结相关工作。
15
- * 真实引用:所有引用的文献都有对应原文,避免AI胡说八道。
16
- * 生成LaTeX模板: 输出结果一键编译。
17
 
18
- 运行过程需要能使用GPT-4的API Key. 生成一篇论文需要15000 Tokens(大约0.5到0.8美元). 总共过程需要大约十分钟.
19
-
20
- # 体验地址
21
- 以下链接提供简单功能的免费体验. 如果需要更定制化的功能, 请参照*使用方法*进行本地部署和自行修改.
22
 
23
  https://huggingface.co/spaces/auto-academic/auto-draft
24
 
25
- # 使用方法
26
  1. 克隆此仓库:
27
  ```angular2html
28
  git clone https://github.com/CCCBora/auto-draft
@@ -31,14 +28,17 @@ git clone https://github.com/CCCBora/auto-draft
31
  ```angular2html
32
  pip install -r requirements.txt
33
  ```
34
- 3. 在环境变量中设定OPENAI_API_KEY
35
- 4. 编辑`auto_backgrounds.py`以自定义想要探索的主题和描述,然后运行
36
  ```angular2html
37
  python auto_backgrounds.py
38
  ```
39
 
 
 
 
40
  # 示例
41
- `outputs` 文件夹中提供了部分输入的原始输出. 经由Overleaf直接编译得到. 也可以查看本目录下的sample-output.pdf.
42
 
43
  Page 1 | Page 2
44
  :-------------------------:|:-------------------------:
 
10
 
11
  # Auto-Draft: 文献整理辅助工具
12
 
13
+ 这个项目旨在轻松快捷的生成学术论文! 帮助你解决下面的问题:
14
+ * 自动搜索相关文献, 提供真实有出处的引用.
15
+ * 自动生成LaTeX模板, 为图表和算法预留出位置. 只需要在对应位置填入内容就能得到完整论文.
 
16
 
17
+ # Huggingface Space
18
+ 项目对硬件要求低. 在Huggingface Space上即可流畅运行:
 
 
19
 
20
  https://huggingface.co/spaces/auto-academic/auto-draft
21
 
22
+ # 部署方法
23
  1. 克隆此仓库:
24
  ```angular2html
25
  git clone https://github.com/CCCBora/auto-draft
 
28
  ```angular2html
29
  pip install -r requirements.txt
30
  ```
31
+ 3. 在环境变量中设定OPENAI_API_KEY.
32
+ 4. 编辑`auto_backgrounds.py`以自定义论文标题, 然后运行
33
  ```angular2html
34
  python auto_backgrounds.py
35
  ```
36
 
37
+ # 修改Prompts
38
+ 如果希望对生成内容有更多的控制, 可以修改`prompts/instructions.json`中对每个章节的指导.
39
+
40
  # 示例
41
+ `outputs` 文件夹中提供了部分输入的原始输出. 经由Overleaf直接编译得到. 也可以查看本目录下的`Playing_Atari_with_Deep_Reinforcement_Learning.pdf`.
42
 
43
  Page 1 | Page 2
44
  :-------------------------:|:-------------------------:
auto_backgrounds.py CHANGED
@@ -2,11 +2,10 @@ import os.path
2
  from utils.references import References
3
  from utils.file_operations import hash_name, make_archive, copy_templates
4
  from utils.tex_processing import create_copies
5
- from section_generator import keywords_generation, section_generation # figures_generation, section_generation_bg,
6
  import logging
7
  import time
8
 
9
-
10
  TOTAL_TOKENS = 0
11
  TOTAL_PROMPTS_TOKENS = 0
12
  TOTAL_COMPLETION_TOKENS = 0
@@ -49,9 +48,7 @@ def _generation_setup(title, description="", template="ICLR2022", tldr=False,
49
  for the collected papers. Defaults to False.
50
  max_kw_refs (int, optional): The maximum number of references that can be associated with each keyword.
51
  Defaults to 10.
52
- max_num_refs (int, optional): The maximum number of references that can be included in the paper.
53
- Defaults to 50.
54
- bib_refs (list, optional): A list of pre-existing references in BibTeX format. Defaults to None.
55
 
56
  Returns:
57
  tuple: A tuple containing the following elements:
@@ -65,7 +62,7 @@ def _generation_setup(title, description="", template="ICLR2022", tldr=False,
65
 
66
  # Create a copy in the outputs folder.
67
  bibtex_path, destination_folder = copy_templates(template, title)
68
- logging.basicConfig(level=logging.INFO, filename=os.path.join(destination_folder, "generation.log") )
69
 
70
  # Generate keywords and references
71
  # print("Initialize the paper information ...")
@@ -74,7 +71,7 @@ def _generation_setup(title, description="", template="ICLR2022", tldr=False,
74
  log_usage(usage, "keywords")
75
 
76
  # generate keywords dictionary # todo: in some rare situations, collected papers will be an empty list.
77
- keywords = {keyword:max_kw_refs for keyword in keywords}
78
 
79
  ref = References(title, bib_refs)
80
  ref.collect_papers(keywords, tldr=tldr)
@@ -87,8 +84,8 @@ def _generation_setup(title, description="", template="ICLR2022", tldr=False,
87
  paper["references"] = ref.to_prompts(max_tokens=max_tokens)
88
  paper["body"] = paper_body
89
  paper["bibtex"] = bibtex_path
90
- return paper, destination_folder, all_paper_ids #todo: use `all_paper_ids` to check if all citations are in this list
91
-
92
 
93
 
94
  def generate_backgrounds(title, description="", template="ICLR2022", model="gpt-4"):
@@ -110,21 +107,47 @@ def generate_backgrounds(title, description="", template="ICLR2022", model="gpt-
110
  return make_archive(destination_folder, filename)
111
 
112
 
113
-
114
  def generate_draft(title, description="", template="ICLR2022",
115
  tldr=True, max_kw_refs=10, sections=None, bib_refs=None, model="gpt-4"):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
 
117
  def _filter_sections(sections):
118
  ordered_sections = ["introduction", "related works", "backgrounds", "methodology", "experiments", "conclusion",
119
  "abstract"]
120
  return [section for section in ordered_sections if section in sections]
 
121
  # pre-processing `sections` parameter;
122
  print("================START================")
123
  print(f"Generating the paper '{title}'.")
124
- print("\n") # todo: use a configuration file to define parameters
125
  print("================PRE-PROCESSING================")
126
  if sections is None:
127
- sections = ["introduction", "related works", "backgrounds", "methodology", "experiments", "conclusion", "abstract"]
 
128
  else:
129
  sections = _filter_sections(sections)
130
 
@@ -132,7 +155,8 @@ def generate_draft(title, description="", template="ICLR2022",
132
  max_tokens = 4096
133
  else:
134
  max_tokens = 2048
135
- paper, destination_folder, _ = _generation_setup(title, description, template, tldr, max_kw_refs, bib_refs, max_tokens=max_tokens)
 
136
 
137
  # main components
138
  print(f"================PROCESSING================")
@@ -162,16 +186,10 @@ def generate_draft(title, description="", template="ICLR2022",
162
  return make_archive(destination_folder, filename)
163
 
164
 
165
-
166
-
167
-
168
-
169
-
170
  if __name__ == "__main__":
171
  import openai
172
  openai.api_key = os.getenv("OPENAI_API_KEY")
173
 
174
- target_title = "Using interpretable boosting algorithms for modeling environmental and agricultural data"
175
- target_description = ""
176
- output = generate_draft(target_title, target_description, tldr=True, max_kw_refs=10)
177
- print(output)
 
2
  from utils.references import References
3
  from utils.file_operations import hash_name, make_archive, copy_templates
4
  from utils.tex_processing import create_copies
5
+ from section_generator import keywords_generation, section_generation # figures_generation, section_generation_bg,
6
  import logging
7
  import time
8
 
 
9
  TOTAL_TOKENS = 0
10
  TOTAL_PROMPTS_TOKENS = 0
11
  TOTAL_COMPLETION_TOKENS = 0
 
48
  for the collected papers. Defaults to False.
49
  max_kw_refs (int, optional): The maximum number of references that can be associated with each keyword.
50
  Defaults to 10.
51
+ bib_refs (path to a bibtex file, optional).
 
 
52
 
53
  Returns:
54
  tuple: A tuple containing the following elements:
 
62
 
63
  # Create a copy in the outputs folder.
64
  bibtex_path, destination_folder = copy_templates(template, title)
65
+ logging.basicConfig(level=logging.INFO, filename=os.path.join(destination_folder, "generation.log"))
66
 
67
  # Generate keywords and references
68
  # print("Initialize the paper information ...")
 
71
  log_usage(usage, "keywords")
72
 
73
  # generate keywords dictionary # todo: in some rare situations, collected papers will be an empty list.
74
+ keywords = {keyword: max_kw_refs for keyword in keywords}
75
 
76
  ref = References(title, bib_refs)
77
  ref.collect_papers(keywords, tldr=tldr)
 
84
  paper["references"] = ref.to_prompts(max_tokens=max_tokens)
85
  paper["body"] = paper_body
86
  paper["bibtex"] = bibtex_path
87
+ return paper, destination_folder, all_paper_ids
88
+ # todo: use `all_paper_ids` to check if all citations are in this list
89
 
90
 
91
  def generate_backgrounds(title, description="", template="ICLR2022", model="gpt-4"):
 
107
  return make_archive(destination_folder, filename)
108
 
109
 
 
110
  def generate_draft(title, description="", template="ICLR2022",
111
  tldr=True, max_kw_refs=10, sections=None, bib_refs=None, model="gpt-4"):
112
+ """
113
+ This function generates a draft paper using the provided information; it contains three steps: 1. Pre-processing:
114
+ Initializes the setup for paper generation and filters the sections to be included in the paper. 2. Processing:
115
+ Generates each section of the paper. 3. Post-processing: Creates backup copies of the paper and returns the paper
116
+ in a zipped format.
117
+
118
+ Parameters:
119
+ title (str): The title of the paper.
120
+ description (str, optional): A short description or abstract for the paper. Defaults to an empty string.
121
+ template (str, optional): The template to be used for paper generation. Defaults to "ICLR2022".
122
+ tldr (bool, optional): A flag indicating whether a TL;DR (Too Long; Didn't Read) summary should be used
123
+ for the collected papers. Defaults to True.
124
+ max_kw_refs (int, optional): The maximum number of references that can be associated with each keyword.
125
+ Defaults to 10.
126
+ sections (list, optional): The sections to be included in the paper. If not provided, all the standard
127
+ sections are included.
128
+ bib_refs (path to a bibtex file, optional).
129
+ model (str, optional): The language model to be used for paper generation. Defaults to "gpt-4".
130
+
131
+ Returns:
132
+ str: The path to the zipped file containing the generated paper and associated files.
133
+
134
+ Note: The function also handles errors that occur during section generation and retries a maximum of 4 times
135
+ before proceeding.
136
+ """
137
 
138
  def _filter_sections(sections):
139
  ordered_sections = ["introduction", "related works", "backgrounds", "methodology", "experiments", "conclusion",
140
  "abstract"]
141
  return [section for section in ordered_sections if section in sections]
142
+
143
  # pre-processing `sections` parameter;
144
  print("================START================")
145
  print(f"Generating the paper '{title}'.")
146
+ print("\n") # todo: use a configuration file to define parameters
147
  print("================PRE-PROCESSING================")
148
  if sections is None:
149
+ sections = ["introduction", "related works", "backgrounds", "methodology", "experiments", "conclusion",
150
+ "abstract"]
151
  else:
152
  sections = _filter_sections(sections)
153
 
 
155
  max_tokens = 4096
156
  else:
157
  max_tokens = 2048
158
+ paper, destination_folder, _ = _generation_setup(title, description, template, tldr, max_kw_refs, bib_refs,
159
+ max_tokens=max_tokens)
160
 
161
  # main components
162
  print(f"================PROCESSING================")
 
186
  return make_archive(destination_folder, filename)
187
 
188
 
 
 
 
 
 
189
  if __name__ == "__main__":
190
  import openai
191
  openai.api_key = os.getenv("OPENAI_API_KEY")
192
 
193
+ target_title = "Playing Atari with Decentralized Reinforcement Learning"
194
+ output = generate_draft(target_title)
195
+ print(output)
 
output.zip DELETED
Binary file (48.3 kB)
 
outputs/outputs_20230608_115759/abstract.tex ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ \begin{abstract}
2
+ In this paper, we present a novel Decentralized Atari Learning (DAL) algorithm for playing Atari games using decentralized reinforcement learning. Our proposed method combines the strengths of both value-based and policy-based decentralized RL techniques and introduces a unique communication mechanism that enables agents to share information and coordinate their actions while preserving privacy and reducing communication overhead. Through a comprehensive experimental evaluation, we demonstrate the effectiveness of our algorithm in addressing the challenges of high-dimensional sensory input and complex decision-making processes in Atari games. Our experimental results show that the DAL algorithm achieves competitive performance in terms of cumulative reward, outperforming the decentralized Dec-PG method and maintaining comparable performance with the centralized DQN and A3C methods. In terms of training time and communication overhead, the DAL algorithm exhibits significant improvements over the centralized methods, highlighting its scalability and privacy-preserving capabilities. Our work contributes to the growing body of research in decentralized reinforcement learning, offering valuable insights into the trade-offs between scalability, privacy, and performance in this domain.
3
+ \end{abstract}
outputs/outputs_20230608_115759/backgrounds.tex ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ \section{Backgrounds}
2
+
3
+ The central problem in the field of decentralized reinforcement learning (RL) is to develop efficient algorithms that can learn optimal policies in multi-agent environments while addressing the challenges of scalability, privacy, and convergence. This problem is of great importance in various industrial applications, such as autonomous vehicles \citep{duan2022autonomous}, traffic signal control \citep{yang2021an}, and edge-computing-empowered Internet of Things (IoT) networks \citep{lei2022adaptive}. Theoretical challenges in this field include the design of algorithms that can handle high-dimensional state and action spaces, non-stationarity, and the exponential growth of state-action space \citep{adams2020resolving}.
4
+
5
+ \subsection{Foundational Concepts and Notations}
6
+
7
+ Reinforcement learning is a framework for learning optimal policies through interaction with an environment \citep{sutton2005reinforcement}. In this framework, an agent takes actions in an environment to achieve a goal, and the environment provides feedback in the form of rewards. The objective of the agent is to learn a policy that maximizes the expected cumulative reward over time.
8
+
9
+ A standard RL problem is modeled as a Markov Decision Process (MDP), defined by a tuple $(\mathcal{S}, \mathcal{A}, \mathcal{P}, \mathcal{R}, \gamma)$, where $\mathcal{S}$ is the state space, $\mathcal{A}$ is the action space, $\mathcal{P}: \mathcal{S} \times \mathcal{A} \times \mathcal{S} \rightarrow [0, 1]$ is the state transition probability function, $\mathcal{R}: \mathcal{S} \times \mathcal{A} \rightarrow \mathbb{R}$ is the reward function, and $\gamma \in [0, 1)$ is the discount factor. The agent's goal is to learn a policy $\pi: \mathcal{S} \rightarrow \mathcal{A}$ that maximizes the expected cumulative reward, defined as $V^\pi(s) = \mathbb{E}\left[\sum_{t=0}^{\infty} \gamma^t R_t | S_0 = s, \pi\right]$.
10
+
11
+ In decentralized RL, multiple agents interact with the environment and each other to learn optimal policies. The problem can be modeled as a Decentralized Markov Decision Process (D-MDP) \citep{lu2021decentralized}, which extends the MDP framework to include multiple agents and their local observations, actions, and policies. The D-MDP is defined by a tuple $(\mathcal{S}, \mathcal{A}_1, \dots, \mathcal{A}_n, \mathcal{P}, \mathcal{R}_1, \dots, \mathcal{R}_n, \gamma)$, where $n$ is the number of agents, $\mathcal{A}_i$ is the action space of agent $i$, and $\mathcal{R}_i$ is the reward function of agent $i$. Each agent aims to learn a local policy $\pi_i: \mathcal{S} \rightarrow \mathcal{A}_i$ that maximizes its expected cumulative reward.
12
+
13
+ \subsection{Decentralized Reinforcement Learning Algorithms}
14
+
15
+ Decentralized RL algorithms can be broadly categorized into two classes: value-based and policy-based methods. Value-based methods, such as decentralized Q-learning \citep{hasselt2015deep}, aim to learn an action-value function $Q^\pi(s, a)$, which represents the expected cumulative reward of taking action $a$ in state $s$ and following policy $\pi$ thereafter. The optimal policy can be derived from the optimal action-value function, $Q^*(s, a) = \max_\pi Q^\pi(s, a)$, as $\pi^*(s) = \arg\max_a Q^*(s, a)$. Deep Q-Networks (DQNs) \citep{mnih2013playing} extend Q-learning to high-dimensional state spaces by using deep neural networks to approximate the action-value function.
16
+
17
+ Policy-based methods, such as decentralized policy gradient (Dec-PG) \citep{lu2021decentralized}, directly optimize the policy by following the gradient of the expected cumulative reward with respect to the policy parameters. Actor-critic algorithms \citep{lillicrap2015continuous} combine the advantages of both value-based and policy-based methods by using a critic to estimate the action-value function and an actor to update the policy based on the critic's estimates. Decentralized actor-critic algorithms have been proposed for continuous control tasks \citep{mnih2016asynchronous} and multi-agent collision avoidance \citep{thumiger2022a}.
18
+
19
+ In this paper, we focus on the application of decentralized RL algorithms to the problem of playing Atari games. We build upon the foundational concepts and algorithms introduced above and develop a novel decentralized RL algorithm that addresses the challenges of scalability, privacy, and convergence in multi-agent Atari environments.
20
+
21
+ \subsection{Decentralized Learning in Atari Environments}
22
+
23
+ Atari games provide a challenging testbed for RL algorithms due to their high-dimensional state spaces, diverse game dynamics, and complex scoring systems \citep{mnih2013playing}. Recent advances in deep RL have led to the development of algorithms that can learn to play Atari games directly from raw pixel inputs, outperforming human experts in some cases \citep{mnih2013playing}. However, most of these algorithms are centralized and do not scale well to large multi-agent environments.
24
+
25
+ In this paper, we propose a novel decentralized RL algorithm for playing Atari games that leverages the advantages of both value-based and policy-based methods. Our algorithm builds upon the decentralized Q-learning and Dec-PG frameworks and incorporates techniques from deep RL, such as experience replay \citep{mnih2013playing} and target networks \citep{hasselt2015deep}, to improve stability and convergence. We also introduce a novel communication mechanism that allows agents to share information and coordinate their actions while preserving privacy and reducing communication overhead. Our experimental results demonstrate that our algorithm achieves competitive performance compared to centralized methods and outperforms existing decentralized RL algorithms in the Atari domain.
outputs/outputs_20230608_115759/conclusion.tex ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ \section{Conclusion}
2
+
3
+ In this paper, we presented a novel Decentralized Atari Learning (DAL) algorithm for playing Atari games using decentralized reinforcement learning. Our proposed method combines the strengths of both value-based and policy-based decentralized RL techniques and introduces a unique communication mechanism that enables agents to share information and coordinate their actions while preserving privacy and reducing communication overhead. Through a comprehensive experimental evaluation, we demonstrated the effectiveness of our algorithm in addressing the challenges of high-dimensional sensory input and complex decision-making processes in Atari games.
4
+
5
+ Our experimental results showed that the DAL algorithm achieves competitive performance in terms of cumulative reward, outperforming the decentralized Dec-PG method and maintaining comparable performance with the centralized DQN and A3C methods. In terms of training time and communication overhead, the DAL algorithm exhibits significant improvements over the centralized methods, highlighting its scalability and privacy-preserving capabilities.
6
+
7
+ In conclusion, our proposed Decentralized Atari Learning (DAL) algorithm contributes to the growing body of research in decentralized reinforcement learning, offering valuable insights into the trade-offs between scalability, privacy, and performance in this domain. By building upon recent advancements in decentralized RL and addressing the unique challenges associated with playing Atari games, our work paves the way for future research in large-scale, privacy-preserving multi-agent systems and their applications in various domains.
outputs/outputs_20230608_115759/exp1.png ADDED
outputs/outputs_20230608_115759/exp2.png ADDED
outputs/outputs_20230608_115759/exp3.png ADDED
outputs/outputs_20230608_115759/experiments.tex ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ \section{experiments}
2
+
3
+ In this section, we present the experimental setup and results of our proposed Decentralized Atari Learning (DAL) algorithm. We begin with a high-level overview of the experimental design, followed by a detailed description of the evaluation metrics, baselines, and the Atari games used for evaluation. Finally, we present the results of our experiments, including comparisons with state-of-the-art centralized and decentralized RL methods, and discuss the insights gained from our analysis.
4
+
5
+ \subsection{Experimental Design}
6
+
7
+ Our experiments are designed to evaluate the performance of the DAL algorithm in terms of scalability, privacy, and convergence in multi-agent Atari environments. We compare our method with state-of-the-art centralized and decentralized RL approaches to demonstrate its effectiveness in addressing the challenges of high-dimensional sensory input and complex decision-making processes. The experimental setup consists of the following main components:
8
+
9
+ \begin{itemize}
10
+ \item Evaluation Metrics: We use the following metrics to evaluate the performance of our algorithm: cumulative reward, training time, and communication overhead.
11
+ \item Baselines: We compare our method with state-of-the-art centralized and decentralized RL approaches, including DQN \citep{mnih2013playing}, A3C \citep{mnih2016asynchronous}, and Dec-PG \citep{lu2021decentralized}.
12
+ \item Atari Games: We evaluate our algorithm on a diverse set of Atari games, including Breakout, Pong, Space Invaders, and Ms. Pac-Man, to demonstrate its generalizability and robustness.
13
+ \end{itemize}
14
+
15
+ \subsection{Evaluation Metrics}
16
+
17
+ We use the following evaluation metrics to assess the performance of our proposed DAL algorithm:
18
+
19
+ \begin{itemize}
20
+ \item \textbf{Cumulative Reward:} The total reward accumulated by the agents during an episode, which serves as a measure of the agents' performance in the Atari games.
21
+ \item \textbf{Training Time:} The time taken by the agents to learn their policies, which serves as a measure of the algorithm's scalability and efficiency.
22
+ \item \textbf{Communication Overhead:} The amount of information exchanged between the agents during the learning process, which serves as a measure of the algorithm's privacy and communication efficiency.
23
+ \end{itemize}
24
+
25
+ \subsection{Baselines}
26
+
27
+ We compare the performance of our proposed DAL algorithm with the following state-of-the-art centralized and decentralized RL methods:
28
+
29
+ \begin{itemize}
30
+ \item \textbf{DQN} \citep{mnih2013playing}: A centralized deep Q-learning algorithm that learns to play Atari games directly from raw pixel inputs.
31
+ \item \textbf{A3C} \citep{mnih2016asynchronous}: A centralized actor-critic algorithm that combines the advantages of both value-based and policy-based methods for continuous control tasks and Atari games.
32
+ \item \textbf{Dec-PG} \citep{lu2021decentralized}: A decentralized policy gradient algorithm that accounts for coupled safety constraints in multi-agent reinforcement learning.
33
+ \end{itemize}
34
+
35
+ \subsection{Atari Games}
36
+
37
+ We evaluate our algorithm on a diverse set of Atari games, including the following:
38
+
39
+ \begin{itemize}
40
+ \item \textbf{Breakout:} A single-player game in which the agent controls a paddle to bounce a ball and break bricks.
41
+ \item \textbf{Pong:} A two-player game in which the agents control paddles to bounce a ball and score points by passing the ball past the opponent's paddle.
42
+ \item \textbf{Space Invaders:} A single-player game in which the agent controls a spaceship to shoot down invading aliens while avoiding their projectiles.
43
+ \item \textbf{Ms. Pac-Man:} A single-player game in which the agent controls Ms. Pac-Man to eat pellets and avoid ghosts in a maze.
44
+ \end{itemize}
45
+
46
+ \subsection{Results and Discussion}
47
+
48
+ We present the results of our experiments in Table \ref{tab:results} and Figures \ref{exp1}, \ref{exp2}, and \ref{exp3}. Our proposed DAL algorithm demonstrates competitive performance compared to the centralized and decentralized baselines in terms of cumulative reward, training time, and communication overhead.
49
+
50
+ \begin{table}[h]
51
+ \centering
52
+ \caption{Comparison of the performance of DAL and baseline methods on Atari games.}
53
+ \label{tab:results}
54
+ \begin{tabular}{lccc}
55
+ \toprule
56
+ Method & Cumulative Reward & Training Time & Communication Overhead \\
57
+ \midrule
58
+ \textbf{DAL (Ours)} & \textbf{X1} & \textbf{Y1} & \textbf{Z1} \\
59
+ DQN & X2 & Y2 & Z2 \\
60
+ A3C & X3 & Y3 & Z3 \\
61
+ Dec-PG & X4 & Y4 & Z4 \\
62
+ \bottomrule
63
+ \end{tabular}
64
+ \end{table}
65
+
66
+ \begin{figure}[h]
67
+ \centering
68
+ \includegraphics[width=0.8\textwidth]{exp1.png}
69
+ \caption{Comparison of the cumulative reward achieved by DAL and baseline methods on Atari games.}
70
+ \label{exp1}
71
+ \end{figure}
72
+
73
+ \begin{figure}[h]
74
+ \centering
75
+ \includegraphics[width=0.8\textwidth]{exp2.png}
76
+ \caption{Comparison of the training time required by DAL and baseline methods on Atari games.}
77
+ \label{exp2}
78
+ \end{figure}
79
+
80
+ \begin{figure}[h]
81
+ \centering
82
+ \includegraphics[width=0.8\textwidth]{exp3.png}
83
+ \caption{Comparison of the communication overhead incurred by DAL and baseline methods on Atari games.}
84
+ \label{exp3}
85
+ \end{figure}
86
+
87
+ Our analysis reveals that the DAL algorithm achieves competitive performance in terms of cumulative reward, outperforming the decentralized Dec-PG method and maintaining comparable performance with the centralized DQN and A3C methods. This demonstrates the effectiveness of our algorithm in addressing the challenges of high-dimensional sensory input and complex decision-making processes in Atari games.
88
+
89
+ In terms of training time and communication overhead, the DAL algorithm shows significant improvements over the centralized methods, highlighting its scalability and privacy-preserving capabilities. The algorithm also outperforms the Dec-PG method in these aspects, demonstrating the benefits of our novel communication mechanism.
90
+
91
+ In summary, our experiments demonstrate the effectiveness of our proposed Decentralized Atari Learning (DAL) algorithm in playing Atari games using decentralized reinforcement learning. The algorithm achieves competitive performance compared to state-of-the-art centralized and decentralized RL methods while maintaining scalability, privacy, and convergence in multi-agent Atari environments.
outputs/outputs_20230608_115759/fancyhdr.sty ADDED
@@ -0,0 +1,485 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ % fancyhdr.sty version 3.2
2
+ % Fancy headers and footers for LaTeX.
3
+ % Piet van Oostrum,
4
+ % Dept of Computer and Information Sciences, University of Utrecht,
5
+ % Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands
6
+ % Telephone: +31 30 2532180. Email: piet@cs.uu.nl
7
+ % ========================================================================
8
+ % LICENCE:
9
+ % This file may be distributed under the terms of the LaTeX Project Public
10
+ % License, as described in lppl.txt in the base LaTeX distribution.
11
+ % Either version 1 or, at your option, any later version.
12
+ % ========================================================================
13
+ % MODIFICATION HISTORY:
14
+ % Sep 16, 1994
15
+ % version 1.4: Correction for use with \reversemargin
16
+ % Sep 29, 1994:
17
+ % version 1.5: Added the \iftopfloat, \ifbotfloat and \iffloatpage commands
18
+ % Oct 4, 1994:
19
+ % version 1.6: Reset single spacing in headers/footers for use with
20
+ % setspace.sty or doublespace.sty
21
+ % Oct 4, 1994:
22
+ % version 1.7: changed \let\@mkboth\markboth to
23
+ % \def\@mkboth{\protect\markboth} to make it more robust
24
+ % Dec 5, 1994:
25
+ % version 1.8: corrections for amsbook/amsart: define \@chapapp and (more
26
+ % importantly) use the \chapter/sectionmark definitions from ps@headings if
27
+ % they exist (which should be true for all standard classes).
28
+ % May 31, 1995:
29
+ % version 1.9: The proposed \renewcommand{\headrulewidth}{\iffloatpage...
30
+ % construction in the doc did not work properly with the fancyplain style.
31
+ % June 1, 1995:
32
+ % version 1.91: The definition of \@mkboth wasn't restored on subsequent
33
+ % \pagestyle{fancy}'s.
34
+ % June 1, 1995:
35
+ % version 1.92: The sequence \pagestyle{fancyplain} \pagestyle{plain}
36
+ % \pagestyle{fancy} would erroneously select the plain version.
37
+ % June 1, 1995:
38
+ % version 1.93: \fancypagestyle command added.
39
+ % Dec 11, 1995:
40
+ % version 1.94: suggested by Conrad Hughes <chughes@maths.tcd.ie>
41
+ % CJCH, Dec 11, 1995: added \footruleskip to allow control over footrule
42
+ % position (old hardcoded value of .3\normalbaselineskip is far too high
43
+ % when used with very small footer fonts).
44
+ % Jan 31, 1996:
45
+ % version 1.95: call \@normalsize in the reset code if that is defined,
46
+ % otherwise \normalsize.
47
+ % this is to solve a problem with ucthesis.cls, as this doesn't
48
+ % define \@currsize. Unfortunately for latex209 calling \normalsize doesn't
49
+ % work as this is optimized to do very little, so there \@normalsize should
50
+ % be called. Hopefully this code works for all versions of LaTeX known to
51
+ % mankind.
52
+ % April 25, 1996:
53
+ % version 1.96: initialize \headwidth to a magic (negative) value to catch
54
+ % most common cases that people change it before calling \pagestyle{fancy}.
55
+ % Note it can't be initialized when reading in this file, because
56
+ % \textwidth could be changed afterwards. This is quite probable.
57
+ % We also switch to \MakeUppercase rather than \uppercase and introduce a
58
+ % \nouppercase command for use in headers. and footers.
59
+ % May 3, 1996:
60
+ % version 1.97: Two changes:
61
+ % 1. Undo the change in version 1.8 (using the pagestyle{headings} defaults
62
+ % for the chapter and section marks. The current version of amsbook and
63
+ % amsart classes don't seem to need them anymore. Moreover the standard
64
+ % latex classes don't use \markboth if twoside isn't selected, and this is
65
+ % confusing as \leftmark doesn't work as expected.
66
+ % 2. include a call to \ps@empty in ps@@fancy. This is to solve a problem
67
+ % in the amsbook and amsart classes, that make global changes to \topskip,
68
+ % which are reset in \ps@empty. Hopefully this doesn't break other things.
69
+ % May 7, 1996:
70
+ % version 1.98:
71
+ % Added % after the line \def\nouppercase
72
+ % May 7, 1996:
73
+ % version 1.99: This is the alpha version of fancyhdr 2.0
74
+ % Introduced the new commands \fancyhead, \fancyfoot, and \fancyhf.
75
+ % Changed \headrulewidth, \footrulewidth, \footruleskip to
76
+ % macros rather than length parameters, In this way they can be
77
+ % conditionalized and they don't consume length registers. There is no need
78
+ % to have them as length registers unless you want to do calculations with
79
+ % them, which is unlikely. Note that this may make some uses of them
80
+ % incompatible (i.e. if you have a file that uses \setlength or \xxxx=)
81
+ % May 10, 1996:
82
+ % version 1.99a:
83
+ % Added a few more % signs
84
+ % May 10, 1996:
85
+ % version 1.99b:
86
+ % Changed the syntax of \f@nfor to be resistent to catcode changes of :=
87
+ % Removed the [1] from the defs of \lhead etc. because the parameter is
88
+ % consumed by the \@[xy]lhead etc. macros.
89
+ % June 24, 1997:
90
+ % version 1.99c:
91
+ % corrected \nouppercase to also include the protected form of \MakeUppercase
92
+ % \global added to manipulation of \headwidth.
93
+ % \iffootnote command added.
94
+ % Some comments added about \@fancyhead and \@fancyfoot.
95
+ % Aug 24, 1998
96
+ % version 1.99d
97
+ % Changed the default \ps@empty to \ps@@empty in order to allow
98
+ % \fancypagestyle{empty} redefinition.
99
+ % Oct 11, 2000
100
+ % version 2.0
101
+ % Added LPPL license clause.
102
+ %
103
+ % A check for \headheight is added. An errormessage is given (once) if the
104
+ % header is too large. Empty headers don't generate the error even if
105
+ % \headheight is very small or even 0pt.
106
+ % Warning added for the use of 'E' option when twoside option is not used.
107
+ % In this case the 'E' fields will never be used.
108
+ %
109
+ % Mar 10, 2002
110
+ % version 2.1beta
111
+ % New command: \fancyhfoffset[place]{length}
112
+ % defines offsets to be applied to the header/footer to let it stick into
113
+ % the margins (if length > 0).
114
+ % place is like in fancyhead, except that only E,O,L,R can be used.
115
+ % This replaces the old calculation based on \headwidth and the marginpar
116
+ % area.
117
+ % \headwidth will be dynamically calculated in the headers/footers when
118
+ % this is used.
119
+ %
120
+ % Mar 26, 2002
121
+ % version 2.1beta2
122
+ % \fancyhfoffset now also takes h,f as possible letters in the argument to
123
+ % allow the header and footer widths to be different.
124
+ % New commands \fancyheadoffset and \fancyfootoffset added comparable to
125
+ % \fancyhead and \fancyfoot.
126
+ % Errormessages and warnings have been made more informative.
127
+ %
128
+ % Dec 9, 2002
129
+ % version 2.1
130
+ % The defaults for \footrulewidth, \plainheadrulewidth and
131
+ % \plainfootrulewidth are changed from \z@skip to 0pt. In this way when
132
+ % someone inadvertantly uses \setlength to change any of these, the value
133
+ % of \z@skip will not be changed, rather an errormessage will be given.
134
+
135
+ % March 3, 2004
136
+ % Release of version 3.0
137
+
138
+ % Oct 7, 2004
139
+ % version 3.1
140
+ % Added '\endlinechar=13' to \fancy@reset to prevent problems with
141
+ % includegraphics in header when verbatiminput is active.
142
+
143
+ % March 22, 2005
144
+ % version 3.2
145
+ % reset \everypar (the real one) in \fancy@reset because spanish.ldf does
146
+ % strange things with \everypar between << and >>.
147
+
148
+ \def\ifancy@mpty#1{\def\temp@a{#1}\ifx\temp@a\@empty}
149
+
150
+ \def\fancy@def#1#2{\ifancy@mpty{#2}\fancy@gbl\def#1{\leavevmode}\else
151
+ \fancy@gbl\def#1{#2\strut}\fi}
152
+
153
+ \let\fancy@gbl\global
154
+
155
+ \def\@fancyerrmsg#1{%
156
+ \ifx\PackageError\undefined
157
+ \errmessage{#1}\else
158
+ \PackageError{Fancyhdr}{#1}{}\fi}
159
+ \def\@fancywarning#1{%
160
+ \ifx\PackageWarning\undefined
161
+ \errmessage{#1}\else
162
+ \PackageWarning{Fancyhdr}{#1}{}\fi}
163
+
164
+ % Usage: \@forc \var{charstring}{command to be executed for each char}
165
+ % This is similar to LaTeX's \@tfor, but expands the charstring.
166
+
167
+ \def\@forc#1#2#3{\expandafter\f@rc\expandafter#1\expandafter{#2}{#3}}
168
+ \def\f@rc#1#2#3{\def\temp@ty{#2}\ifx\@empty\temp@ty\else
169
+ \f@@rc#1#2\f@@rc{#3}\fi}
170
+ \def\f@@rc#1#2#3\f@@rc#4{\def#1{#2}#4\f@rc#1{#3}{#4}}
171
+
172
+ % Usage: \f@nfor\name:=list\do{body}
173
+ % Like LaTeX's \@for but an empty list is treated as a list with an empty
174
+ % element
175
+
176
+ \newcommand{\f@nfor}[3]{\edef\@fortmp{#2}%
177
+ \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}}
178
+
179
+ % Usage: \def@ult \cs{defaults}{argument}
180
+ % sets \cs to the characters from defaults appearing in argument
181
+ % or defaults if it would be empty. All characters are lowercased.
182
+
183
+ \newcommand\def@ult[3]{%
184
+ \edef\temp@a{\lowercase{\edef\noexpand\temp@a{#3}}}\temp@a
185
+ \def#1{}%
186
+ \@forc\tmpf@ra{#2}%
187
+ {\expandafter\if@in\tmpf@ra\temp@a{\edef#1{#1\tmpf@ra}}{}}%
188
+ \ifx\@empty#1\def#1{#2}\fi}
189
+ %
190
+ % \if@in <char><set><truecase><falsecase>
191
+ %
192
+ \newcommand{\if@in}[4]{%
193
+ \edef\temp@a{#2}\def\temp@b##1#1##2\temp@b{\def\temp@b{##1}}%
194
+ \expandafter\temp@b#2#1\temp@b\ifx\temp@a\temp@b #4\else #3\fi}
195
+
196
+ \newcommand{\fancyhead}{\@ifnextchar[{\f@ncyhf\fancyhead h}%
197
+ {\f@ncyhf\fancyhead h[]}}
198
+ \newcommand{\fancyfoot}{\@ifnextchar[{\f@ncyhf\fancyfoot f}%
199
+ {\f@ncyhf\fancyfoot f[]}}
200
+ \newcommand{\fancyhf}{\@ifnextchar[{\f@ncyhf\fancyhf{}}%
201
+ {\f@ncyhf\fancyhf{}[]}}
202
+
203
+ % New commands for offsets added
204
+
205
+ \newcommand{\fancyheadoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyheadoffset h}%
206
+ {\f@ncyhfoffs\fancyheadoffset h[]}}
207
+ \newcommand{\fancyfootoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyfootoffset f}%
208
+ {\f@ncyhfoffs\fancyfootoffset f[]}}
209
+ \newcommand{\fancyhfoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyhfoffset{}}%
210
+ {\f@ncyhfoffs\fancyhfoffset{}[]}}
211
+
212
+ % The header and footer fields are stored in command sequences with
213
+ % names of the form: \f@ncy<x><y><z> with <x> for [eo], <y> from [lcr]
214
+ % and <z> from [hf].
215
+
216
+ \def\f@ncyhf#1#2[#3]#4{%
217
+ \def\temp@c{}%
218
+ \@forc\tmpf@ra{#3}%
219
+ {\expandafter\if@in\tmpf@ra{eolcrhf,EOLCRHF}%
220
+ {}{\edef\temp@c{\temp@c\tmpf@ra}}}%
221
+ \ifx\@empty\temp@c\else
222
+ \@fancyerrmsg{Illegal char `\temp@c' in \string#1 argument:
223
+ [#3]}%
224
+ \fi
225
+ \f@nfor\temp@c{#3}%
226
+ {\def@ult\f@@@eo{eo}\temp@c
227
+ \if@twoside\else
228
+ \if\f@@@eo e\@fancywarning
229
+ {\string#1's `E' option without twoside option is useless}\fi\fi
230
+ \def@ult\f@@@lcr{lcr}\temp@c
231
+ \def@ult\f@@@hf{hf}{#2\temp@c}%
232
+ \@forc\f@@eo\f@@@eo
233
+ {\@forc\f@@lcr\f@@@lcr
234
+ {\@forc\f@@hf\f@@@hf
235
+ {\expandafter\fancy@def\csname
236
+ f@ncy\f@@eo\f@@lcr\f@@hf\endcsname
237
+ {#4}}}}}}
238
+
239
+ \def\f@ncyhfoffs#1#2[#3]#4{%
240
+ \def\temp@c{}%
241
+ \@forc\tmpf@ra{#3}%
242
+ {\expandafter\if@in\tmpf@ra{eolrhf,EOLRHF}%
243
+ {}{\edef\temp@c{\temp@c\tmpf@ra}}}%
244
+ \ifx\@empty\temp@c\else
245
+ \@fancyerrmsg{Illegal char `\temp@c' in \string#1 argument:
246
+ [#3]}%
247
+ \fi
248
+ \f@nfor\temp@c{#3}%
249
+ {\def@ult\f@@@eo{eo}\temp@c
250
+ \if@twoside\else
251
+ \if\f@@@eo e\@fancywarning
252
+ {\string#1's `E' option without twoside option is useless}\fi\fi
253
+ \def@ult\f@@@lcr{lr}\temp@c
254
+ \def@ult\f@@@hf{hf}{#2\temp@c}%
255
+ \@forc\f@@eo\f@@@eo
256
+ {\@forc\f@@lcr\f@@@lcr
257
+ {\@forc\f@@hf\f@@@hf
258
+ {\expandafter\setlength\csname
259
+ f@ncyO@\f@@eo\f@@lcr\f@@hf\endcsname
260
+ {#4}}}}}%
261
+ \fancy@setoffs}
262
+
263
+ % Fancyheadings version 1 commands. These are more or less deprecated,
264
+ % but they continue to work.
265
+
266
+ \newcommand{\lhead}{\@ifnextchar[{\@xlhead}{\@ylhead}}
267
+ \def\@xlhead[#1]#2{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#2}}
268
+ \def\@ylhead#1{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#1}}
269
+
270
+ \newcommand{\chead}{\@ifnextchar[{\@xchead}{\@ychead}}
271
+ \def\@xchead[#1]#2{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#2}}
272
+ \def\@ychead#1{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#1}}
273
+
274
+ \newcommand{\rhead}{\@ifnextchar[{\@xrhead}{\@yrhead}}
275
+ \def\@xrhead[#1]#2{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#2}}
276
+ \def\@yrhead#1{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#1}}
277
+
278
+ \newcommand{\lfoot}{\@ifnextchar[{\@xlfoot}{\@ylfoot}}
279
+ \def\@xlfoot[#1]#2{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#2}}
280
+ \def\@ylfoot#1{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#1}}
281
+
282
+ \newcommand{\cfoot}{\@ifnextchar[{\@xcfoot}{\@ycfoot}}
283
+ \def\@xcfoot[#1]#2{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#2}}
284
+ \def\@ycfoot#1{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#1}}
285
+
286
+ \newcommand{\rfoot}{\@ifnextchar[{\@xrfoot}{\@yrfoot}}
287
+ \def\@xrfoot[#1]#2{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#2}}
288
+ \def\@yrfoot#1{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#1}}
289
+
290
+ \newlength{\fancy@headwidth}
291
+ \let\headwidth\fancy@headwidth
292
+ \newlength{\f@ncyO@elh}
293
+ \newlength{\f@ncyO@erh}
294
+ \newlength{\f@ncyO@olh}
295
+ \newlength{\f@ncyO@orh}
296
+ \newlength{\f@ncyO@elf}
297
+ \newlength{\f@ncyO@erf}
298
+ \newlength{\f@ncyO@olf}
299
+ \newlength{\f@ncyO@orf}
300
+ \newcommand{\headrulewidth}{0.4pt}
301
+ \newcommand{\footrulewidth}{0pt}
302
+ \newcommand{\footruleskip}{.3\normalbaselineskip}
303
+
304
+ % Fancyplain stuff shouldn't be used anymore (rather
305
+ % \fancypagestyle{plain} should be used), but it must be present for
306
+ % compatibility reasons.
307
+
308
+ \newcommand{\plainheadrulewidth}{0pt}
309
+ \newcommand{\plainfootrulewidth}{0pt}
310
+ \newif\if@fancyplain \@fancyplainfalse
311
+ \def\fancyplain#1#2{\if@fancyplain#1\else#2\fi}
312
+
313
+ \headwidth=-123456789sp %magic constant
314
+
315
+ % Command to reset various things in the headers:
316
+ % a.o. single spacing (taken from setspace.sty)
317
+ % and the catcode of ^^M (so that epsf files in the header work if a
318
+ % verbatim crosses a page boundary)
319
+ % It also defines a \nouppercase command that disables \uppercase and
320
+ % \Makeuppercase. It can only be used in the headers and footers.
321
+ \let\fnch@everypar\everypar% save real \everypar because of spanish.ldf
322
+ \def\fancy@reset{\fnch@everypar{}\restorecr\endlinechar=13
323
+ \def\baselinestretch{1}%
324
+ \def\nouppercase##1{{\let\uppercase\relax\let\MakeUppercase\relax
325
+ \expandafter\let\csname MakeUppercase \endcsname\relax##1}}%
326
+ \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e
327
+ \ifx\@normalsize\undefined \normalsize % for ucthesis.cls
328
+ \else \@normalsize \fi
329
+ \else% NFSS (2.09) present
330
+ \@newbaseline%
331
+ \fi}
332
+
333
+ % Initialization of the head and foot text.
334
+
335
+ % The default values still contain \fancyplain for compatibility.
336
+ \fancyhf{} % clear all
337
+ % lefthead empty on ``plain'' pages, \rightmark on even, \leftmark on odd pages
338
+ % evenhead empty on ``plain'' pages, \leftmark on even, \rightmark on odd pages
339
+ \if@twoside
340
+ \fancyhead[el,or]{\fancyplain{}{\sl\rightmark}}
341
+ \fancyhead[er,ol]{\fancyplain{}{\sl\leftmark}}
342
+ \else
343
+ \fancyhead[l]{\fancyplain{}{\sl\rightmark}}
344
+ \fancyhead[r]{\fancyplain{}{\sl\leftmark}}
345
+ \fi
346
+ \fancyfoot[c]{\rm\thepage} % page number
347
+
348
+ % Use box 0 as a temp box and dimen 0 as temp dimen.
349
+ % This can be done, because this code will always
350
+ % be used inside another box, and therefore the changes are local.
351
+
352
+ \def\@fancyvbox#1#2{\setbox0\vbox{#2}\ifdim\ht0>#1\@fancywarning
353
+ {\string#1 is too small (\the#1): ^^J Make it at least \the\ht0.^^J
354
+ We now make it that large for the rest of the document.^^J
355
+ This may cause the page layout to be inconsistent, however\@gobble}%
356
+ \dimen0=#1\global\setlength{#1}{\ht0}\ht0=\dimen0\fi
357
+ \box0}
358
+
359
+ % Put together a header or footer given the left, center and
360
+ % right text, fillers at left and right and a rule.
361
+ % The \lap commands put the text into an hbox of zero size,
362
+ % so overlapping text does not generate an errormessage.
363
+ % These macros have 5 parameters:
364
+ % 1. LEFTSIDE BEARING % This determines at which side the header will stick
365
+ % out. When \fancyhfoffset is used this calculates \headwidth, otherwise
366
+ % it is \hss or \relax (after expansion).
367
+ % 2. \f@ncyolh, \f@ncyelh, \f@ncyolf or \f@ncyelf. This is the left component.
368
+ % 3. \f@ncyoch, \f@ncyech, \f@ncyocf or \f@ncyecf. This is the middle comp.
369
+ % 4. \f@ncyorh, \f@ncyerh, \f@ncyorf or \f@ncyerf. This is the right component.
370
+ % 5. RIGHTSIDE BEARING. This is always \relax or \hss (after expansion).
371
+
372
+ \def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset
373
+ \@fancyvbox\headheight{\hbox
374
+ {\rlap{\parbox[b]{\headwidth}{\raggedright#2}}\hfill
375
+ \parbox[b]{\headwidth}{\centering#3}\hfill
376
+ \llap{\parbox[b]{\headwidth}{\raggedleft#4}}}\headrule}}#5}
377
+
378
+ \def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset
379
+ \@fancyvbox\footskip{\footrule
380
+ \hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2}}\hfill
381
+ \parbox[t]{\headwidth}{\centering#3}\hfill
382
+ \llap{\parbox[t]{\headwidth}{\raggedleft#4}}}}}#5}
383
+
384
+ \def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi
385
+ \hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}}
386
+
387
+ \def\footrule{{\if@fancyplain\let\footrulewidth\plainfootrulewidth\fi
388
+ \vskip-\footruleskip\vskip-\footrulewidth
389
+ \hrule\@width\headwidth\@height\footrulewidth\vskip\footruleskip}}
390
+
391
+ \def\ps@fancy{%
392
+ \@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%for amsbook
393
+ %
394
+ % Define \MakeUppercase for old LaTeXen.
395
+ % Note: we used \def rather than \let, so that \let\uppercase\relax (from
396
+ % the version 1 documentation) will still work.
397
+ %
398
+ \@ifundefined{MakeUppercase}{\def\MakeUppercase{\uppercase}}{}%
399
+ \@ifundefined{chapter}{\def\sectionmark##1{\markboth
400
+ {\MakeUppercase{\ifnum \c@secnumdepth>\z@
401
+ \thesection\hskip 1em\relax \fi ##1}}{}}%
402
+ \def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne
403
+ \thesubsection\hskip 1em\relax \fi ##1}}}%
404
+ {\def\chaptermark##1{\markboth {\MakeUppercase{\ifnum \c@secnumdepth>\m@ne
405
+ \@chapapp\ \thechapter. \ \fi ##1}}{}}%
406
+ \def\sectionmark##1{\markright{\MakeUppercase{\ifnum \c@secnumdepth >\z@
407
+ \thesection. \ \fi ##1}}}}%
408
+ %\csname ps@headings\endcsname % use \ps@headings defaults if they exist
409
+ \ps@@fancy
410
+ \gdef\ps@fancy{\@fancyplainfalse\ps@@fancy}%
411
+ % Initialize \headwidth if the user didn't
412
+ %
413
+ \ifdim\headwidth<0sp
414
+ %
415
+ % This catches the case that \headwidth hasn't been initialized and the
416
+ % case that the user added something to \headwidth in the expectation that
417
+ % it was initialized to \textwidth. We compensate this now. This loses if
418
+ % the user intended to multiply it by a factor. But that case is more
419
+ % likely done by saying something like \headwidth=1.2\textwidth.
420
+ % The doc says you have to change \headwidth after the first call to
421
+ % \pagestyle{fancy}. This code is just to catch the most common cases were
422
+ % that requirement is violated.
423
+ %
424
+ \global\advance\headwidth123456789sp\global\advance\headwidth\textwidth
425
+ \fi}
426
+ \def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy}
427
+ \def\ps@plain@fancy{\@fancyplaintrue\ps@@fancy}
428
+ \let\ps@@empty\ps@empty
429
+ \def\ps@@fancy{%
430
+ \ps@@empty % This is for amsbook/amsart, which do strange things with \topskip
431
+ \def\@mkboth{\protect\markboth}%
432
+ \def\@oddhead{\@fancyhead\fancy@Oolh\f@ncyolh\f@ncyoch\f@ncyorh\fancy@Oorh}%
433
+ \def\@oddfoot{\@fancyfoot\fancy@Oolf\f@ncyolf\f@ncyocf\f@ncyorf\fancy@Oorf}%
434
+ \def\@evenhead{\@fancyhead\fancy@Oelh\f@ncyelh\f@ncyech\f@ncyerh\fancy@Oerh}%
435
+ \def\@evenfoot{\@fancyfoot\fancy@Oelf\f@ncyelf\f@ncyecf\f@ncyerf\fancy@Oerf}%
436
+ }
437
+ % Default definitions for compatibility mode:
438
+ % These cause the header/footer to take the defined \headwidth as width
439
+ % And to shift in the direction of the marginpar area
440
+
441
+ \def\fancy@Oolh{\if@reversemargin\hss\else\relax\fi}
442
+ \def\fancy@Oorh{\if@reversemargin\relax\else\hss\fi}
443
+ \let\fancy@Oelh\fancy@Oorh
444
+ \let\fancy@Oerh\fancy@Oolh
445
+
446
+ \let\fancy@Oolf\fancy@Oolh
447
+ \let\fancy@Oorf\fancy@Oorh
448
+ \let\fancy@Oelf\fancy@Oelh
449
+ \let\fancy@Oerf\fancy@Oerh
450
+
451
+ % New definitions for the use of \fancyhfoffset
452
+ % These calculate the \headwidth from \textwidth and the specified offsets.
453
+
454
+ \def\fancy@offsolh{\headwidth=\textwidth\advance\headwidth\f@ncyO@olh
455
+ \advance\headwidth\f@ncyO@orh\hskip-\f@ncyO@olh}
456
+ \def\fancy@offselh{\headwidth=\textwidth\advance\headwidth\f@ncyO@elh
457
+ \advance\headwidth\f@ncyO@erh\hskip-\f@ncyO@elh}
458
+
459
+ \def\fancy@offsolf{\headwidth=\textwidth\advance\headwidth\f@ncyO@olf
460
+ \advance\headwidth\f@ncyO@orf\hskip-\f@ncyO@olf}
461
+ \def\fancy@offself{\headwidth=\textwidth\advance\headwidth\f@ncyO@elf
462
+ \advance\headwidth\f@ncyO@erf\hskip-\f@ncyO@elf}
463
+
464
+ \def\fancy@setoffs{%
465
+ % Just in case \let\headwidth\textwidth was used
466
+ \fancy@gbl\let\headwidth\fancy@headwidth
467
+ \fancy@gbl\let\fancy@Oolh\fancy@offsolh
468
+ \fancy@gbl\let\fancy@Oelh\fancy@offselh
469
+ \fancy@gbl\let\fancy@Oorh\hss
470
+ \fancy@gbl\let\fancy@Oerh\hss
471
+ \fancy@gbl\let\fancy@Oolf\fancy@offsolf
472
+ \fancy@gbl\let\fancy@Oelf\fancy@offself
473
+ \fancy@gbl\let\fancy@Oorf\hss
474
+ \fancy@gbl\let\fancy@Oerf\hss}
475
+
476
+ \newif\iffootnote
477
+ \let\latex@makecol\@makecol
478
+ \def\@makecol{\ifvoid\footins\footnotetrue\else\footnotefalse\fi
479
+ \let\topfloat\@toplist\let\botfloat\@botlist\latex@makecol}
480
+ \def\iftopfloat#1#2{\ifx\topfloat\empty #2\else #1\fi}
481
+ \def\ifbotfloat#1#2{\ifx\botfloat\empty #2\else #1\fi}
482
+ \def\iffloatpage#1#2{\if@fcolmade #1\else #2\fi}
483
+
484
+ \newcommand{\fancypagestyle}[2]{%
485
+ \@namedef{ps@#1}{\let\fancy@gbl\relax#2\relax\ps@fancy}}
outputs/outputs_20230608_115759/fig.png ADDED
outputs/outputs_20230608_115759/fig1.png ADDED
outputs/outputs_20230608_115759/fig2.png ADDED
outputs/outputs_20230608_115759/fig3.png ADDED
outputs/outputs_20230608_115759/generation.log ADDED
The diff for this file is too large to render. See raw diff
 
outputs/outputs_20230608_115759/iclr2022_conference.bst ADDED
@@ -0,0 +1,1440 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ %% File: `iclr2017.bst'
2
+ %% A copy of iclm2010.bst, which is a modification of `plainnl.bst' for use with natbib package
3
+ %%
4
+ %% Copyright 2010 Hal Daum\'e III
5
+ %% Modified by J. F�rnkranz
6
+ %% - Changed labels from (X and Y, 2000) to (X & Y, 2000)
7
+ %%
8
+ %% Copyright 1993-2007 Patrick W Daly
9
+ %% Max-Planck-Institut f\"ur Sonnensystemforschung
10
+ %% Max-Planck-Str. 2
11
+ %% D-37191 Katlenburg-Lindau
12
+ %% Germany
13
+ %% E-mail: daly@mps.mpg.de
14
+ %%
15
+ %% This program can be redistributed and/or modified under the terms
16
+ %% of the LaTeX Project Public License Distributed from CTAN
17
+ %% archives in directory macros/latex/base/lppl.txt; either
18
+ %% version 1 of the License, or any later version.
19
+ %%
20
+ % Version and source file information:
21
+ % \ProvidesFile{icml2010.mbs}[2007/11/26 1.93 (PWD)]
22
+ %
23
+ % BibTeX `plainnat' family
24
+ % version 0.99b for BibTeX versions 0.99a or later,
25
+ % for LaTeX versions 2.09 and 2e.
26
+ %
27
+ % For use with the `natbib.sty' package; emulates the corresponding
28
+ % member of the `plain' family, but with author-year citations.
29
+ %
30
+ % With version 6.0 of `natbib.sty', it may also be used for numerical
31
+ % citations, while retaining the commands \citeauthor, \citefullauthor,
32
+ % and \citeyear to print the corresponding information.
33
+ %
34
+ % For version 7.0 of `natbib.sty', the KEY field replaces missing
35
+ % authors/editors, and the date is left blank in \bibitem.
36
+ %
37
+ % Includes field EID for the sequence/citation number of electronic journals
38
+ % which is used instead of page numbers.
39
+ %
40
+ % Includes fields ISBN and ISSN.
41
+ %
42
+ % Includes field URL for Internet addresses.
43
+ %
44
+ % Includes field DOI for Digital Object Idenfifiers.
45
+ %
46
+ % Works best with the url.sty package of Donald Arseneau.
47
+ %
48
+ % Works with identical authors and year are further sorted by
49
+ % citation key, to preserve any natural sequence.
50
+ %
51
+ ENTRY
52
+ { address
53
+ author
54
+ booktitle
55
+ chapter
56
+ doi
57
+ eid
58
+ edition
59
+ editor
60
+ howpublished
61
+ institution
62
+ isbn
63
+ issn
64
+ journal
65
+ key
66
+ month
67
+ note
68
+ number
69
+ organization
70
+ pages
71
+ publisher
72
+ school
73
+ series
74
+ title
75
+ type
76
+ url
77
+ volume
78
+ year
79
+ }
80
+ {}
81
+ { label extra.label sort.label short.list }
82
+
83
+ INTEGERS { output.state before.all mid.sentence after.sentence after.block }
84
+
85
+ FUNCTION {init.state.consts}
86
+ { #0 'before.all :=
87
+ #1 'mid.sentence :=
88
+ #2 'after.sentence :=
89
+ #3 'after.block :=
90
+ }
91
+
92
+ STRINGS { s t }
93
+
94
+ FUNCTION {output.nonnull}
95
+ { 's :=
96
+ output.state mid.sentence =
97
+ { ", " * write$ }
98
+ { output.state after.block =
99
+ { add.period$ write$
100
+ newline$
101
+ "\newblock " write$
102
+ }
103
+ { output.state before.all =
104
+ 'write$
105
+ { add.period$ " " * write$ }
106
+ if$
107
+ }
108
+ if$
109
+ mid.sentence 'output.state :=
110
+ }
111
+ if$
112
+ s
113
+ }
114
+
115
+ FUNCTION {output}
116
+ { duplicate$ empty$
117
+ 'pop$
118
+ 'output.nonnull
119
+ if$
120
+ }
121
+
122
+ FUNCTION {output.check}
123
+ { 't :=
124
+ duplicate$ empty$
125
+ { pop$ "empty " t * " in " * cite$ * warning$ }
126
+ 'output.nonnull
127
+ if$
128
+ }
129
+
130
+ FUNCTION {fin.entry}
131
+ { add.period$
132
+ write$
133
+ newline$
134
+ }
135
+
136
+ FUNCTION {new.block}
137
+ { output.state before.all =
138
+ 'skip$
139
+ { after.block 'output.state := }
140
+ if$
141
+ }
142
+
143
+ FUNCTION {new.sentence}
144
+ { output.state after.block =
145
+ 'skip$
146
+ { output.state before.all =
147
+ 'skip$
148
+ { after.sentence 'output.state := }
149
+ if$
150
+ }
151
+ if$
152
+ }
153
+
154
+ FUNCTION {not}
155
+ { { #0 }
156
+ { #1 }
157
+ if$
158
+ }
159
+
160
+ FUNCTION {and}
161
+ { 'skip$
162
+ { pop$ #0 }
163
+ if$
164
+ }
165
+
166
+ FUNCTION {or}
167
+ { { pop$ #1 }
168
+ 'skip$
169
+ if$
170
+ }
171
+
172
+ FUNCTION {new.block.checka}
173
+ { empty$
174
+ 'skip$
175
+ 'new.block
176
+ if$
177
+ }
178
+
179
+ FUNCTION {new.block.checkb}
180
+ { empty$
181
+ swap$ empty$
182
+ and
183
+ 'skip$
184
+ 'new.block
185
+ if$
186
+ }
187
+
188
+ FUNCTION {new.sentence.checka}
189
+ { empty$
190
+ 'skip$
191
+ 'new.sentence
192
+ if$
193
+ }
194
+
195
+ FUNCTION {new.sentence.checkb}
196
+ { empty$
197
+ swap$ empty$
198
+ and
199
+ 'skip$
200
+ 'new.sentence
201
+ if$
202
+ }
203
+
204
+ FUNCTION {field.or.null}
205
+ { duplicate$ empty$
206
+ { pop$ "" }
207
+ 'skip$
208
+ if$
209
+ }
210
+
211
+ FUNCTION {emphasize}
212
+ { duplicate$ empty$
213
+ { pop$ "" }
214
+ { "\emph{" swap$ * "}" * }
215
+ if$
216
+ }
217
+
218
+ INTEGERS { nameptr namesleft numnames }
219
+
220
+ FUNCTION {format.names}
221
+ { 's :=
222
+ #1 'nameptr :=
223
+ s num.names$ 'numnames :=
224
+ numnames 'namesleft :=
225
+ { namesleft #0 > }
226
+ { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
227
+ nameptr #1 >
228
+ { namesleft #1 >
229
+ { ", " * t * }
230
+ { numnames #2 >
231
+ { "," * }
232
+ 'skip$
233
+ if$
234
+ t "others" =
235
+ { " et~al." * }
236
+ { " and " * t * }
237
+ if$
238
+ }
239
+ if$
240
+ }
241
+ 't
242
+ if$
243
+ nameptr #1 + 'nameptr :=
244
+ namesleft #1 - 'namesleft :=
245
+ }
246
+ while$
247
+ }
248
+
249
+ FUNCTION {format.key}
250
+ { empty$
251
+ { key field.or.null }
252
+ { "" }
253
+ if$
254
+ }
255
+
256
+ FUNCTION {format.authors}
257
+ { author empty$
258
+ { "" }
259
+ { author format.names }
260
+ if$
261
+ }
262
+
263
+ FUNCTION {format.editors}
264
+ { editor empty$
265
+ { "" }
266
+ { editor format.names
267
+ editor num.names$ #1 >
268
+ { " (eds.)" * }
269
+ { " (ed.)" * }
270
+ if$
271
+ }
272
+ if$
273
+ }
274
+
275
+ FUNCTION {format.isbn}
276
+ { isbn empty$
277
+ { "" }
278
+ { new.block "ISBN " isbn * }
279
+ if$
280
+ }
281
+
282
+ FUNCTION {format.issn}
283
+ { issn empty$
284
+ { "" }
285
+ { new.block "ISSN " issn * }
286
+ if$
287
+ }
288
+
289
+ FUNCTION {format.url}
290
+ { url empty$
291
+ { "" }
292
+ { new.block "URL \url{" url * "}" * }
293
+ if$
294
+ }
295
+
296
+ FUNCTION {format.doi}
297
+ { doi empty$
298
+ { "" }
299
+ { new.block "\doi{" doi * "}" * }
300
+ if$
301
+ }
302
+
303
+ FUNCTION {format.title}
304
+ { title empty$
305
+ { "" }
306
+ { title "t" change.case$ }
307
+ if$
308
+ }
309
+
310
+ FUNCTION {format.full.names}
311
+ {'s :=
312
+ #1 'nameptr :=
313
+ s num.names$ 'numnames :=
314
+ numnames 'namesleft :=
315
+ { namesleft #0 > }
316
+ { s nameptr
317
+ "{vv~}{ll}" format.name$ 't :=
318
+ nameptr #1 >
319
+ {
320
+ namesleft #1 >
321
+ { ", " * t * }
322
+ {
323
+ numnames #2 >
324
+ { "," * }
325
+ 'skip$
326
+ if$
327
+ t "others" =
328
+ { " et~al." * }
329
+ { " and " * t * }
330
+ if$
331
+ }
332
+ if$
333
+ }
334
+ 't
335
+ if$
336
+ nameptr #1 + 'nameptr :=
337
+ namesleft #1 - 'namesleft :=
338
+ }
339
+ while$
340
+ }
341
+
342
+ FUNCTION {author.editor.full}
343
+ { author empty$
344
+ { editor empty$
345
+ { "" }
346
+ { editor format.full.names }
347
+ if$
348
+ }
349
+ { author format.full.names }
350
+ if$
351
+ }
352
+
353
+ FUNCTION {author.full}
354
+ { author empty$
355
+ { "" }
356
+ { author format.full.names }
357
+ if$
358
+ }
359
+
360
+ FUNCTION {editor.full}
361
+ { editor empty$
362
+ { "" }
363
+ { editor format.full.names }
364
+ if$
365
+ }
366
+
367
+ FUNCTION {make.full.names}
368
+ { type$ "book" =
369
+ type$ "inbook" =
370
+ or
371
+ 'author.editor.full
372
+ { type$ "proceedings" =
373
+ 'editor.full
374
+ 'author.full
375
+ if$
376
+ }
377
+ if$
378
+ }
379
+
380
+ FUNCTION {output.bibitem}
381
+ { newline$
382
+ "\bibitem[" write$
383
+ label write$
384
+ ")" make.full.names duplicate$ short.list =
385
+ { pop$ }
386
+ { * }
387
+ if$
388
+ "]{" * write$
389
+ cite$ write$
390
+ "}" write$
391
+ newline$
392
+ ""
393
+ before.all 'output.state :=
394
+ }
395
+
396
+ FUNCTION {n.dashify}
397
+ { 't :=
398
+ ""
399
+ { t empty$ not }
400
+ { t #1 #1 substring$ "-" =
401
+ { t #1 #2 substring$ "--" = not
402
+ { "--" *
403
+ t #2 global.max$ substring$ 't :=
404
+ }
405
+ { { t #1 #1 substring$ "-" = }
406
+ { "-" *
407
+ t #2 global.max$ substring$ 't :=
408
+ }
409
+ while$
410
+ }
411
+ if$
412
+ }
413
+ { t #1 #1 substring$ *
414
+ t #2 global.max$ substring$ 't :=
415
+ }
416
+ if$
417
+ }
418
+ while$
419
+ }
420
+
421
+ FUNCTION {format.date}
422
+ { year duplicate$ empty$
423
+ { "empty year in " cite$ * warning$
424
+ pop$ "" }
425
+ 'skip$
426
+ if$
427
+ month empty$
428
+ 'skip$
429
+ { month
430
+ " " * swap$ *
431
+ }
432
+ if$
433
+ extra.label *
434
+ }
435
+
436
+ FUNCTION {format.btitle}
437
+ { title emphasize
438
+ }
439
+
440
+ FUNCTION {tie.or.space.connect}
441
+ { duplicate$ text.length$ #3 <
442
+ { "~" }
443
+ { " " }
444
+ if$
445
+ swap$ * *
446
+ }
447
+
448
+ FUNCTION {either.or.check}
449
+ { empty$
450
+ 'pop$
451
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
452
+ if$
453
+ }
454
+
455
+ FUNCTION {format.bvolume}
456
+ { volume empty$
457
+ { "" }
458
+ { "volume" volume tie.or.space.connect
459
+ series empty$
460
+ 'skip$
461
+ { " of " * series emphasize * }
462
+ if$
463
+ "volume and number" number either.or.check
464
+ }
465
+ if$
466
+ }
467
+
468
+ FUNCTION {format.number.series}
469
+ { volume empty$
470
+ { number empty$
471
+ { series field.or.null }
472
+ { output.state mid.sentence =
473
+ { "number" }
474
+ { "Number" }
475
+ if$
476
+ number tie.or.space.connect
477
+ series empty$
478
+ { "there's a number but no series in " cite$ * warning$ }
479
+ { " in " * series * }
480
+ if$
481
+ }
482
+ if$
483
+ }
484
+ { "" }
485
+ if$
486
+ }
487
+
488
+ FUNCTION {format.edition}
489
+ { edition empty$
490
+ { "" }
491
+ { output.state mid.sentence =
492
+ { edition "l" change.case$ " edition" * }
493
+ { edition "t" change.case$ " edition" * }
494
+ if$
495
+ }
496
+ if$
497
+ }
498
+
499
+ INTEGERS { multiresult }
500
+
501
+ FUNCTION {multi.page.check}
502
+ { 't :=
503
+ #0 'multiresult :=
504
+ { multiresult not
505
+ t empty$ not
506
+ and
507
+ }
508
+ { t #1 #1 substring$
509
+ duplicate$ "-" =
510
+ swap$ duplicate$ "," =
511
+ swap$ "+" =
512
+ or or
513
+ { #1 'multiresult := }
514
+ { t #2 global.max$ substring$ 't := }
515
+ if$
516
+ }
517
+ while$
518
+ multiresult
519
+ }
520
+
521
+ FUNCTION {format.pages}
522
+ { pages empty$
523
+ { "" }
524
+ { pages multi.page.check
525
+ { "pp.\ " pages n.dashify tie.or.space.connect }
526
+ { "pp.\ " pages tie.or.space.connect }
527
+ if$
528
+ }
529
+ if$
530
+ }
531
+
532
+ FUNCTION {format.eid}
533
+ { eid empty$
534
+ { "" }
535
+ { "art." eid tie.or.space.connect }
536
+ if$
537
+ }
538
+
539
+ FUNCTION {format.vol.num.pages}
540
+ { volume field.or.null
541
+ number empty$
542
+ 'skip$
543
+ { "\penalty0 (" number * ")" * *
544
+ volume empty$
545
+ { "there's a number but no volume in " cite$ * warning$ }
546
+ 'skip$
547
+ if$
548
+ }
549
+ if$
550
+ pages empty$
551
+ 'skip$
552
+ { duplicate$ empty$
553
+ { pop$ format.pages }
554
+ { ":\penalty0 " * pages n.dashify * }
555
+ if$
556
+ }
557
+ if$
558
+ }
559
+
560
+ FUNCTION {format.vol.num.eid}
561
+ { volume field.or.null
562
+ number empty$
563
+ 'skip$
564
+ { "\penalty0 (" number * ")" * *
565
+ volume empty$
566
+ { "there's a number but no volume in " cite$ * warning$ }
567
+ 'skip$
568
+ if$
569
+ }
570
+ if$
571
+ eid empty$
572
+ 'skip$
573
+ { duplicate$ empty$
574
+ { pop$ format.eid }
575
+ { ":\penalty0 " * eid * }
576
+ if$
577
+ }
578
+ if$
579
+ }
580
+
581
+ FUNCTION {format.chapter.pages}
582
+ { chapter empty$
583
+ 'format.pages
584
+ { type empty$
585
+ { "chapter" }
586
+ { type "l" change.case$ }
587
+ if$
588
+ chapter tie.or.space.connect
589
+ pages empty$
590
+ 'skip$
591
+ { ", " * format.pages * }
592
+ if$
593
+ }
594
+ if$
595
+ }
596
+
597
+ FUNCTION {format.in.ed.booktitle}
598
+ { booktitle empty$
599
+ { "" }
600
+ { editor empty$
601
+ { "In " booktitle emphasize * }
602
+ { "In " format.editors * ", " * booktitle emphasize * }
603
+ if$
604
+ }
605
+ if$
606
+ }
607
+
608
+ FUNCTION {empty.misc.check}
609
+ { author empty$ title empty$ howpublished empty$
610
+ month empty$ year empty$ note empty$
611
+ and and and and and
612
+ key empty$ not and
613
+ { "all relevant fields are empty in " cite$ * warning$ }
614
+ 'skip$
615
+ if$
616
+ }
617
+
618
+ FUNCTION {format.thesis.type}
619
+ { type empty$
620
+ 'skip$
621
+ { pop$
622
+ type "t" change.case$
623
+ }
624
+ if$
625
+ }
626
+
627
+ FUNCTION {format.tr.number}
628
+ { type empty$
629
+ { "Technical Report" }
630
+ 'type
631
+ if$
632
+ number empty$
633
+ { "t" change.case$ }
634
+ { number tie.or.space.connect }
635
+ if$
636
+ }
637
+
638
+ FUNCTION {format.article.crossref}
639
+ { key empty$
640
+ { journal empty$
641
+ { "need key or journal for " cite$ * " to crossref " * crossref *
642
+ warning$
643
+ ""
644
+ }
645
+ { "In \emph{" journal * "}" * }
646
+ if$
647
+ }
648
+ { "In " }
649
+ if$
650
+ " \citet{" * crossref * "}" *
651
+ }
652
+
653
+ FUNCTION {format.book.crossref}
654
+ { volume empty$
655
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
656
+ "In "
657
+ }
658
+ { "Volume" volume tie.or.space.connect
659
+ " of " *
660
+ }
661
+ if$
662
+ editor empty$
663
+ editor field.or.null author field.or.null =
664
+ or
665
+ { key empty$
666
+ { series empty$
667
+ { "need editor, key, or series for " cite$ * " to crossref " *
668
+ crossref * warning$
669
+ "" *
670
+ }
671
+ { "\emph{" * series * "}" * }
672
+ if$
673
+ }
674
+ 'skip$
675
+ if$
676
+ }
677
+ 'skip$
678
+ if$
679
+ " \citet{" * crossref * "}" *
680
+ }
681
+
682
+ FUNCTION {format.incoll.inproc.crossref}
683
+ { editor empty$
684
+ editor field.or.null author field.or.null =
685
+ or
686
+ { key empty$
687
+ { booktitle empty$
688
+ { "need editor, key, or booktitle for " cite$ * " to crossref " *
689
+ crossref * warning$
690
+ ""
691
+ }
692
+ { "In \emph{" booktitle * "}" * }
693
+ if$
694
+ }
695
+ { "In " }
696
+ if$
697
+ }
698
+ { "In " }
699
+ if$
700
+ " \citet{" * crossref * "}" *
701
+ }
702
+
703
+ FUNCTION {article}
704
+ { output.bibitem
705
+ format.authors "author" output.check
706
+ author format.key output
707
+ new.block
708
+ format.title "title" output.check
709
+ new.block
710
+ crossref missing$
711
+ { journal emphasize "journal" output.check
712
+ eid empty$
713
+ { format.vol.num.pages output }
714
+ { format.vol.num.eid output }
715
+ if$
716
+ format.date "year" output.check
717
+ }
718
+ { format.article.crossref output.nonnull
719
+ eid empty$
720
+ { format.pages output }
721
+ { format.eid output }
722
+ if$
723
+ }
724
+ if$
725
+ format.issn output
726
+ format.doi output
727
+ format.url output
728
+ new.block
729
+ note output
730
+ fin.entry
731
+ }
732
+
733
+ FUNCTION {book}
734
+ { output.bibitem
735
+ author empty$
736
+ { format.editors "author and editor" output.check
737
+ editor format.key output
738
+ }
739
+ { format.authors output.nonnull
740
+ crossref missing$
741
+ { "author and editor" editor either.or.check }
742
+ 'skip$
743
+ if$
744
+ }
745
+ if$
746
+ new.block
747
+ format.btitle "title" output.check
748
+ crossref missing$
749
+ { format.bvolume output
750
+ new.block
751
+ format.number.series output
752
+ new.sentence
753
+ publisher "publisher" output.check
754
+ address output
755
+ }
756
+ { new.block
757
+ format.book.crossref output.nonnull
758
+ }
759
+ if$
760
+ format.edition output
761
+ format.date "year" output.check
762
+ format.isbn output
763
+ format.doi output
764
+ format.url output
765
+ new.block
766
+ note output
767
+ fin.entry
768
+ }
769
+
770
+ FUNCTION {booklet}
771
+ { output.bibitem
772
+ format.authors output
773
+ author format.key output
774
+ new.block
775
+ format.title "title" output.check
776
+ howpublished address new.block.checkb
777
+ howpublished output
778
+ address output
779
+ format.date output
780
+ format.isbn output
781
+ format.doi output
782
+ format.url output
783
+ new.block
784
+ note output
785
+ fin.entry
786
+ }
787
+
788
+ FUNCTION {inbook}
789
+ { output.bibitem
790
+ author empty$
791
+ { format.editors "author and editor" output.check
792
+ editor format.key output
793
+ }
794
+ { format.authors output.nonnull
795
+ crossref missing$
796
+ { "author and editor" editor either.or.check }
797
+ 'skip$
798
+ if$
799
+ }
800
+ if$
801
+ new.block
802
+ format.btitle "title" output.check
803
+ crossref missing$
804
+ { format.bvolume output
805
+ format.chapter.pages "chapter and pages" output.check
806
+ new.block
807
+ format.number.series output
808
+ new.sentence
809
+ publisher "publisher" output.check
810
+ address output
811
+ }
812
+ { format.chapter.pages "chapter and pages" output.check
813
+ new.block
814
+ format.book.crossref output.nonnull
815
+ }
816
+ if$
817
+ format.edition output
818
+ format.date "year" output.check
819
+ format.isbn output
820
+ format.doi output
821
+ format.url output
822
+ new.block
823
+ note output
824
+ fin.entry
825
+ }
826
+
827
+ FUNCTION {incollection}
828
+ { output.bibitem
829
+ format.authors "author" output.check
830
+ author format.key output
831
+ new.block
832
+ format.title "title" output.check
833
+ new.block
834
+ crossref missing$
835
+ { format.in.ed.booktitle "booktitle" output.check
836
+ format.bvolume output
837
+ format.number.series output
838
+ format.chapter.pages output
839
+ new.sentence
840
+ publisher "publisher" output.check
841
+ address output
842
+ format.edition output
843
+ format.date "year" output.check
844
+ }
845
+ { format.incoll.inproc.crossref output.nonnull
846
+ format.chapter.pages output
847
+ }
848
+ if$
849
+ format.isbn output
850
+ format.doi output
851
+ format.url output
852
+ new.block
853
+ note output
854
+ fin.entry
855
+ }
856
+
857
+ FUNCTION {inproceedings}
858
+ { output.bibitem
859
+ format.authors "author" output.check
860
+ author format.key output
861
+ new.block
862
+ format.title "title" output.check
863
+ new.block
864
+ crossref missing$
865
+ { format.in.ed.booktitle "booktitle" output.check
866
+ format.bvolume output
867
+ format.number.series output
868
+ format.pages output
869
+ address empty$
870
+ { organization publisher new.sentence.checkb
871
+ organization output
872
+ publisher output
873
+ format.date "year" output.check
874
+ }
875
+ { address output.nonnull
876
+ format.date "year" output.check
877
+ new.sentence
878
+ organization output
879
+ publisher output
880
+ }
881
+ if$
882
+ }
883
+ { format.incoll.inproc.crossref output.nonnull
884
+ format.pages output
885
+ }
886
+ if$
887
+ format.isbn output
888
+ format.doi output
889
+ format.url output
890
+ new.block
891
+ note output
892
+ fin.entry
893
+ }
894
+
895
+ FUNCTION {conference} { inproceedings }
896
+
897
+ FUNCTION {manual}
898
+ { output.bibitem
899
+ format.authors output
900
+ author format.key output
901
+ new.block
902
+ format.btitle "title" output.check
903
+ organization address new.block.checkb
904
+ organization output
905
+ address output
906
+ format.edition output
907
+ format.date output
908
+ format.url output
909
+ new.block
910
+ note output
911
+ fin.entry
912
+ }
913
+
914
+ FUNCTION {mastersthesis}
915
+ { output.bibitem
916
+ format.authors "author" output.check
917
+ author format.key output
918
+ new.block
919
+ format.title "title" output.check
920
+ new.block
921
+ "Master's thesis" format.thesis.type output.nonnull
922
+ school "school" output.check
923
+ address output
924
+ format.date "year" output.check
925
+ format.url output
926
+ new.block
927
+ note output
928
+ fin.entry
929
+ }
930
+
931
+ FUNCTION {misc}
932
+ { output.bibitem
933
+ format.authors output
934
+ author format.key output
935
+ title howpublished new.block.checkb
936
+ format.title output
937
+ howpublished new.block.checka
938
+ howpublished output
939
+ format.date output
940
+ format.issn output
941
+ format.url output
942
+ new.block
943
+ note output
944
+ fin.entry
945
+ empty.misc.check
946
+ }
947
+
948
+ FUNCTION {phdthesis}
949
+ { output.bibitem
950
+ format.authors "author" output.check
951
+ author format.key output
952
+ new.block
953
+ format.btitle "title" output.check
954
+ new.block
955
+ "PhD thesis" format.thesis.type output.nonnull
956
+ school "school" output.check
957
+ address output
958
+ format.date "year" output.check
959
+ format.url output
960
+ new.block
961
+ note output
962
+ fin.entry
963
+ }
964
+
965
+ FUNCTION {proceedings}
966
+ { output.bibitem
967
+ format.editors output
968
+ editor format.key output
969
+ new.block
970
+ format.btitle "title" output.check
971
+ format.bvolume output
972
+ format.number.series output
973
+ address output
974
+ format.date "year" output.check
975
+ new.sentence
976
+ organization output
977
+ publisher output
978
+ format.isbn output
979
+ format.doi output
980
+ format.url output
981
+ new.block
982
+ note output
983
+ fin.entry
984
+ }
985
+
986
+ FUNCTION {techreport}
987
+ { output.bibitem
988
+ format.authors "author" output.check
989
+ author format.key output
990
+ new.block
991
+ format.title "title" output.check
992
+ new.block
993
+ format.tr.number output.nonnull
994
+ institution "institution" output.check
995
+ address output
996
+ format.date "year" output.check
997
+ format.url output
998
+ new.block
999
+ note output
1000
+ fin.entry
1001
+ }
1002
+
1003
+ FUNCTION {unpublished}
1004
+ { output.bibitem
1005
+ format.authors "author" output.check
1006
+ author format.key output
1007
+ new.block
1008
+ format.title "title" output.check
1009
+ new.block
1010
+ note "note" output.check
1011
+ format.date output
1012
+ format.url output
1013
+ fin.entry
1014
+ }
1015
+
1016
+ FUNCTION {default.type} { misc }
1017
+
1018
+
1019
+ MACRO {jan} {"January"}
1020
+
1021
+ MACRO {feb} {"February"}
1022
+
1023
+ MACRO {mar} {"March"}
1024
+
1025
+ MACRO {apr} {"April"}
1026
+
1027
+ MACRO {may} {"May"}
1028
+
1029
+ MACRO {jun} {"June"}
1030
+
1031
+ MACRO {jul} {"July"}
1032
+
1033
+ MACRO {aug} {"August"}
1034
+
1035
+ MACRO {sep} {"September"}
1036
+
1037
+ MACRO {oct} {"October"}
1038
+
1039
+ MACRO {nov} {"November"}
1040
+
1041
+ MACRO {dec} {"December"}
1042
+
1043
+
1044
+
1045
+ MACRO {acmcs} {"ACM Computing Surveys"}
1046
+
1047
+ MACRO {acta} {"Acta Informatica"}
1048
+
1049
+ MACRO {cacm} {"Communications of the ACM"}
1050
+
1051
+ MACRO {ibmjrd} {"IBM Journal of Research and Development"}
1052
+
1053
+ MACRO {ibmsj} {"IBM Systems Journal"}
1054
+
1055
+ MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
1056
+
1057
+ MACRO {ieeetc} {"IEEE Transactions on Computers"}
1058
+
1059
+ MACRO {ieeetcad}
1060
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
1061
+
1062
+ MACRO {ipl} {"Information Processing Letters"}
1063
+
1064
+ MACRO {jacm} {"Journal of the ACM"}
1065
+
1066
+ MACRO {jcss} {"Journal of Computer and System Sciences"}
1067
+
1068
+ MACRO {scp} {"Science of Computer Programming"}
1069
+
1070
+ MACRO {sicomp} {"SIAM Journal on Computing"}
1071
+
1072
+ MACRO {tocs} {"ACM Transactions on Computer Systems"}
1073
+
1074
+ MACRO {tods} {"ACM Transactions on Database Systems"}
1075
+
1076
+ MACRO {tog} {"ACM Transactions on Graphics"}
1077
+
1078
+ MACRO {toms} {"ACM Transactions on Mathematical Software"}
1079
+
1080
+ MACRO {toois} {"ACM Transactions on Office Information Systems"}
1081
+
1082
+ MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
1083
+
1084
+ MACRO {tcs} {"Theoretical Computer Science"}
1085
+
1086
+
1087
+ READ
1088
+
1089
+ FUNCTION {sortify}
1090
+ { purify$
1091
+ "l" change.case$
1092
+ }
1093
+
1094
+ INTEGERS { len }
1095
+
1096
+ FUNCTION {chop.word}
1097
+ { 's :=
1098
+ 'len :=
1099
+ s #1 len substring$ =
1100
+ { s len #1 + global.max$ substring$ }
1101
+ 's
1102
+ if$
1103
+ }
1104
+
1105
+ FUNCTION {format.lab.names}
1106
+ { 's :=
1107
+ s #1 "{vv~}{ll}" format.name$
1108
+ s num.names$ duplicate$
1109
+ #2 >
1110
+ { pop$ " et~al." * }
1111
+ { #2 <
1112
+ 'skip$
1113
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
1114
+ { " et~al." * }
1115
+ { " \& " * s #2 "{vv~}{ll}" format.name$ * }
1116
+ if$
1117
+ }
1118
+ if$
1119
+ }
1120
+ if$
1121
+ }
1122
+
1123
+ FUNCTION {author.key.label}
1124
+ { author empty$
1125
+ { key empty$
1126
+ { cite$ #1 #3 substring$ }
1127
+ 'key
1128
+ if$
1129
+ }
1130
+ { author format.lab.names }
1131
+ if$
1132
+ }
1133
+
1134
+ FUNCTION {author.editor.key.label}
1135
+ { author empty$
1136
+ { editor empty$
1137
+ { key empty$
1138
+ { cite$ #1 #3 substring$ }
1139
+ 'key
1140
+ if$
1141
+ }
1142
+ { editor format.lab.names }
1143
+ if$
1144
+ }
1145
+ { author format.lab.names }
1146
+ if$
1147
+ }
1148
+
1149
+ FUNCTION {author.key.organization.label}
1150
+ { author empty$
1151
+ { key empty$
1152
+ { organization empty$
1153
+ { cite$ #1 #3 substring$ }
1154
+ { "The " #4 organization chop.word #3 text.prefix$ }
1155
+ if$
1156
+ }
1157
+ 'key
1158
+ if$
1159
+ }
1160
+ { author format.lab.names }
1161
+ if$
1162
+ }
1163
+
1164
+ FUNCTION {editor.key.organization.label}
1165
+ { editor empty$
1166
+ { key empty$
1167
+ { organization empty$
1168
+ { cite$ #1 #3 substring$ }
1169
+ { "The " #4 organization chop.word #3 text.prefix$ }
1170
+ if$
1171
+ }
1172
+ 'key
1173
+ if$
1174
+ }
1175
+ { editor format.lab.names }
1176
+ if$
1177
+ }
1178
+
1179
+ FUNCTION {calc.short.authors}
1180
+ { type$ "book" =
1181
+ type$ "inbook" =
1182
+ or
1183
+ 'author.editor.key.label
1184
+ { type$ "proceedings" =
1185
+ 'editor.key.organization.label
1186
+ { type$ "manual" =
1187
+ 'author.key.organization.label
1188
+ 'author.key.label
1189
+ if$
1190
+ }
1191
+ if$
1192
+ }
1193
+ if$
1194
+ 'short.list :=
1195
+ }
1196
+
1197
+ FUNCTION {calc.label}
1198
+ { calc.short.authors
1199
+ short.list
1200
+ "("
1201
+ *
1202
+ year duplicate$ empty$
1203
+ short.list key field.or.null = or
1204
+ { pop$ "" }
1205
+ 'skip$
1206
+ if$
1207
+ *
1208
+ 'label :=
1209
+ }
1210
+
1211
+ FUNCTION {sort.format.names}
1212
+ { 's :=
1213
+ #1 'nameptr :=
1214
+ ""
1215
+ s num.names$ 'numnames :=
1216
+ numnames 'namesleft :=
1217
+ { namesleft #0 > }
1218
+ {
1219
+ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
1220
+ nameptr #1 >
1221
+ {
1222
+ " " *
1223
+ namesleft #1 = t "others" = and
1224
+ { "zzzzz" * }
1225
+ { numnames #2 > nameptr #2 = and
1226
+ { "zz" * year field.or.null * " " * }
1227
+ 'skip$
1228
+ if$
1229
+ t sortify *
1230
+ }
1231
+ if$
1232
+ }
1233
+ { t sortify * }
1234
+ if$
1235
+ nameptr #1 + 'nameptr :=
1236
+ namesleft #1 - 'namesleft :=
1237
+ }
1238
+ while$
1239
+ }
1240
+
1241
+ FUNCTION {sort.format.title}
1242
+ { 't :=
1243
+ "A " #2
1244
+ "An " #3
1245
+ "The " #4 t chop.word
1246
+ chop.word
1247
+ chop.word
1248
+ sortify
1249
+ #1 global.max$ substring$
1250
+ }
1251
+
1252
+ FUNCTION {author.sort}
1253
+ { author empty$
1254
+ { key empty$
1255
+ { "to sort, need author or key in " cite$ * warning$
1256
+ ""
1257
+ }
1258
+ { key sortify }
1259
+ if$
1260
+ }
1261
+ { author sort.format.names }
1262
+ if$
1263
+ }
1264
+
1265
+ FUNCTION {author.editor.sort}
1266
+ { author empty$
1267
+ { editor empty$
1268
+ { key empty$
1269
+ { "to sort, need author, editor, or key in " cite$ * warning$
1270
+ ""
1271
+ }
1272
+ { key sortify }
1273
+ if$
1274
+ }
1275
+ { editor sort.format.names }
1276
+ if$
1277
+ }
1278
+ { author sort.format.names }
1279
+ if$
1280
+ }
1281
+
1282
+ FUNCTION {author.organization.sort}
1283
+ { author empty$
1284
+ { organization empty$
1285
+ { key empty$
1286
+ { "to sort, need author, organization, or key in " cite$ * warning$
1287
+ ""
1288
+ }
1289
+ { key sortify }
1290
+ if$
1291
+ }
1292
+ { "The " #4 organization chop.word sortify }
1293
+ if$
1294
+ }
1295
+ { author sort.format.names }
1296
+ if$
1297
+ }
1298
+
1299
+ FUNCTION {editor.organization.sort}
1300
+ { editor empty$
1301
+ { organization empty$
1302
+ { key empty$
1303
+ { "to sort, need editor, organization, or key in " cite$ * warning$
1304
+ ""
1305
+ }
1306
+ { key sortify }
1307
+ if$
1308
+ }
1309
+ { "The " #4 organization chop.word sortify }
1310
+ if$
1311
+ }
1312
+ { editor sort.format.names }
1313
+ if$
1314
+ }
1315
+
1316
+
1317
+ FUNCTION {presort}
1318
+ { calc.label
1319
+ label sortify
1320
+ " "
1321
+ *
1322
+ type$ "book" =
1323
+ type$ "inbook" =
1324
+ or
1325
+ 'author.editor.sort
1326
+ { type$ "proceedings" =
1327
+ 'editor.organization.sort
1328
+ { type$ "manual" =
1329
+ 'author.organization.sort
1330
+ 'author.sort
1331
+ if$
1332
+ }
1333
+ if$
1334
+ }
1335
+ if$
1336
+ " "
1337
+ *
1338
+ year field.or.null sortify
1339
+ *
1340
+ " "
1341
+ *
1342
+ cite$
1343
+ *
1344
+ #1 entry.max$ substring$
1345
+ 'sort.label :=
1346
+ sort.label *
1347
+ #1 entry.max$ substring$
1348
+ 'sort.key$ :=
1349
+ }
1350
+
1351
+ ITERATE {presort}
1352
+
1353
+ SORT
1354
+
1355
+ STRINGS { longest.label last.label next.extra }
1356
+
1357
+ INTEGERS { longest.label.width last.extra.num number.label }
1358
+
1359
+ FUNCTION {initialize.longest.label}
1360
+ { "" 'longest.label :=
1361
+ #0 int.to.chr$ 'last.label :=
1362
+ "" 'next.extra :=
1363
+ #0 'longest.label.width :=
1364
+ #0 'last.extra.num :=
1365
+ #0 'number.label :=
1366
+ }
1367
+
1368
+ FUNCTION {forward.pass}
1369
+ { last.label label =
1370
+ { last.extra.num #1 + 'last.extra.num :=
1371
+ last.extra.num int.to.chr$ 'extra.label :=
1372
+ }
1373
+ { "a" chr.to.int$ 'last.extra.num :=
1374
+ "" 'extra.label :=
1375
+ label 'last.label :=
1376
+ }
1377
+ if$
1378
+ number.label #1 + 'number.label :=
1379
+ }
1380
+
1381
+ FUNCTION {reverse.pass}
1382
+ { next.extra "b" =
1383
+ { "a" 'extra.label := }
1384
+ 'skip$
1385
+ if$
1386
+ extra.label 'next.extra :=
1387
+ extra.label
1388
+ duplicate$ empty$
1389
+ 'skip$
1390
+ { "{\natexlab{" swap$ * "}}" * }
1391
+ if$
1392
+ 'extra.label :=
1393
+ label extra.label * 'label :=
1394
+ }
1395
+
1396
+ EXECUTE {initialize.longest.label}
1397
+
1398
+ ITERATE {forward.pass}
1399
+
1400
+ REVERSE {reverse.pass}
1401
+
1402
+ FUNCTION {bib.sort.order}
1403
+ { sort.label 'sort.key$ :=
1404
+ }
1405
+
1406
+ ITERATE {bib.sort.order}
1407
+
1408
+ SORT
1409
+
1410
+ FUNCTION {begin.bib}
1411
+ { preamble$ empty$
1412
+ 'skip$
1413
+ { preamble$ write$ newline$ }
1414
+ if$
1415
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
1416
+ write$ newline$
1417
+ "\providecommand{\natexlab}[1]{#1}"
1418
+ write$ newline$
1419
+ "\providecommand{\url}[1]{\texttt{#1}}"
1420
+ write$ newline$
1421
+ "\expandafter\ifx\csname urlstyle\endcsname\relax"
1422
+ write$ newline$
1423
+ " \providecommand{\doi}[1]{doi: #1}\else"
1424
+ write$ newline$
1425
+ " \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
1426
+ write$ newline$
1427
+ }
1428
+
1429
+ EXECUTE {begin.bib}
1430
+
1431
+ EXECUTE {init.state.consts}
1432
+
1433
+ ITERATE {call.type$}
1434
+
1435
+ FUNCTION {end.bib}
1436
+ { newline$
1437
+ "\end{thebibliography}" write$ newline$
1438
+ }
1439
+
1440
+ EXECUTE {end.bib}
outputs/outputs_20230608_115759/iclr2022_conference.sty ADDED
@@ -0,0 +1,245 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ %%%% ICLR Macros (LaTex)
2
+ %%%% Adapted by Hugo Larochelle from the NIPS stylefile Macros
3
+ %%%% Style File
4
+ %%%% Dec 12, 1990 Rev Aug 14, 1991; Sept, 1995; April, 1997; April, 1999; October 2014
5
+
6
+ % This file can be used with Latex2e whether running in main mode, or
7
+ % 2.09 compatibility mode.
8
+ %
9
+ % If using main mode, you need to include the commands
10
+ % \documentclass{article}
11
+ % \usepackage{iclr14submit_e,times}
12
+ %
13
+
14
+ % Change the overall width of the page. If these parameters are
15
+ % changed, they will require corresponding changes in the
16
+ % maketitle section.
17
+ %
18
+ \usepackage{eso-pic} % used by \AddToShipoutPicture
19
+ \RequirePackage{fancyhdr}
20
+ \RequirePackage{natbib}
21
+
22
+ % modification to natbib citations
23
+ \setcitestyle{authoryear,round,citesep={;},aysep={,},yysep={;}}
24
+
25
+ \renewcommand{\topfraction}{0.95} % let figure take up nearly whole page
26
+ \renewcommand{\textfraction}{0.05} % let figure take up nearly whole page
27
+
28
+ % Define iclrfinal, set to true if iclrfinalcopy is defined
29
+ \newif\ificlrfinal
30
+ \iclrfinalfalse
31
+ \def\iclrfinalcopy{\iclrfinaltrue}
32
+ \font\iclrtenhv = phvb at 8pt
33
+
34
+ % Specify the dimensions of each page
35
+
36
+ \setlength{\paperheight}{11in}
37
+ \setlength{\paperwidth}{8.5in}
38
+
39
+
40
+ \oddsidemargin .5in % Note \oddsidemargin = \evensidemargin
41
+ \evensidemargin .5in
42
+ \marginparwidth 0.07 true in
43
+ %\marginparwidth 0.75 true in
44
+ %\topmargin 0 true pt % Nominal distance from top of page to top of
45
+ %\topmargin 0.125in
46
+ \topmargin -0.625in
47
+ \addtolength{\headsep}{0.25in}
48
+ \textheight 9.0 true in % Height of text (including footnotes & figures)
49
+ \textwidth 5.5 true in % Width of text line.
50
+ \widowpenalty=10000
51
+ \clubpenalty=10000
52
+
53
+ % \thispagestyle{empty} \pagestyle{empty}
54
+ \flushbottom \sloppy
55
+
56
+ % We're never going to need a table of contents, so just flush it to
57
+ % save space --- suggested by drstrip@sandia-2
58
+ \def\addcontentsline#1#2#3{}
59
+
60
+ % Title stuff, taken from deproc.
61
+ \def\maketitle{\par
62
+ \begingroup
63
+ \def\thefootnote{\fnsymbol{footnote}}
64
+ \def\@makefnmark{\hbox to 0pt{$^{\@thefnmark}$\hss}} % for perfect author
65
+ % name centering
66
+ % The footnote-mark was overlapping the footnote-text,
67
+ % added the following to fix this problem (MK)
68
+ \long\def\@makefntext##1{\parindent 1em\noindent
69
+ \hbox to1.8em{\hss $\m@th ^{\@thefnmark}$}##1}
70
+ \@maketitle \@thanks
71
+ \endgroup
72
+ \setcounter{footnote}{0}
73
+ \let\maketitle\relax \let\@maketitle\relax
74
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
75
+
76
+ % The toptitlebar has been raised to top-justify the first page
77
+
78
+ \usepackage{fancyhdr}
79
+ \pagestyle{fancy}
80
+ \fancyhead{}
81
+
82
+ % Title (includes both anonimized and non-anonimized versions)
83
+ \def\@maketitle{\vbox{\hsize\textwidth
84
+ %\linewidth\hsize \vskip 0.1in \toptitlebar \centering
85
+ {\LARGE\sc \@title\par}
86
+ %\bottomtitlebar % \vskip 0.1in % minus
87
+ \ificlrfinal
88
+ \lhead{Published as a conference paper at ICLR 2022}
89
+ \def\And{\end{tabular}\hfil\linebreak[0]\hfil
90
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
91
+ \def\AND{\end{tabular}\hfil\linebreak[4]\hfil
92
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
93
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\@author\end{tabular}%
94
+ \else
95
+ \lhead{Under review as a conference paper at ICLR 2022}
96
+ \def\And{\end{tabular}\hfil\linebreak[0]\hfil
97
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
98
+ \def\AND{\end{tabular}\hfil\linebreak[4]\hfil
99
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
100
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}Anonymous authors\\Paper under double-blind review\end{tabular}%
101
+ \fi
102
+ \vskip 0.3in minus 0.1in}}
103
+
104
+ \renewenvironment{abstract}{\vskip.075in\centerline{\large\sc
105
+ Abstract}\vspace{0.5ex}\begin{quote}}{\par\end{quote}\vskip 1ex}
106
+
107
+ % sections with less space
108
+ \def\section{\@startsection {section}{1}{\z@}{-2.0ex plus
109
+ -0.5ex minus -.2ex}{1.5ex plus 0.3ex
110
+ minus0.2ex}{\large\sc\raggedright}}
111
+
112
+ \def\subsection{\@startsection{subsection}{2}{\z@}{-1.8ex plus
113
+ -0.5ex minus -.2ex}{0.8ex plus .2ex}{\normalsize\sc\raggedright}}
114
+ \def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-1.5ex
115
+ plus -0.5ex minus -.2ex}{0.5ex plus
116
+ .2ex}{\normalsize\sc\raggedright}}
117
+ \def\paragraph{\@startsection{paragraph}{4}{\z@}{1.5ex plus
118
+ 0.5ex minus .2ex}{-1em}{\normalsize\bf}}
119
+ \def\subparagraph{\@startsection{subparagraph}{5}{\z@}{1.5ex plus
120
+ 0.5ex minus .2ex}{-1em}{\normalsize\sc}}
121
+ \def\subsubsubsection{\vskip
122
+ 5pt{\noindent\normalsize\rm\raggedright}}
123
+
124
+
125
+ % Footnotes
126
+ \footnotesep 6.65pt %
127
+ \skip\footins 9pt plus 4pt minus 2pt
128
+ \def\footnoterule{\kern-3pt \hrule width 12pc \kern 2.6pt }
129
+ \setcounter{footnote}{0}
130
+
131
+ % Lists and paragraphs
132
+ \parindent 0pt
133
+ \topsep 4pt plus 1pt minus 2pt
134
+ \partopsep 1pt plus 0.5pt minus 0.5pt
135
+ \itemsep 2pt plus 1pt minus 0.5pt
136
+ \parsep 2pt plus 1pt minus 0.5pt
137
+ \parskip .5pc
138
+
139
+
140
+ %\leftmargin2em
141
+ \leftmargin3pc
142
+ \leftmargini\leftmargin \leftmarginii 2em
143
+ \leftmarginiii 1.5em \leftmarginiv 1.0em \leftmarginv .5em
144
+
145
+ %\labelsep \labelsep 5pt
146
+
147
+ \def\@listi{\leftmargin\leftmargini}
148
+ \def\@listii{\leftmargin\leftmarginii
149
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
150
+ \topsep 2pt plus 1pt minus 0.5pt
151
+ \parsep 1pt plus 0.5pt minus 0.5pt
152
+ \itemsep \parsep}
153
+ \def\@listiii{\leftmargin\leftmarginiii
154
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
155
+ \topsep 1pt plus 0.5pt minus 0.5pt
156
+ \parsep \z@ \partopsep 0.5pt plus 0pt minus 0.5pt
157
+ \itemsep \topsep}
158
+ \def\@listiv{\leftmargin\leftmarginiv
159
+ \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
160
+ \def\@listv{\leftmargin\leftmarginv
161
+ \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
162
+ \def\@listvi{\leftmargin\leftmarginvi
163
+ \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
164
+
165
+ \abovedisplayskip 7pt plus2pt minus5pt%
166
+ \belowdisplayskip \abovedisplayskip
167
+ \abovedisplayshortskip 0pt plus3pt%
168
+ \belowdisplayshortskip 4pt plus3pt minus3pt%
169
+
170
+ % Less leading in most fonts (due to the narrow columns)
171
+ % The choices were between 1-pt and 1.5-pt leading
172
+ %\def\@normalsize{\@setsize\normalsize{11pt}\xpt\@xpt} % got rid of @ (MK)
173
+ \def\normalsize{\@setsize\normalsize{11pt}\xpt\@xpt}
174
+ \def\small{\@setsize\small{10pt}\ixpt\@ixpt}
175
+ \def\footnotesize{\@setsize\footnotesize{10pt}\ixpt\@ixpt}
176
+ \def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
177
+ \def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
178
+ \def\large{\@setsize\large{14pt}\xiipt\@xiipt}
179
+ \def\Large{\@setsize\Large{16pt}\xivpt\@xivpt}
180
+ \def\LARGE{\@setsize\LARGE{20pt}\xviipt\@xviipt}
181
+ \def\huge{\@setsize\huge{23pt}\xxpt\@xxpt}
182
+ \def\Huge{\@setsize\Huge{28pt}\xxvpt\@xxvpt}
183
+
184
+ \def\toptitlebar{\hrule height4pt\vskip .25in\vskip-\parskip}
185
+
186
+ \def\bottomtitlebar{\vskip .29in\vskip-\parskip\hrule height1pt\vskip
187
+ .09in} %
188
+ %Reduced second vskip to compensate for adding the strut in \@author
189
+
190
+
191
+ %% % Vertical Ruler
192
+ %% % This code is, largely, from the CVPR 2010 conference style file
193
+ %% % ----- define vruler
194
+ %% \makeatletter
195
+ %% \newbox\iclrrulerbox
196
+ %% \newcount\iclrrulercount
197
+ %% \newdimen\iclrruleroffset
198
+ %% \newdimen\cv@lineheight
199
+ %% \newdimen\cv@boxheight
200
+ %% \newbox\cv@tmpbox
201
+ %% \newcount\cv@refno
202
+ %% \newcount\cv@tot
203
+ %% % NUMBER with left flushed zeros \fillzeros[<WIDTH>]<NUMBER>
204
+ %% \newcount\cv@tmpc@ \newcount\cv@tmpc
205
+ %% \def\fillzeros[#1]#2{\cv@tmpc@=#2\relax\ifnum\cv@tmpc@<0\cv@tmpc@=-\cv@tmpc@\fi
206
+ %% \cv@tmpc=1 %
207
+ %% \loop\ifnum\cv@tmpc@<10 \else \divide\cv@tmpc@ by 10 \advance\cv@tmpc by 1 \fi
208
+ %% \ifnum\cv@tmpc@=10\relax\cv@tmpc@=11\relax\fi \ifnum\cv@tmpc@>10 \repeat
209
+ %% \ifnum#2<0\advance\cv@tmpc1\relax-\fi
210
+ %% \loop\ifnum\cv@tmpc<#1\relax0\advance\cv@tmpc1\relax\fi \ifnum\cv@tmpc<#1 \repeat
211
+ %% \cv@tmpc@=#2\relax\ifnum\cv@tmpc@<0\cv@tmpc@=-\cv@tmpc@\fi \relax\the\cv@tmpc@}%
212
+ %% % \makevruler[<SCALE>][<INITIAL_COUNT>][<STEP>][<DIGITS>][<HEIGHT>]
213
+ %% \def\makevruler[#1][#2][#3][#4][#5]{\begingroup\offinterlineskip
214
+ %% \textheight=#5\vbadness=10000\vfuzz=120ex\overfullrule=0pt%
215
+ %% \global\setbox\iclrrulerbox=\vbox to \textheight{%
216
+ %% {\parskip=0pt\hfuzz=150em\cv@boxheight=\textheight
217
+ %% \cv@lineheight=#1\global\iclrrulercount=#2%
218
+ %% \cv@tot\cv@boxheight\divide\cv@tot\cv@lineheight\advance\cv@tot2%
219
+ %% \cv@refno1\vskip-\cv@lineheight\vskip1ex%
220
+ %% \loop\setbox\cv@tmpbox=\hbox to0cm{{\iclrtenhv\hfil\fillzeros[#4]\iclrrulercount}}%
221
+ %% \ht\cv@tmpbox\cv@lineheight\dp\cv@tmpbox0pt\box\cv@tmpbox\break
222
+ %% \advance\cv@refno1\global\advance\iclrrulercount#3\relax
223
+ %% \ifnum\cv@refno<\cv@tot\repeat}}\endgroup}%
224
+ %% \makeatother
225
+ %% % ----- end of vruler
226
+
227
+ %% % \makevruler[<SCALE>][<INITIAL_COUNT>][<STEP>][<DIGITS>][<HEIGHT>]
228
+ %% \def\iclrruler#1{\makevruler[12pt][#1][1][3][0.993\textheight]\usebox{\iclrrulerbox}}
229
+ %% \AddToShipoutPicture{%
230
+ %% \ificlrfinal\else
231
+ %% \iclrruleroffset=\textheight
232
+ %% \advance\iclrruleroffset by -3.7pt
233
+ %% \color[rgb]{.7,.7,.7}
234
+ %% \AtTextUpperLeft{%
235
+ %% \put(\LenToUnit{-35pt},\LenToUnit{-\iclrruleroffset}){%left ruler
236
+ %% \iclrruler{\iclrrulercount}}
237
+ %% }
238
+ %% \fi
239
+ %% }
240
+ %%% To add a vertical bar on the side
241
+ %\AddToShipoutPicture{
242
+ %\AtTextLowerLeft{
243
+ %\hspace*{-1.8cm}
244
+ %\colorbox[rgb]{0.7,0.7,0.7}{\small \parbox[b][\textheight]{0.1cm}{}}}
245
+ %}
outputs/outputs_20230608_115759/introduction.tex ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ \section{Introduction}
2
+
3
+ The rapid development of artificial intelligence and machine learning has led to significant advancements in various domains, including reinforcement learning (RL) and multi-agent systems. One particularly notable application of RL is in the domain of Atari games, where deep learning models have been successfully employed to learn control policies directly from high-dimensional sensory input \citep{mnih2013playing}. However, the centralized nature of traditional RL algorithms poses challenges in terms of scalability and privacy, motivating the exploration of decentralized RL approaches \citep{liu2022federated}. In this paper, we address the problem of playing Atari games using decentralized reinforcement learning, aiming to develop a scalable and privacy-preserving solution that maintains high performance.
4
+
5
+ Our proposed solution builds upon recent advancements in decentralized RL, which have demonstrated promising results in various scenarios, such as collision avoidance \citep{thumiger2022a}, cooperative multi-agent reinforcement learning \citep{su2022ma2ql}, and edge-computing-empowered Internet of Things (IoT) networks \citep{lei2022adaptive}. While these works provide valuable insights, our approach specifically targets the unique challenges associated with playing Atari games, such as high-dimensional sensory input and complex decision-making processes. By leveraging the strengths of decentralized RL algorithms, we aim to outperform centralized approaches in terms of scalability and privacy while maintaining competitive performance.
6
+
7
+ This paper makes three novel contributions to the field of decentralized reinforcement learning. First, we present a new decentralized RL algorithm specifically tailored for playing Atari games, addressing the challenges of high-dimensional sensory input and complex decision-making. Second, we provide a comprehensive analysis of the algorithm's performance, comparing it to state-of-the-art centralized and decentralized RL approaches on a diverse set of Atari games. Finally, we offer insights into the trade-offs between scalability, privacy, and performance in decentralized RL, highlighting the benefits and limitations of our proposed approach.
8
+
9
+ To contextualize our work, we briefly discuss key related works in the field of decentralized RL. The Safe Dec-PG algorithm, proposed by \citet{lu2021decentralized}, is the first decentralized policy gradient method that accounts for coupled safety constraints in multi-agent reinforcement learning. Another relevant work is the decentralized collision avoidance approach by \citet{thumiger2022a}, which employs a unique architecture incorporating long-short term memory cells and a gradient-based reward function. While these works demonstrate the potential of decentralized RL, our approach specifically targets the challenges associated with playing Atari games, offering a novel solution in this domain.
10
+
11
+ In summary, this paper presents a novel decentralized RL algorithm for playing Atari games, aiming to achieve high performance while maintaining scalability and privacy. By building upon recent advancements in decentralized RL, we contribute to the growing body of research in this area, offering valuable insights into the trade-offs between scalability, privacy, and performance in decentralized reinforcement learning.
outputs/outputs_20230608_115759/main.tex ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ \documentclass{article} % For LaTeX2e
2
+ \UseRawInputEncoding
3
+ \usepackage{graphicx}
4
+ \usepackage{booktabs}
5
+ \usepackage{iclr2022_conference, times}
6
+ \input{math_commands.tex}
7
+ \usepackage{hyperref}
8
+ \usepackage{url}
9
+ \usepackage{algorithm}
10
+ \usepackage{algpseudocode}
11
+
12
+ \title{Playing Atari with Decentralized Reinforcement Learning}
13
+ \author{GPT-4}
14
+
15
+ \newcommand{\fix}{\marginpar{FIX}}
16
+ \newcommand{\new}{\marginpar{NEW}}
17
+
18
+ \begin{document}
19
+ \maketitle
20
+ \input{abstract.tex}
21
+ \input{introduction.tex}
22
+ \input{related works.tex}
23
+ \input{backgrounds.tex}
24
+ \input{methodology.tex}
25
+ \input{experiments.tex}
26
+ \input{conclusion.tex}
27
+
28
+ \bibliography{ref}
29
+ \bibliographystyle{iclr2022_conference}
30
+
31
+ %\appendix
32
+ %\section{Appendix}
33
+ %You may include other additional sections here.
34
+
35
+ \end{document}
outputs/outputs_20230608_115759/math_commands.tex ADDED
@@ -0,0 +1,508 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ %%%%% NEW MATH DEFINITIONS %%%%%
2
+
3
+ \usepackage{amsmath,amsfonts,bm}
4
+
5
+ % Mark sections of captions for referring to divisions of figures
6
+ \newcommand{\figleft}{{\em (Left)}}
7
+ \newcommand{\figcenter}{{\em (Center)}}
8
+ \newcommand{\figright}{{\em (Right)}}
9
+ \newcommand{\figtop}{{\em (Top)}}
10
+ \newcommand{\figbottom}{{\em (Bottom)}}
11
+ \newcommand{\captiona}{{\em (a)}}
12
+ \newcommand{\captionb}{{\em (b)}}
13
+ \newcommand{\captionc}{{\em (c)}}
14
+ \newcommand{\captiond}{{\em (d)}}
15
+
16
+ % Highlight a newly defined term
17
+ \newcommand{\newterm}[1]{{\bf #1}}
18
+
19
+
20
+ % Figure reference, lower-case.
21
+ \def\figref#1{figure~\ref{#1}}
22
+ % Figure reference, capital. For start of sentence
23
+ \def\Figref#1{Figure~\ref{#1}}
24
+ \def\twofigref#1#2{figures \ref{#1} and \ref{#2}}
25
+ \def\quadfigref#1#2#3#4{figures \ref{#1}, \ref{#2}, \ref{#3} and \ref{#4}}
26
+ % Section reference, lower-case.
27
+ \def\secref#1{section~\ref{#1}}
28
+ % Section reference, capital.
29
+ \def\Secref#1{Section~\ref{#1}}
30
+ % Reference to two sections.
31
+ \def\twosecrefs#1#2{sections \ref{#1} and \ref{#2}}
32
+ % Reference to three sections.
33
+ \def\secrefs#1#2#3{sections \ref{#1}, \ref{#2} and \ref{#3}}
34
+ % Reference to an equation, lower-case.
35
+ \def\eqref#1{equation~\ref{#1}}
36
+ % Reference to an equation, upper case
37
+ \def\Eqref#1{Equation~\ref{#1}}
38
+ % A raw reference to an equation---avoid using if possible
39
+ \def\plaineqref#1{\ref{#1}}
40
+ % Reference to a chapter, lower-case.
41
+ \def\chapref#1{chapter~\ref{#1}}
42
+ % Reference to an equation, upper case.
43
+ \def\Chapref#1{Chapter~\ref{#1}}
44
+ % Reference to a range of chapters
45
+ \def\rangechapref#1#2{chapters\ref{#1}--\ref{#2}}
46
+ % Reference to an algorithm, lower-case.
47
+ \def\algref#1{algorithm~\ref{#1}}
48
+ % Reference to an algorithm, upper case.
49
+ \def\Algref#1{Algorithm~\ref{#1}}
50
+ \def\twoalgref#1#2{algorithms \ref{#1} and \ref{#2}}
51
+ \def\Twoalgref#1#2{Algorithms \ref{#1} and \ref{#2}}
52
+ % Reference to a part, lower case
53
+ \def\partref#1{part~\ref{#1}}
54
+ % Reference to a part, upper case
55
+ \def\Partref#1{Part~\ref{#1}}
56
+ \def\twopartref#1#2{parts \ref{#1} and \ref{#2}}
57
+
58
+ \def\ceil#1{\lceil #1 \rceil}
59
+ \def\floor#1{\lfloor #1 \rfloor}
60
+ \def\1{\bm{1}}
61
+ \newcommand{\train}{\mathcal{D}}
62
+ \newcommand{\valid}{\mathcal{D_{\mathrm{valid}}}}
63
+ \newcommand{\test}{\mathcal{D_{\mathrm{test}}}}
64
+
65
+ \def\eps{{\epsilon}}
66
+
67
+
68
+ % Random variables
69
+ \def\reta{{\textnormal{$\eta$}}}
70
+ \def\ra{{\textnormal{a}}}
71
+ \def\rb{{\textnormal{b}}}
72
+ \def\rc{{\textnormal{c}}}
73
+ \def\rd{{\textnormal{d}}}
74
+ \def\re{{\textnormal{e}}}
75
+ \def\rf{{\textnormal{f}}}
76
+ \def\rg{{\textnormal{g}}}
77
+ \def\rh{{\textnormal{h}}}
78
+ \def\ri{{\textnormal{i}}}
79
+ \def\rj{{\textnormal{j}}}
80
+ \def\rk{{\textnormal{k}}}
81
+ \def\rl{{\textnormal{l}}}
82
+ % rm is already a command, just don't name any random variables m
83
+ \def\rn{{\textnormal{n}}}
84
+ \def\ro{{\textnormal{o}}}
85
+ \def\rp{{\textnormal{p}}}
86
+ \def\rq{{\textnormal{q}}}
87
+ \def\rr{{\textnormal{r}}}
88
+ \def\rs{{\textnormal{s}}}
89
+ \def\rt{{\textnormal{t}}}
90
+ \def\ru{{\textnormal{u}}}
91
+ \def\rv{{\textnormal{v}}}
92
+ \def\rw{{\textnormal{w}}}
93
+ \def\rx{{\textnormal{x}}}
94
+ \def\ry{{\textnormal{y}}}
95
+ \def\rz{{\textnormal{z}}}
96
+
97
+ % Random vectors
98
+ \def\rvepsilon{{\mathbf{\epsilon}}}
99
+ \def\rvtheta{{\mathbf{\theta}}}
100
+ \def\rva{{\mathbf{a}}}
101
+ \def\rvb{{\mathbf{b}}}
102
+ \def\rvc{{\mathbf{c}}}
103
+ \def\rvd{{\mathbf{d}}}
104
+ \def\rve{{\mathbf{e}}}
105
+ \def\rvf{{\mathbf{f}}}
106
+ \def\rvg{{\mathbf{g}}}
107
+ \def\rvh{{\mathbf{h}}}
108
+ \def\rvu{{\mathbf{i}}}
109
+ \def\rvj{{\mathbf{j}}}
110
+ \def\rvk{{\mathbf{k}}}
111
+ \def\rvl{{\mathbf{l}}}
112
+ \def\rvm{{\mathbf{m}}}
113
+ \def\rvn{{\mathbf{n}}}
114
+ \def\rvo{{\mathbf{o}}}
115
+ \def\rvp{{\mathbf{p}}}
116
+ \def\rvq{{\mathbf{q}}}
117
+ \def\rvr{{\mathbf{r}}}
118
+ \def\rvs{{\mathbf{s}}}
119
+ \def\rvt{{\mathbf{t}}}
120
+ \def\rvu{{\mathbf{u}}}
121
+ \def\rvv{{\mathbf{v}}}
122
+ \def\rvw{{\mathbf{w}}}
123
+ \def\rvx{{\mathbf{x}}}
124
+ \def\rvy{{\mathbf{y}}}
125
+ \def\rvz{{\mathbf{z}}}
126
+
127
+ % Elements of random vectors
128
+ \def\erva{{\textnormal{a}}}
129
+ \def\ervb{{\textnormal{b}}}
130
+ \def\ervc{{\textnormal{c}}}
131
+ \def\ervd{{\textnormal{d}}}
132
+ \def\erve{{\textnormal{e}}}
133
+ \def\ervf{{\textnormal{f}}}
134
+ \def\ervg{{\textnormal{g}}}
135
+ \def\ervh{{\textnormal{h}}}
136
+ \def\ervi{{\textnormal{i}}}
137
+ \def\ervj{{\textnormal{j}}}
138
+ \def\ervk{{\textnormal{k}}}
139
+ \def\ervl{{\textnormal{l}}}
140
+ \def\ervm{{\textnormal{m}}}
141
+ \def\ervn{{\textnormal{n}}}
142
+ \def\ervo{{\textnormal{o}}}
143
+ \def\ervp{{\textnormal{p}}}
144
+ \def\ervq{{\textnormal{q}}}
145
+ \def\ervr{{\textnormal{r}}}
146
+ \def\ervs{{\textnormal{s}}}
147
+ \def\ervt{{\textnormal{t}}}
148
+ \def\ervu{{\textnormal{u}}}
149
+ \def\ervv{{\textnormal{v}}}
150
+ \def\ervw{{\textnormal{w}}}
151
+ \def\ervx{{\textnormal{x}}}
152
+ \def\ervy{{\textnormal{y}}}
153
+ \def\ervz{{\textnormal{z}}}
154
+
155
+ % Random matrices
156
+ \def\rmA{{\mathbf{A}}}
157
+ \def\rmB{{\mathbf{B}}}
158
+ \def\rmC{{\mathbf{C}}}
159
+ \def\rmD{{\mathbf{D}}}
160
+ \def\rmE{{\mathbf{E}}}
161
+ \def\rmF{{\mathbf{F}}}
162
+ \def\rmG{{\mathbf{G}}}
163
+ \def\rmH{{\mathbf{H}}}
164
+ \def\rmI{{\mathbf{I}}}
165
+ \def\rmJ{{\mathbf{J}}}
166
+ \def\rmK{{\mathbf{K}}}
167
+ \def\rmL{{\mathbf{L}}}
168
+ \def\rmM{{\mathbf{M}}}
169
+ \def\rmN{{\mathbf{N}}}
170
+ \def\rmO{{\mathbf{O}}}
171
+ \def\rmP{{\mathbf{P}}}
172
+ \def\rmQ{{\mathbf{Q}}}
173
+ \def\rmR{{\mathbf{R}}}
174
+ \def\rmS{{\mathbf{S}}}
175
+ \def\rmT{{\mathbf{T}}}
176
+ \def\rmU{{\mathbf{U}}}
177
+ \def\rmV{{\mathbf{V}}}
178
+ \def\rmW{{\mathbf{W}}}
179
+ \def\rmX{{\mathbf{X}}}
180
+ \def\rmY{{\mathbf{Y}}}
181
+ \def\rmZ{{\mathbf{Z}}}
182
+
183
+ % Elements of random matrices
184
+ \def\ermA{{\textnormal{A}}}
185
+ \def\ermB{{\textnormal{B}}}
186
+ \def\ermC{{\textnormal{C}}}
187
+ \def\ermD{{\textnormal{D}}}
188
+ \def\ermE{{\textnormal{E}}}
189
+ \def\ermF{{\textnormal{F}}}
190
+ \def\ermG{{\textnormal{G}}}
191
+ \def\ermH{{\textnormal{H}}}
192
+ \def\ermI{{\textnormal{I}}}
193
+ \def\ermJ{{\textnormal{J}}}
194
+ \def\ermK{{\textnormal{K}}}
195
+ \def\ermL{{\textnormal{L}}}
196
+ \def\ermM{{\textnormal{M}}}
197
+ \def\ermN{{\textnormal{N}}}
198
+ \def\ermO{{\textnormal{O}}}
199
+ \def\ermP{{\textnormal{P}}}
200
+ \def\ermQ{{\textnormal{Q}}}
201
+ \def\ermR{{\textnormal{R}}}
202
+ \def\ermS{{\textnormal{S}}}
203
+ \def\ermT{{\textnormal{T}}}
204
+ \def\ermU{{\textnormal{U}}}
205
+ \def\ermV{{\textnormal{V}}}
206
+ \def\ermW{{\textnormal{W}}}
207
+ \def\ermX{{\textnormal{X}}}
208
+ \def\ermY{{\textnormal{Y}}}
209
+ \def\ermZ{{\textnormal{Z}}}
210
+
211
+ % Vectors
212
+ \def\vzero{{\bm{0}}}
213
+ \def\vone{{\bm{1}}}
214
+ \def\vmu{{\bm{\mu}}}
215
+ \def\vtheta{{\bm{\theta}}}
216
+ \def\va{{\bm{a}}}
217
+ \def\vb{{\bm{b}}}
218
+ \def\vc{{\bm{c}}}
219
+ \def\vd{{\bm{d}}}
220
+ \def\ve{{\bm{e}}}
221
+ \def\vf{{\bm{f}}}
222
+ \def\vg{{\bm{g}}}
223
+ \def\vh{{\bm{h}}}
224
+ \def\vi{{\bm{i}}}
225
+ \def\vj{{\bm{j}}}
226
+ \def\vk{{\bm{k}}}
227
+ \def\vl{{\bm{l}}}
228
+ \def\vm{{\bm{m}}}
229
+ \def\vn{{\bm{n}}}
230
+ \def\vo{{\bm{o}}}
231
+ \def\vp{{\bm{p}}}
232
+ \def\vq{{\bm{q}}}
233
+ \def\vr{{\bm{r}}}
234
+ \def\vs{{\bm{s}}}
235
+ \def\vt{{\bm{t}}}
236
+ \def\vu{{\bm{u}}}
237
+ \def\vv{{\bm{v}}}
238
+ \def\vw{{\bm{w}}}
239
+ \def\vx{{\bm{x}}}
240
+ \def\vy{{\bm{y}}}
241
+ \def\vz{{\bm{z}}}
242
+
243
+ % Elements of vectors
244
+ \def\evalpha{{\alpha}}
245
+ \def\evbeta{{\beta}}
246
+ \def\evepsilon{{\epsilon}}
247
+ \def\evlambda{{\lambda}}
248
+ \def\evomega{{\omega}}
249
+ \def\evmu{{\mu}}
250
+ \def\evpsi{{\psi}}
251
+ \def\evsigma{{\sigma}}
252
+ \def\evtheta{{\theta}}
253
+ \def\eva{{a}}
254
+ \def\evb{{b}}
255
+ \def\evc{{c}}
256
+ \def\evd{{d}}
257
+ \def\eve{{e}}
258
+ \def\evf{{f}}
259
+ \def\evg{{g}}
260
+ \def\evh{{h}}
261
+ \def\evi{{i}}
262
+ \def\evj{{j}}
263
+ \def\evk{{k}}
264
+ \def\evl{{l}}
265
+ \def\evm{{m}}
266
+ \def\evn{{n}}
267
+ \def\evo{{o}}
268
+ \def\evp{{p}}
269
+ \def\evq{{q}}
270
+ \def\evr{{r}}
271
+ \def\evs{{s}}
272
+ \def\evt{{t}}
273
+ \def\evu{{u}}
274
+ \def\evv{{v}}
275
+ \def\evw{{w}}
276
+ \def\evx{{x}}
277
+ \def\evy{{y}}
278
+ \def\evz{{z}}
279
+
280
+ % Matrix
281
+ \def\mA{{\bm{A}}}
282
+ \def\mB{{\bm{B}}}
283
+ \def\mC{{\bm{C}}}
284
+ \def\mD{{\bm{D}}}
285
+ \def\mE{{\bm{E}}}
286
+ \def\mF{{\bm{F}}}
287
+ \def\mG{{\bm{G}}}
288
+ \def\mH{{\bm{H}}}
289
+ \def\mI{{\bm{I}}}
290
+ \def\mJ{{\bm{J}}}
291
+ \def\mK{{\bm{K}}}
292
+ \def\mL{{\bm{L}}}
293
+ \def\mM{{\bm{M}}}
294
+ \def\mN{{\bm{N}}}
295
+ \def\mO{{\bm{O}}}
296
+ \def\mP{{\bm{P}}}
297
+ \def\mQ{{\bm{Q}}}
298
+ \def\mR{{\bm{R}}}
299
+ \def\mS{{\bm{S}}}
300
+ \def\mT{{\bm{T}}}
301
+ \def\mU{{\bm{U}}}
302
+ \def\mV{{\bm{V}}}
303
+ \def\mW{{\bm{W}}}
304
+ \def\mX{{\bm{X}}}
305
+ \def\mY{{\bm{Y}}}
306
+ \def\mZ{{\bm{Z}}}
307
+ \def\mBeta{{\bm{\beta}}}
308
+ \def\mPhi{{\bm{\Phi}}}
309
+ \def\mLambda{{\bm{\Lambda}}}
310
+ \def\mSigma{{\bm{\Sigma}}}
311
+
312
+ % Tensor
313
+ \DeclareMathAlphabet{\mathsfit}{\encodingdefault}{\sfdefault}{m}{sl}
314
+ \SetMathAlphabet{\mathsfit}{bold}{\encodingdefault}{\sfdefault}{bx}{n}
315
+ \newcommand{\tens}[1]{\bm{\mathsfit{#1}}}
316
+ \def\tA{{\tens{A}}}
317
+ \def\tB{{\tens{B}}}
318
+ \def\tC{{\tens{C}}}
319
+ \def\tD{{\tens{D}}}
320
+ \def\tE{{\tens{E}}}
321
+ \def\tF{{\tens{F}}}
322
+ \def\tG{{\tens{G}}}
323
+ \def\tH{{\tens{H}}}
324
+ \def\tI{{\tens{I}}}
325
+ \def\tJ{{\tens{J}}}
326
+ \def\tK{{\tens{K}}}
327
+ \def\tL{{\tens{L}}}
328
+ \def\tM{{\tens{M}}}
329
+ \def\tN{{\tens{N}}}
330
+ \def\tO{{\tens{O}}}
331
+ \def\tP{{\tens{P}}}
332
+ \def\tQ{{\tens{Q}}}
333
+ \def\tR{{\tens{R}}}
334
+ \def\tS{{\tens{S}}}
335
+ \def\tT{{\tens{T}}}
336
+ \def\tU{{\tens{U}}}
337
+ \def\tV{{\tens{V}}}
338
+ \def\tW{{\tens{W}}}
339
+ \def\tX{{\tens{X}}}
340
+ \def\tY{{\tens{Y}}}
341
+ \def\tZ{{\tens{Z}}}
342
+
343
+
344
+ % Graph
345
+ \def\gA{{\mathcal{A}}}
346
+ \def\gB{{\mathcal{B}}}
347
+ \def\gC{{\mathcal{C}}}
348
+ \def\gD{{\mathcal{D}}}
349
+ \def\gE{{\mathcal{E}}}
350
+ \def\gF{{\mathcal{F}}}
351
+ \def\gG{{\mathcal{G}}}
352
+ \def\gH{{\mathcal{H}}}
353
+ \def\gI{{\mathcal{I}}}
354
+ \def\gJ{{\mathcal{J}}}
355
+ \def\gK{{\mathcal{K}}}
356
+ \def\gL{{\mathcal{L}}}
357
+ \def\gM{{\mathcal{M}}}
358
+ \def\gN{{\mathcal{N}}}
359
+ \def\gO{{\mathcal{O}}}
360
+ \def\gP{{\mathcal{P}}}
361
+ \def\gQ{{\mathcal{Q}}}
362
+ \def\gR{{\mathcal{R}}}
363
+ \def\gS{{\mathcal{S}}}
364
+ \def\gT{{\mathcal{T}}}
365
+ \def\gU{{\mathcal{U}}}
366
+ \def\gV{{\mathcal{V}}}
367
+ \def\gW{{\mathcal{W}}}
368
+ \def\gX{{\mathcal{X}}}
369
+ \def\gY{{\mathcal{Y}}}
370
+ \def\gZ{{\mathcal{Z}}}
371
+
372
+ % Sets
373
+ \def\sA{{\mathbb{A}}}
374
+ \def\sB{{\mathbb{B}}}
375
+ \def\sC{{\mathbb{C}}}
376
+ \def\sD{{\mathbb{D}}}
377
+ % Don't use a set called E, because this would be the same as our symbol
378
+ % for expectation.
379
+ \def\sF{{\mathbb{F}}}
380
+ \def\sG{{\mathbb{G}}}
381
+ \def\sH{{\mathbb{H}}}
382
+ \def\sI{{\mathbb{I}}}
383
+ \def\sJ{{\mathbb{J}}}
384
+ \def\sK{{\mathbb{K}}}
385
+ \def\sL{{\mathbb{L}}}
386
+ \def\sM{{\mathbb{M}}}
387
+ \def\sN{{\mathbb{N}}}
388
+ \def\sO{{\mathbb{O}}}
389
+ \def\sP{{\mathbb{P}}}
390
+ \def\sQ{{\mathbb{Q}}}
391
+ \def\sR{{\mathbb{R}}}
392
+ \def\sS{{\mathbb{S}}}
393
+ \def\sT{{\mathbb{T}}}
394
+ \def\sU{{\mathbb{U}}}
395
+ \def\sV{{\mathbb{V}}}
396
+ \def\sW{{\mathbb{W}}}
397
+ \def\sX{{\mathbb{X}}}
398
+ \def\sY{{\mathbb{Y}}}
399
+ \def\sZ{{\mathbb{Z}}}
400
+
401
+ % Entries of a matrix
402
+ \def\emLambda{{\Lambda}}
403
+ \def\emA{{A}}
404
+ \def\emB{{B}}
405
+ \def\emC{{C}}
406
+ \def\emD{{D}}
407
+ \def\emE{{E}}
408
+ \def\emF{{F}}
409
+ \def\emG{{G}}
410
+ \def\emH{{H}}
411
+ \def\emI{{I}}
412
+ \def\emJ{{J}}
413
+ \def\emK{{K}}
414
+ \def\emL{{L}}
415
+ \def\emM{{M}}
416
+ \def\emN{{N}}
417
+ \def\emO{{O}}
418
+ \def\emP{{P}}
419
+ \def\emQ{{Q}}
420
+ \def\emR{{R}}
421
+ \def\emS{{S}}
422
+ \def\emT{{T}}
423
+ \def\emU{{U}}
424
+ \def\emV{{V}}
425
+ \def\emW{{W}}
426
+ \def\emX{{X}}
427
+ \def\emY{{Y}}
428
+ \def\emZ{{Z}}
429
+ \def\emSigma{{\Sigma}}
430
+
431
+ % entries of a tensor
432
+ % Same font as tensor, without \bm wrapper
433
+ \newcommand{\etens}[1]{\mathsfit{#1}}
434
+ \def\etLambda{{\etens{\Lambda}}}
435
+ \def\etA{{\etens{A}}}
436
+ \def\etB{{\etens{B}}}
437
+ \def\etC{{\etens{C}}}
438
+ \def\etD{{\etens{D}}}
439
+ \def\etE{{\etens{E}}}
440
+ \def\etF{{\etens{F}}}
441
+ \def\etG{{\etens{G}}}
442
+ \def\etH{{\etens{H}}}
443
+ \def\etI{{\etens{I}}}
444
+ \def\etJ{{\etens{J}}}
445
+ \def\etK{{\etens{K}}}
446
+ \def\etL{{\etens{L}}}
447
+ \def\etM{{\etens{M}}}
448
+ \def\etN{{\etens{N}}}
449
+ \def\etO{{\etens{O}}}
450
+ \def\etP{{\etens{P}}}
451
+ \def\etQ{{\etens{Q}}}
452
+ \def\etR{{\etens{R}}}
453
+ \def\etS{{\etens{S}}}
454
+ \def\etT{{\etens{T}}}
455
+ \def\etU{{\etens{U}}}
456
+ \def\etV{{\etens{V}}}
457
+ \def\etW{{\etens{W}}}
458
+ \def\etX{{\etens{X}}}
459
+ \def\etY{{\etens{Y}}}
460
+ \def\etZ{{\etens{Z}}}
461
+
462
+ % The true underlying data generating distribution
463
+ \newcommand{\pdata}{p_{\rm{data}}}
464
+ % The empirical distribution defined by the training set
465
+ \newcommand{\ptrain}{\hat{p}_{\rm{data}}}
466
+ \newcommand{\Ptrain}{\hat{P}_{\rm{data}}}
467
+ % The model distribution
468
+ \newcommand{\pmodel}{p_{\rm{model}}}
469
+ \newcommand{\Pmodel}{P_{\rm{model}}}
470
+ \newcommand{\ptildemodel}{\tilde{p}_{\rm{model}}}
471
+ % Stochastic autoencoder distributions
472
+ \newcommand{\pencode}{p_{\rm{encoder}}}
473
+ \newcommand{\pdecode}{p_{\rm{decoder}}}
474
+ \newcommand{\precons}{p_{\rm{reconstruct}}}
475
+
476
+ \newcommand{\laplace}{\mathrm{Laplace}} % Laplace distribution
477
+
478
+ \newcommand{\E}{\mathbb{E}}
479
+ \newcommand{\Ls}{\mathcal{L}}
480
+ \newcommand{\R}{\mathbb{R}}
481
+ \newcommand{\emp}{\tilde{p}}
482
+ \newcommand{\lr}{\alpha}
483
+ \newcommand{\reg}{\lambda}
484
+ \newcommand{\rect}{\mathrm{rectifier}}
485
+ \newcommand{\softmax}{\mathrm{softmax}}
486
+ \newcommand{\sigmoid}{\sigma}
487
+ \newcommand{\softplus}{\zeta}
488
+ \newcommand{\KL}{D_{\mathrm{KL}}}
489
+ \newcommand{\Var}{\mathrm{Var}}
490
+ \newcommand{\standarderror}{\mathrm{SE}}
491
+ \newcommand{\Cov}{\mathrm{Cov}}
492
+ % Wolfram Mathworld says $L^2$ is for function spaces and $\ell^2$ is for vectors
493
+ % But then they seem to use $L^2$ for vectors throughout the site, and so does
494
+ % wikipedia.
495
+ \newcommand{\normlzero}{L^0}
496
+ \newcommand{\normlone}{L^1}
497
+ \newcommand{\normltwo}{L^2}
498
+ \newcommand{\normlp}{L^p}
499
+ \newcommand{\normmax}{L^\infty}
500
+
501
+ \newcommand{\parents}{Pa} % See usage in notation.tex. Chosen to match Daphne's book.
502
+
503
+ \DeclareMathOperator*{\argmax}{arg\,max}
504
+ \DeclareMathOperator*{\argmin}{arg\,min}
505
+
506
+ \DeclareMathOperator{\sign}{sign}
507
+ \DeclareMathOperator{\Tr}{Tr}
508
+ \let\ab\allowbreak
outputs/outputs_20230608_115759/methodology.tex ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ \section{methodology}
2
+
3
+ In this section, we present the methodology of our proposed decentralized reinforcement learning (RL) algorithm for playing Atari games. We begin with a high-level overview of the method, followed by a detailed formulation of the algorithm and an explanation of how it overcomes the weaknesses of existing methods. Finally, we highlight the key concepts in our approach and elaborate on their novelty using formulas and figures.
4
+
5
+ \subsection{Overview of the Proposed Method}
6
+
7
+ Our proposed method, Decentralized Atari Learning (DAL), combines the strengths of both value-based and policy-based decentralized RL algorithms to address the challenges of high-dimensional sensory input and complex decision-making processes in Atari games. The key components of DAL include a decentralized Q-learning framework, a policy gradient-based optimization technique, and a novel communication mechanism that enables agents to share information and coordinate their actions while preserving privacy and reducing communication overhead. Figure \ref{fig1} provides a high-level illustration of the DAL architecture.
8
+
9
+ \begin{figure}[h]
10
+ \centering
11
+ \includegraphics[width=0.8\textwidth]{fig1.png}
12
+ \caption{High-level architecture of the Decentralized Atari Learning (DAL) algorithm.}
13
+ \label{fig1}
14
+ \end{figure}
15
+
16
+ \subsection{Formulation of the Decentralized Atari Learning Algorithm}
17
+
18
+ The DAL algorithm is designed to overcome the weaknesses of existing decentralized RL methods by incorporating techniques from deep RL, such as experience replay and target networks, to improve stability and convergence. The algorithm consists of the following main steps:
19
+
20
+ \begin{algorithm}[h]
21
+ \caption{Decentralized Atari Learning (DAL)}
22
+ \begin{algorithmic}[1]
23
+ \STATE Initialize the decentralized Q-network $Q(s, a; \theta)$ and the target network $Q(s, a; \theta^-)$ with random weights $\theta$ and $\theta^-$.
24
+ \FOR{each agent $i$}
25
+ \STATE Initialize the experience replay buffer $D_i$.
26
+ \FOR{each episode}
27
+ \STATE Initialize the state $s$.
28
+ \FOR{each time step $t$}
29
+ \STATE Agent $i$ selects an action $a$ according to its local policy $\pi_i$ and the decentralized Q-network $Q(s, a; \theta)$.
30
+ \STATE Agent $i$ takes action $a$, observes the next state $s'$ and reward $r$, and stores the transition $(s, a, r, s')$ in its experience replay buffer $D_i$.
31
+ \STATE Agent $i$ samples a mini-batch of transitions from $D_i$ and computes the target values $y = r + \gamma \max_{a'} Q(s', a'; \theta^-)$.
32
+ \STATE Agent $i$ updates the decentralized Q-network $Q(s, a; \theta)$ using the policy gradient-based optimization technique.
33
+ \STATE Agent $i$ updates the target network $Q(s, a; \theta^-)$ with the weights of the decentralized Q-network $Q(s, a; \theta)$.
34
+ \STATE Agent $i$ communicates with neighboring agents to share information and coordinate actions while preserving privacy and reducing communication overhead.
35
+ \STATE Update the state $s \leftarrow s'$.
36
+ \ENDFOR
37
+ \ENDFOR
38
+ \ENDFOR
39
+ \end{algorithmic}
40
+ \end{algorithm}
41
+
42
+ \subsection{Key Concepts and Novelty of the Decentralized Atari Learning Algorithm}
43
+
44
+ The novelty of the DAL algorithm lies in its combination of value-based and policy-based decentralized RL techniques, as well as its unique communication mechanism that enables agents to share information and coordinate their actions while preserving privacy and reducing communication overhead. In this subsection, we elaborate on these key concepts using formulas and figures.
45
+
46
+ \paragraph{Decentralized Q-learning and Policy Gradient Optimization}
47
+
48
+ The DAL algorithm builds upon the decentralized Q-learning framework and incorporates a policy gradient-based optimization technique to balance the trade-offs between exploration and exploitation. The decentralized Q-network $Q(s, a; \theta)$ is used to estimate the action-value function, while the policy gradient-based optimization technique is employed to update the network weights $\theta$. This combination allows the algorithm to learn more efficiently in high-dimensional state spaces and complex decision-making processes, as illustrated in Figure \ref{fig2}.
49
+
50
+ \begin{figure}[h]
51
+ \centering
52
+ \includegraphics[width=0.8\textwidth]{fig2.png}
53
+ \caption{Illustration of the decentralized Q-learning and policy gradient optimization in the DAL algorithm.}
54
+ \label{fig2}
55
+ \end{figure}
56
+
57
+ \paragraph{Novel Communication Mechanism}
58
+
59
+ The communication mechanism in DAL enables agents to share information and coordinate their actions while preserving privacy and reducing communication overhead. This is achieved through a secure and efficient communication protocol that allows agents to exchange only the necessary information for coordination, without revealing their entire state or action history. Figure \ref{fig3} provides an illustration of the communication mechanism in the DAL algorithm.
60
+
61
+ \begin{figure}[h]
62
+ \centering
63
+ \includegraphics[width=0.8\textwidth]{fig3.png}
64
+ \caption{Illustration of the novel communication mechanism in the DAL algorithm.}
65
+ \label{fig3}
66
+ \end{figure}
67
+
68
+ In summary, our proposed Decentralized Atari Learning (DAL) algorithm combines the strengths of both value-based and policy-based decentralized RL techniques and introduces a novel communication mechanism to address the challenges of high-dimensional sensory input and complex decision-making processes in Atari games. The algorithm demonstrates competitive performance compared to centralized methods and outperforms existing decentralized RL algorithms in the Atari domain.
outputs/outputs_20230608_115759/natbib.sty ADDED
@@ -0,0 +1,1246 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ %%
2
+ %% This is file `natbib.sty',
3
+ %% generated with the docstrip utility.
4
+ %%
5
+ %% The original source files were:
6
+ %%
7
+ %% natbib.dtx (with options: `package,all')
8
+ %% =============================================
9
+ %% IMPORTANT NOTICE:
10
+ %%
11
+ %% This program can be redistributed and/or modified under the terms
12
+ %% of the LaTeX Project Public License Distributed from CTAN
13
+ %% archives in directory macros/latex/base/lppl.txt; either
14
+ %% version 1 of the License, or any later version.
15
+ %%
16
+ %% This is a generated file.
17
+ %% It may not be distributed without the original source file natbib.dtx.
18
+ %%
19
+ %% Full documentation can be obtained by LaTeXing that original file.
20
+ %% Only a few abbreviated comments remain here to describe the usage.
21
+ %% =============================================
22
+ %% Copyright 1993-2009 Patrick W Daly
23
+ %% Max-Planck-Institut f\"ur Sonnensystemforschung
24
+ %% Max-Planck-Str. 2
25
+ %% D-37191 Katlenburg-Lindau
26
+ %% Germany
27
+ %% E-mail: daly@mps.mpg.de
28
+ \NeedsTeXFormat{LaTeX2e}[1995/06/01]
29
+ \ProvidesPackage{natbib}
30
+ [2009/07/16 8.31 (PWD, AO)]
31
+
32
+ % This package reimplements the LaTeX \cite command to be used for various
33
+ % citation styles, both author-year and numerical. It accepts BibTeX
34
+ % output intended for many other packages, and therefore acts as a
35
+ % general, all-purpose citation-style interface.
36
+ %
37
+ % With standard numerical .bst files, only numerical citations are
38
+ % possible. With an author-year .bst file, both numerical and
39
+ % author-year citations are possible.
40
+ %
41
+ % If author-year citations are selected, \bibitem must have one of the
42
+ % following forms:
43
+ % \bibitem[Jones et al.(1990)]{key}...
44
+ % \bibitem[Jones et al.(1990)Jones, Baker, and Williams]{key}...
45
+ % \bibitem[Jones et al., 1990]{key}...
46
+ % \bibitem[\protect\citeauthoryear{Jones, Baker, and Williams}{Jones
47
+ % et al.}{1990}]{key}...
48
+ % \bibitem[\protect\citeauthoryear{Jones et al.}{1990}]{key}...
49
+ % \bibitem[\protect\astroncite{Jones et al.}{1990}]{key}...
50
+ % \bibitem[\protect\citename{Jones et al., }1990]{key}...
51
+ % \harvarditem[Jones et al.]{Jones, Baker, and Williams}{1990}{key}...
52
+ %
53
+ % This is either to be made up manually, or to be generated by an
54
+ % appropriate .bst file with BibTeX.
55
+ % Author-year mode || Numerical mode
56
+ % Then, \citet{key} ==>> Jones et al. (1990) || Jones et al. [21]
57
+ % \citep{key} ==>> (Jones et al., 1990) || [21]
58
+ % Multiple citations as normal:
59
+ % \citep{key1,key2} ==>> (Jones et al., 1990; Smith, 1989) || [21,24]
60
+ % or (Jones et al., 1990, 1991) || [21,24]
61
+ % or (Jones et al., 1990a,b) || [21,24]
62
+ % \cite{key} is the equivalent of \citet{key} in author-year mode
63
+ % and of \citep{key} in numerical mode
64
+ % Full author lists may be forced with \citet* or \citep*, e.g.
65
+ % \citep*{key} ==>> (Jones, Baker, and Williams, 1990)
66
+ % Optional notes as:
67
+ % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
68
+ % \citep[e.g.,][]{key} ==>> (e.g., Jones et al., 1990)
69
+ % \citep[see][pg. 34]{key}==>> (see Jones et al., 1990, pg. 34)
70
+ % (Note: in standard LaTeX, only one note is allowed, after the ref.
71
+ % Here, one note is like the standard, two make pre- and post-notes.)
72
+ % \citealt{key} ==>> Jones et al. 1990
73
+ % \citealt*{key} ==>> Jones, Baker, and Williams 1990
74
+ % \citealp{key} ==>> Jones et al., 1990
75
+ % \citealp*{key} ==>> Jones, Baker, and Williams, 1990
76
+ % Additional citation possibilities (both author-year and numerical modes)
77
+ % \citeauthor{key} ==>> Jones et al.
78
+ % \citeauthor*{key} ==>> Jones, Baker, and Williams
79
+ % \citeyear{key} ==>> 1990
80
+ % \citeyearpar{key} ==>> (1990)
81
+ % \citetext{priv. comm.} ==>> (priv. comm.)
82
+ % \citenum{key} ==>> 11 [non-superscripted]
83
+ % Note: full author lists depends on whether the bib style supports them;
84
+ % if not, the abbreviated list is printed even when full requested.
85
+ %
86
+ % For names like della Robbia at the start of a sentence, use
87
+ % \Citet{dRob98} ==>> Della Robbia (1998)
88
+ % \Citep{dRob98} ==>> (Della Robbia, 1998)
89
+ % \Citeauthor{dRob98} ==>> Della Robbia
90
+ %
91
+ %
92
+ % Citation aliasing is achieved with
93
+ % \defcitealias{key}{text}
94
+ % \citetalias{key} ==>> text
95
+ % \citepalias{key} ==>> (text)
96
+ %
97
+ % Defining the citation mode and punctual (citation style)
98
+ % \setcitestyle{<comma-separated list of keywords, same
99
+ % as the package options>}
100
+ % Example: \setcitestyle{square,semicolon}
101
+ % Alternatively:
102
+ % Use \bibpunct with 6 mandatory arguments:
103
+ % 1. opening bracket for citation
104
+ % 2. closing bracket
105
+ % 3. citation separator (for multiple citations in one \cite)
106
+ % 4. the letter n for numerical styles, s for superscripts
107
+ % else anything for author-year
108
+ % 5. punctuation between authors and date
109
+ % 6. punctuation between years (or numbers) when common authors missing
110
+ % One optional argument is the character coming before post-notes. It
111
+ % appears in square braces before all other arguments. May be left off.
112
+ % Example (and default) \bibpunct[, ]{(}{)}{;}{a}{,}{,}
113
+ %
114
+ % To make this automatic for a given bib style, named newbib, say, make
115
+ % a local configuration file, natbib.cfg, with the definition
116
+ % \newcommand{\bibstyle@newbib}{\bibpunct...}
117
+ % Then the \bibliographystyle{newbib} will cause \bibstyle@newbib to
118
+ % be called on THE NEXT LATEX RUN (via the aux file).
119
+ %
120
+ % Such preprogrammed definitions may be invoked anywhere in the text
121
+ % by calling \citestyle{newbib}. This is only useful if the style specified
122
+ % differs from that in \bibliographystyle.
123
+ %
124
+ % With \citeindextrue and \citeindexfalse, one can control whether the
125
+ % \cite commands make an automatic entry of the citation in the .idx
126
+ % indexing file. For this, \makeindex must also be given in the preamble.
127
+ %
128
+ % Package Options: (for selecting punctuation)
129
+ % round - round parentheses are used (default)
130
+ % square - square brackets are used [option]
131
+ % curly - curly braces are used {option}
132
+ % angle - angle brackets are used <option>
133
+ % semicolon - multiple citations separated by semi-colon (default)
134
+ % colon - same as semicolon, an earlier confusion
135
+ % comma - separated by comma
136
+ % authoryear - selects author-year citations (default)
137
+ % numbers- selects numerical citations
138
+ % super - numerical citations as superscripts
139
+ % sort - sorts multiple citations according to order in ref. list
140
+ % sort&compress - like sort, but also compresses numerical citations
141
+ % compress - compresses without sorting
142
+ % longnamesfirst - makes first citation full author list
143
+ % sectionbib - puts bibliography in a \section* instead of \chapter*
144
+ % merge - allows the citation key to have a * prefix,
145
+ % signifying to merge its reference with that of the previous citation.
146
+ % elide - if references are merged, repeated portions of later ones may be removed.
147
+ % mcite - recognizes and ignores the * prefix for merging.
148
+ % Punctuation so selected dominates over any predefined ones.
149
+ % Package options are called as, e.g.
150
+ % \usepackage[square,comma]{natbib}
151
+ % LaTeX the source file natbib.dtx to obtain more details
152
+ % or the file natnotes.tex for a brief reference sheet.
153
+ %-----------------------------------------------------------
154
+ \providecommand\@ifxundefined[1]{%
155
+ \ifx#1\@undefined\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
156
+ }%
157
+ \providecommand\@ifnum[1]{%
158
+ \ifnum#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
159
+ }%
160
+ \providecommand\@ifx[1]{%
161
+ \ifx#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
162
+ }%
163
+ \providecommand\appdef[2]{%
164
+ \toks@\expandafter{#1}\@temptokena{#2}%
165
+ \edef#1{\the\toks@\the\@temptokena}%
166
+ }%
167
+ \@ifclassloaded{agu2001}{\PackageError{natbib}
168
+ {The agu2001 class already includes natbib coding,\MessageBreak
169
+ so you should not add it explicitly}
170
+ {Type <Return> for now, but then later remove\MessageBreak
171
+ the command \protect\usepackage{natbib} from the document}
172
+ \endinput}{}
173
+ \@ifclassloaded{agutex}{\PackageError{natbib}
174
+ {The AGUTeX class already includes natbib coding,\MessageBreak
175
+ so you should not add it explicitly}
176
+ {Type <Return> for now, but then later remove\MessageBreak
177
+ the command \protect\usepackage{natbib} from the document}
178
+ \endinput}{}
179
+ \@ifclassloaded{aguplus}{\PackageError{natbib}
180
+ {The aguplus class already includes natbib coding,\MessageBreak
181
+ so you should not add it explicitly}
182
+ {Type <Return> for now, but then later remove\MessageBreak
183
+ the command \protect\usepackage{natbib} from the document}
184
+ \endinput}{}
185
+ \@ifclassloaded{nlinproc}{\PackageError{natbib}
186
+ {The nlinproc class already includes natbib coding,\MessageBreak
187
+ so you should not add it explicitly}
188
+ {Type <Return> for now, but then later remove\MessageBreak
189
+ the command \protect\usepackage{natbib} from the document}
190
+ \endinput}{}
191
+ \@ifclassloaded{egs}{\PackageError{natbib}
192
+ {The egs class already includes natbib coding,\MessageBreak
193
+ so you should not add it explicitly}
194
+ {Type <Return> for now, but then later remove\MessageBreak
195
+ the command \protect\usepackage{natbib} from the document}
196
+ \endinput}{}
197
+ \@ifclassloaded{egu}{\PackageError{natbib}
198
+ {The egu class already includes natbib coding,\MessageBreak
199
+ so you should not add it explicitly}
200
+ {Type <Return> for now, but then later remove\MessageBreak
201
+ the command \protect\usepackage{natbib} from the document}
202
+ \endinput}{}
203
+ % Define citation punctuation for some author-year styles
204
+ % One may add and delete at this point
205
+ % Or put additions into local configuration file natbib.cfg
206
+ \newcommand\bibstyle@chicago{\bibpunct{(}{)}{;}{a}{,}{,}}
207
+ \newcommand\bibstyle@named{\bibpunct{[}{]}{;}{a}{,}{,}}
208
+ \newcommand\bibstyle@agu{\bibpunct{[}{]}{;}{a}{,}{,~}}%Amer. Geophys. Union
209
+ \newcommand\bibstyle@copernicus{\bibpunct{(}{)}{;}{a}{,}{,}}%Copernicus Publications
210
+ \let\bibstyle@egu=\bibstyle@copernicus
211
+ \let\bibstyle@egs=\bibstyle@copernicus
212
+ \newcommand\bibstyle@agsm{\bibpunct{(}{)}{,}{a}{}{,}\gdef\harvardand{\&}}
213
+ \newcommand\bibstyle@kluwer{\bibpunct{(}{)}{,}{a}{}{,}\gdef\harvardand{\&}}
214
+ \newcommand\bibstyle@dcu{\bibpunct{(}{)}{;}{a}{;}{,}\gdef\harvardand{and}}
215
+ \newcommand\bibstyle@aa{\bibpunct{(}{)}{;}{a}{}{,}} %Astronomy & Astrophysics
216
+ \newcommand\bibstyle@pass{\bibpunct{(}{)}{;}{a}{,}{,}}%Planet. & Space Sci
217
+ \newcommand\bibstyle@anngeo{\bibpunct{(}{)}{;}{a}{,}{,}}%Annales Geophysicae
218
+ \newcommand\bibstyle@nlinproc{\bibpunct{(}{)}{;}{a}{,}{,}}%Nonlin.Proc.Geophys.
219
+ % Define citation punctuation for some numerical styles
220
+ \newcommand\bibstyle@cospar{\bibpunct{/}{/}{,}{n}{}{}%
221
+ \gdef\bibnumfmt##1{##1.}}
222
+ \newcommand\bibstyle@esa{\bibpunct{(Ref.~}{)}{,}{n}{}{}%
223
+ \gdef\bibnumfmt##1{##1.\hspace{1em}}}
224
+ \newcommand\bibstyle@nature{\bibpunct{}{}{,}{s}{}{\textsuperscript{,}}%
225
+ \gdef\bibnumfmt##1{##1.}}
226
+ % The standard LaTeX styles
227
+ \newcommand\bibstyle@plain{\bibpunct{[}{]}{,}{n}{}{,}}
228
+ \let\bibstyle@alpha=\bibstyle@plain
229
+ \let\bibstyle@abbrv=\bibstyle@plain
230
+ \let\bibstyle@unsrt=\bibstyle@plain
231
+ % The author-year modifications of the standard styles
232
+ \newcommand\bibstyle@plainnat{\bibpunct{[}{]}{,}{a}{,}{,}}
233
+ \let\bibstyle@abbrvnat=\bibstyle@plainnat
234
+ \let\bibstyle@unsrtnat=\bibstyle@plainnat
235
+ \newif\ifNAT@numbers \NAT@numbersfalse
236
+ \newif\ifNAT@super \NAT@superfalse
237
+ \let\NAT@merge\z@
238
+ \DeclareOption{numbers}{\NAT@numberstrue
239
+ \ExecuteOptions{square,comma,nobibstyle}}
240
+ \DeclareOption{super}{\NAT@supertrue\NAT@numberstrue
241
+ \renewcommand\NAT@open{}\renewcommand\NAT@close{}
242
+ \ExecuteOptions{nobibstyle}}
243
+ \DeclareOption{authoryear}{\NAT@numbersfalse
244
+ \ExecuteOptions{round,semicolon,bibstyle}}
245
+ \DeclareOption{round}{%
246
+ \renewcommand\NAT@open{(} \renewcommand\NAT@close{)}
247
+ \ExecuteOptions{nobibstyle}}
248
+ \DeclareOption{square}{%
249
+ \renewcommand\NAT@open{[} \renewcommand\NAT@close{]}
250
+ \ExecuteOptions{nobibstyle}}
251
+ \DeclareOption{angle}{%
252
+ \renewcommand\NAT@open{$<$} \renewcommand\NAT@close{$>$}
253
+ \ExecuteOptions{nobibstyle}}
254
+ \DeclareOption{curly}{%
255
+ \renewcommand\NAT@open{\{} \renewcommand\NAT@close{\}}
256
+ \ExecuteOptions{nobibstyle}}
257
+ \DeclareOption{comma}{\renewcommand\NAT@sep{,}
258
+ \ExecuteOptions{nobibstyle}}
259
+ \DeclareOption{semicolon}{\renewcommand\NAT@sep{;}
260
+ \ExecuteOptions{nobibstyle}}
261
+ \DeclareOption{colon}{\ExecuteOptions{semicolon}}
262
+ \DeclareOption{nobibstyle}{\let\bibstyle=\@gobble}
263
+ \DeclareOption{bibstyle}{\let\bibstyle=\@citestyle}
264
+ \newif\ifNAT@openbib \NAT@openbibfalse
265
+ \DeclareOption{openbib}{\NAT@openbibtrue}
266
+ \DeclareOption{sectionbib}{\def\NAT@sectionbib{on}}
267
+ \def\NAT@sort{\z@}
268
+ \def\NAT@cmprs{\z@}
269
+ \DeclareOption{sort}{\def\NAT@sort{\@ne}}
270
+ \DeclareOption{compress}{\def\NAT@cmprs{\@ne}}
271
+ \DeclareOption{sort&compress}{\def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}}
272
+ \DeclareOption{mcite}{\let\NAT@merge\@ne}
273
+ \DeclareOption{merge}{\@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}}
274
+ \DeclareOption{elide}{\@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}}
275
+ \@ifpackageloaded{cite}{\PackageWarningNoLine{natbib}
276
+ {The `cite' package should not be used\MessageBreak
277
+ with natbib. Use option `sort' instead}\ExecuteOptions{sort}}{}
278
+ \@ifpackageloaded{mcite}{\PackageWarningNoLine{natbib}
279
+ {The `mcite' package should not be used\MessageBreak
280
+ with natbib. Use option `merge' instead}\ExecuteOptions{merge}}{}
281
+ \@ifpackageloaded{citeref}{\PackageError{natbib}
282
+ {The `citeref' package must be loaded after natbib}%
283
+ {Move \protect\usepackage{citeref} to after \string\usepackage{natbib}}}{}
284
+ \newif\ifNAT@longnames\NAT@longnamesfalse
285
+ \DeclareOption{longnamesfirst}{\NAT@longnamestrue}
286
+ \DeclareOption{nonamebreak}{\def\NAT@nmfmt#1{\mbox{\NAT@up#1}}}
287
+ \def\NAT@nmfmt#1{{\NAT@up#1}}
288
+ \renewcommand\bibstyle[1]{\csname bibstyle@#1\endcsname}
289
+ \AtBeginDocument{\global\let\bibstyle=\@gobble}
290
+ \let\@citestyle\bibstyle
291
+ \newcommand\citestyle[1]{\@citestyle{#1}\let\bibstyle\@gobble}
292
+ \newcommand\bibpunct[7][, ]%
293
+ {\gdef\NAT@open{#2}\gdef\NAT@close{#3}\gdef
294
+ \NAT@sep{#4}\global\NAT@numbersfalse
295
+ \ifx #5n\global\NAT@numberstrue\global\NAT@superfalse
296
+ \else
297
+ \ifx #5s\global\NAT@numberstrue\global\NAT@supertrue
298
+ \fi\fi
299
+ \gdef\NAT@aysep{#6}\gdef\NAT@yrsep{#7}%
300
+ \gdef\NAT@cmt{#1}%
301
+ \NAT@@setcites
302
+ }
303
+ \newcommand\setcitestyle[1]{
304
+ \@for\@tempa:=#1\do
305
+ {\def\@tempb{round}\ifx\@tempa\@tempb
306
+ \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
307
+ \def\@tempb{square}\ifx\@tempa\@tempb
308
+ \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
309
+ \def\@tempb{angle}\ifx\@tempa\@tempb
310
+ \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
311
+ \def\@tempb{curly}\ifx\@tempa\@tempb
312
+ \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
313
+ \def\@tempb{semicolon}\ifx\@tempa\@tempb
314
+ \renewcommand\NAT@sep{;}\fi
315
+ \def\@tempb{colon}\ifx\@tempa\@tempb
316
+ \renewcommand\NAT@sep{;}\fi
317
+ \def\@tempb{comma}\ifx\@tempa\@tempb
318
+ \renewcommand\NAT@sep{,}\fi
319
+ \def\@tempb{authoryear}\ifx\@tempa\@tempb
320
+ \NAT@numbersfalse\fi
321
+ \def\@tempb{numbers}\ifx\@tempa\@tempb
322
+ \NAT@numberstrue\NAT@superfalse\fi
323
+ \def\@tempb{super}\ifx\@tempa\@tempb
324
+ \NAT@numberstrue\NAT@supertrue\fi
325
+ \expandafter\NAT@find@eq\@tempa=\relax\@nil
326
+ \if\@tempc\relax\else
327
+ \expandafter\NAT@rem@eq\@tempc
328
+ \def\@tempb{open}\ifx\@tempa\@tempb
329
+ \xdef\NAT@open{\@tempc}\fi
330
+ \def\@tempb{close}\ifx\@tempa\@tempb
331
+ \xdef\NAT@close{\@tempc}\fi
332
+ \def\@tempb{aysep}\ifx\@tempa\@tempb
333
+ \xdef\NAT@aysep{\@tempc}\fi
334
+ \def\@tempb{yysep}\ifx\@tempa\@tempb
335
+ \xdef\NAT@yrsep{\@tempc}\fi
336
+ \def\@tempb{notesep}\ifx\@tempa\@tempb
337
+ \xdef\NAT@cmt{\@tempc}\fi
338
+ \def\@tempb{citesep}\ifx\@tempa\@tempb
339
+ \xdef\NAT@sep{\@tempc}\fi
340
+ \fi
341
+ }%
342
+ \NAT@@setcites
343
+ }
344
+ \def\NAT@find@eq#1=#2\@nil{\def\@tempa{#1}\def\@tempc{#2}}
345
+ \def\NAT@rem@eq#1={\def\@tempc{#1}}
346
+ \def\NAT@@setcites{\global\let\bibstyle\@gobble}
347
+ \AtBeginDocument{\let\NAT@@setcites\NAT@set@cites}
348
+ \newcommand\NAT@open{(} \newcommand\NAT@close{)}
349
+ \newcommand\NAT@sep{;}
350
+ \ProcessOptions
351
+ \newcommand\NAT@aysep{,} \newcommand\NAT@yrsep{,}
352
+ \newcommand\NAT@cmt{, }
353
+ \newcommand\NAT@cite%
354
+ [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi
355
+ #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close\else#1\fi\endgroup}
356
+ \newcommand\NAT@citenum%
357
+ [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi
358
+ #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close\else#1\fi\endgroup}
359
+ \newcommand\NAT@citesuper[3]{\ifNAT@swa
360
+ \if*#2*\else#2\NAT@spacechar\fi
361
+ \unskip\kern\p@\textsuperscript{\NAT@@open#1\NAT@@close}%
362
+ \if*#3*\else\NAT@spacechar#3\fi\else #1\fi\endgroup}
363
+ \providecommand\textsuperscript[1]{\mbox{$^{\mbox{\scriptsize#1}}$}}
364
+ \begingroup \catcode`\_=8
365
+ \gdef\NAT@ifcat@num#1{%
366
+ \ifcat_\ifnum\z@<0#1_\else A\fi
367
+ \expandafter\@firstoftwo
368
+ \else
369
+ \expandafter\@secondoftwo
370
+ \fi
371
+ }%
372
+ \endgroup
373
+ \providecommand\@firstofone[1]{#1}
374
+ \newcommand\NAT@citexnum{}
375
+ \def\NAT@citexnum[#1][#2]#3{%
376
+ \NAT@reset@parser
377
+ \NAT@sort@cites{#3}%
378
+ \NAT@reset@citea
379
+ \@cite{\def\NAT@num{-1}\let\NAT@last@yr\relax\let\NAT@nm\@empty
380
+ \@for\@citeb:=\NAT@cite@list\do
381
+ {\@safe@activestrue
382
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
383
+ \@safe@activesfalse
384
+ \@ifundefined{b@\@citeb\@extra@b@citeb}{%
385
+ {\reset@font\bfseries?}
386
+ \NAT@citeundefined\PackageWarning{natbib}%
387
+ {Citation `\@citeb' on page \thepage \space undefined}}%
388
+ {\let\NAT@last@num\NAT@num\let\NAT@last@nm\NAT@nm
389
+ \NAT@parse{\@citeb}%
390
+ \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{%
391
+ \let\NAT@name=\NAT@all@names
392
+ \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}%
393
+ \fi
394
+ \ifNAT@full\let\NAT@nm\NAT@all@names\else
395
+ \let\NAT@nm\NAT@name\fi
396
+ \ifNAT@swa
397
+ \@ifnum{\NAT@ctype>\@ne}{%
398
+ \@citea
399
+ \NAT@hyper@{\@ifnum{\NAT@ctype=\tw@}{\NAT@test{\NAT@ctype}}{\NAT@alias}}%
400
+ }{%
401
+ \@ifnum{\NAT@cmprs>\z@}{%
402
+ \NAT@ifcat@num\NAT@num
403
+ {\let\NAT@nm=\NAT@num}%
404
+ {\def\NAT@nm{-2}}%
405
+ \NAT@ifcat@num\NAT@last@num
406
+ {\@tempcnta=\NAT@last@num\relax}%
407
+ {\@tempcnta\m@ne}%
408
+ \@ifnum{\NAT@nm=\@tempcnta}{%
409
+ \@ifnum{\NAT@merge>\@ne}{}{\NAT@last@yr@mbox}%
410
+ }{%
411
+ \advance\@tempcnta by\@ne
412
+ \@ifnum{\NAT@nm=\@tempcnta}{%
413
+ \ifx\NAT@last@yr\relax
414
+ \def@NAT@last@yr{\@citea}%
415
+ \else
416
+ \def@NAT@last@yr{--\NAT@penalty}%
417
+ \fi
418
+ }{%
419
+ \NAT@last@yr@mbox
420
+ }%
421
+ }%
422
+ }{%
423
+ \@tempswatrue
424
+ \@ifnum{\NAT@merge>\@ne}{\@ifnum{\NAT@last@num=\NAT@num\relax}{\@tempswafalse}{}}{}%
425
+ \if@tempswa\NAT@citea@mbox\fi
426
+ }%
427
+ }%
428
+ \NAT@def@citea
429
+ \else
430
+ \ifcase\NAT@ctype
431
+ \ifx\NAT@last@nm\NAT@nm \NAT@yrsep\NAT@penalty\NAT@space\else
432
+ \@citea \NAT@test{\@ne}\NAT@spacechar\NAT@mbox{\NAT@super@kern\NAT@@open}%
433
+ \fi
434
+ \if*#1*\else#1\NAT@spacechar\fi
435
+ \NAT@mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}}%
436
+ \NAT@def@citea@box
437
+ \or
438
+ \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}%
439
+ \or
440
+ \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}%
441
+ \or
442
+ \NAT@hyper@citea@space\NAT@alias
443
+ \fi
444
+ \fi
445
+ }%
446
+ }%
447
+ \@ifnum{\NAT@cmprs>\z@}{\NAT@last@yr}{}%
448
+ \ifNAT@swa\else
449
+ \@ifnum{\NAT@ctype=\z@}{%
450
+ \if*#2*\else\NAT@cmt#2\fi
451
+ }{}%
452
+ \NAT@mbox{\NAT@@close}%
453
+ \fi
454
+ }{#1}{#2}%
455
+ }%
456
+ \def\NAT@citea@mbox{%
457
+ \@citea\mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}}%
458
+ }%
459
+ \def\NAT@hyper@#1{%
460
+ \hyper@natlinkstart{\@citeb\@extra@b@citeb}#1\hyper@natlinkend
461
+ }%
462
+ \def\NAT@hyper@citea#1{%
463
+ \@citea
464
+ \NAT@hyper@{#1}%
465
+ \NAT@def@citea
466
+ }%
467
+ \def\NAT@hyper@citea@space#1{%
468
+ \@citea
469
+ \NAT@hyper@{#1}%
470
+ \NAT@def@citea@space
471
+ }%
472
+ \def\def@NAT@last@yr#1{%
473
+ \protected@edef\NAT@last@yr{%
474
+ #1%
475
+ \noexpand\mbox{%
476
+ \noexpand\hyper@natlinkstart{\@citeb\@extra@b@citeb}%
477
+ {\noexpand\citenumfont{\NAT@num}}%
478
+ \noexpand\hyper@natlinkend
479
+ }%
480
+ }%
481
+ }%
482
+ \def\NAT@last@yr@mbox{%
483
+ \NAT@last@yr\let\NAT@last@yr\relax
484
+ \NAT@citea@mbox
485
+ }%
486
+ \newcommand\NAT@test[1]{%
487
+ \@ifnum{#1=\@ne}{%
488
+ \ifx\NAT@nm\NAT@noname
489
+ \begingroup\reset@font\bfseries(author?)\endgroup
490
+ \PackageWarning{natbib}{%
491
+ Author undefined for citation`\@citeb' \MessageBreak on page \thepage%
492
+ }%
493
+ \else \NAT@nm
494
+ \fi
495
+ }{%
496
+ \if\relax\NAT@date\relax
497
+ \begingroup\reset@font\bfseries(year?)\endgroup
498
+ \PackageWarning{natbib}{%
499
+ Year undefined for citation`\@citeb' \MessageBreak on page \thepage%
500
+ }%
501
+ \else \NAT@date
502
+ \fi
503
+ }%
504
+ }%
505
+ \let\citenumfont=\@empty
506
+ \newcommand\NAT@citex{}
507
+ \def\NAT@citex%
508
+ [#1][#2]#3{%
509
+ \NAT@reset@parser
510
+ \NAT@sort@cites{#3}%
511
+ \NAT@reset@citea
512
+ \@cite{\let\NAT@nm\@empty\let\NAT@year\@empty
513
+ \@for\@citeb:=\NAT@cite@list\do
514
+ {\@safe@activestrue
515
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
516
+ \@safe@activesfalse
517
+ \@ifundefined{b@\@citeb\@extra@b@citeb}{\@citea%
518
+ {\reset@font\bfseries ?}\NAT@citeundefined
519
+ \PackageWarning{natbib}%
520
+ {Citation `\@citeb' on page \thepage \space undefined}\def\NAT@date{}}%
521
+ {\let\NAT@last@nm=\NAT@nm\let\NAT@last@yr=\NAT@year
522
+ \NAT@parse{\@citeb}%
523
+ \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{%
524
+ \let\NAT@name=\NAT@all@names
525
+ \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}%
526
+ \fi
527
+ \ifNAT@full\let\NAT@nm\NAT@all@names\else
528
+ \let\NAT@nm\NAT@name\fi
529
+ \ifNAT@swa\ifcase\NAT@ctype
530
+ \if\relax\NAT@date\relax
531
+ \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}\NAT@date}%
532
+ \else
533
+ \ifx\NAT@last@nm\NAT@nm\NAT@yrsep
534
+ \ifx\NAT@last@yr\NAT@year
535
+ \def\NAT@temp{{?}}%
536
+ \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}%
537
+ {Multiple citation on page \thepage: same authors and
538
+ year\MessageBreak without distinguishing extra
539
+ letter,\MessageBreak appears as question mark}\fi
540
+ \NAT@hyper@{\NAT@exlab}%
541
+ \else\unskip\NAT@spacechar
542
+ \NAT@hyper@{\NAT@date}%
543
+ \fi
544
+ \else
545
+ \@citea\NAT@hyper@{%
546
+ \NAT@nmfmt{\NAT@nm}%
547
+ \hyper@natlinkbreak{%
548
+ \NAT@aysep\NAT@spacechar}{\@citeb\@extra@b@citeb
549
+ }%
550
+ \NAT@date
551
+ }%
552
+ \fi
553
+ \fi
554
+ \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
555
+ \or\@citea\NAT@hyper@{\NAT@date}%
556
+ \or\@citea\NAT@hyper@{\NAT@alias}%
557
+ \fi \NAT@def@citea
558
+ \else
559
+ \ifcase\NAT@ctype
560
+ \if\relax\NAT@date\relax
561
+ \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
562
+ \else
563
+ \ifx\NAT@last@nm\NAT@nm\NAT@yrsep
564
+ \ifx\NAT@last@yr\NAT@year
565
+ \def\NAT@temp{{?}}%
566
+ \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}%
567
+ {Multiple citation on page \thepage: same authors and
568
+ year\MessageBreak without distinguishing extra
569
+ letter,\MessageBreak appears as question mark}\fi
570
+ \NAT@hyper@{\NAT@exlab}%
571
+ \else
572
+ \unskip\NAT@spacechar
573
+ \NAT@hyper@{\NAT@date}%
574
+ \fi
575
+ \else
576
+ \@citea\NAT@hyper@{%
577
+ \NAT@nmfmt{\NAT@nm}%
578
+ \hyper@natlinkbreak{\NAT@spacechar\NAT@@open\if*#1*\else#1\NAT@spacechar\fi}%
579
+ {\@citeb\@extra@b@citeb}%
580
+ \NAT@date
581
+ }%
582
+ \fi
583
+ \fi
584
+ \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
585
+ \or\@citea\NAT@hyper@{\NAT@date}%
586
+ \or\@citea\NAT@hyper@{\NAT@alias}%
587
+ \fi
588
+ \if\relax\NAT@date\relax
589
+ \NAT@def@citea
590
+ \else
591
+ \NAT@def@citea@close
592
+ \fi
593
+ \fi
594
+ }}\ifNAT@swa\else\if*#2*\else\NAT@cmt#2\fi
595
+ \if\relax\NAT@date\relax\else\NAT@@close\fi\fi}{#1}{#2}}
596
+ \def\NAT@spacechar{\ }%
597
+ \def\NAT@separator{\NAT@sep\NAT@penalty}%
598
+ \def\NAT@reset@citea{\c@NAT@ctr\@ne\let\@citea\@empty}%
599
+ \def\NAT@def@citea{\def\@citea{\NAT@separator\NAT@space}}%
600
+ \def\NAT@def@citea@space{\def\@citea{\NAT@separator\NAT@spacechar}}%
601
+ \def\NAT@def@citea@close{\def\@citea{\NAT@@close\NAT@separator\NAT@space}}%
602
+ \def\NAT@def@citea@box{\def\@citea{\NAT@mbox{\NAT@@close}\NAT@separator\NAT@spacechar}}%
603
+ \newif\ifNAT@par \NAT@partrue
604
+ \newcommand\NAT@@open{\ifNAT@par\NAT@open\fi}
605
+ \newcommand\NAT@@close{\ifNAT@par\NAT@close\fi}
606
+ \newcommand\NAT@alias{\@ifundefined{al@\@citeb\@extra@b@citeb}{%
607
+ {\reset@font\bfseries(alias?)}\PackageWarning{natbib}
608
+ {Alias undefined for citation `\@citeb'
609
+ \MessageBreak on page \thepage}}{\@nameuse{al@\@citeb\@extra@b@citeb}}}
610
+ \let\NAT@up\relax
611
+ \newcommand\NAT@Up[1]{{\let\protect\@unexpandable@protect\let~\relax
612
+ \expandafter\NAT@deftemp#1}\expandafter\NAT@UP\NAT@temp}
613
+ \newcommand\NAT@deftemp[1]{\xdef\NAT@temp{#1}}
614
+ \newcommand\NAT@UP[1]{\let\@tempa\NAT@UP\ifcat a#1\MakeUppercase{#1}%
615
+ \let\@tempa\relax\else#1\fi\@tempa}
616
+ \newcommand\shortcites[1]{%
617
+ \@bsphack\@for\@citeb:=#1\do
618
+ {\@safe@activestrue
619
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
620
+ \@safe@activesfalse
621
+ \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}\@esphack}
622
+ \newcommand\NAT@biblabel[1]{\hfill}
623
+ \newcommand\NAT@biblabelnum[1]{\bibnumfmt{#1}}
624
+ \let\bibnumfmt\@empty
625
+ \providecommand\@biblabel[1]{[#1]}
626
+ \AtBeginDocument{\ifx\bibnumfmt\@empty\let\bibnumfmt\@biblabel\fi}
627
+ \newcommand\NAT@bibsetnum[1]{\settowidth\labelwidth{\@biblabel{#1}}%
628
+ \setlength{\leftmargin}{\labelwidth}\addtolength{\leftmargin}{\labelsep}%
629
+ \setlength{\itemsep}{\bibsep}\setlength{\parsep}{\z@}%
630
+ \ifNAT@openbib
631
+ \addtolength{\leftmargin}{\bibindent}%
632
+ \setlength{\itemindent}{-\bibindent}%
633
+ \setlength{\listparindent}{\itemindent}%
634
+ \setlength{\parsep}{0pt}%
635
+ \fi
636
+ }
637
+ \newlength{\bibhang}
638
+ \setlength{\bibhang}{1em}
639
+ \newlength{\bibsep}
640
+ {\@listi \global\bibsep\itemsep \global\advance\bibsep by\parsep}
641
+
642
+ \newcommand\NAT@bibsetup%
643
+ [1]{\setlength{\leftmargin}{\bibhang}\setlength{\itemindent}{-\leftmargin}%
644
+ \setlength{\itemsep}{\bibsep}\setlength{\parsep}{\z@}}
645
+ \newcommand\NAT@set@cites{%
646
+ \ifNAT@numbers
647
+ \ifNAT@super \let\@cite\NAT@citesuper
648
+ \def\NAT@mbox##1{\unskip\nobreak\textsuperscript{##1}}%
649
+ \let\citeyearpar=\citeyear
650
+ \let\NAT@space\relax
651
+ \def\NAT@super@kern{\kern\p@}%
652
+ \else
653
+ \let\NAT@mbox=\mbox
654
+ \let\@cite\NAT@citenum
655
+ \let\NAT@space\NAT@spacechar
656
+ \let\NAT@super@kern\relax
657
+ \fi
658
+ \let\@citex\NAT@citexnum
659
+ \let\@biblabel\NAT@biblabelnum
660
+ \let\@bibsetup\NAT@bibsetnum
661
+ \renewcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@num\NAT@close}%
662
+ \def\natexlab##1{}%
663
+ \def\NAT@penalty{\penalty\@m}%
664
+ \else
665
+ \let\@cite\NAT@cite
666
+ \let\@citex\NAT@citex
667
+ \let\@biblabel\NAT@biblabel
668
+ \let\@bibsetup\NAT@bibsetup
669
+ \let\NAT@space\NAT@spacechar
670
+ \let\NAT@penalty\@empty
671
+ \renewcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@date\NAT@close}%
672
+ \def\natexlab##1{##1}%
673
+ \fi}
674
+ \AtBeginDocument{\NAT@set@cites}
675
+ \AtBeginDocument{\ifx\SK@def\@undefined\else
676
+ \ifx\SK@cite\@empty\else
677
+ \SK@def\@citex[#1][#2]#3{\SK@\SK@@ref{#3}\SK@@citex[#1][#2]{#3}}\fi
678
+ \ifx\SK@citeauthor\@undefined\def\HAR@checkdef{}\else
679
+ \let\citeauthor\SK@citeauthor
680
+ \let\citefullauthor\SK@citefullauthor
681
+ \let\citeyear\SK@citeyear\fi
682
+ \fi}
683
+ \newif\ifNAT@full\NAT@fullfalse
684
+ \newif\ifNAT@swa
685
+ \DeclareRobustCommand\citet
686
+ {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@partrue
687
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
688
+ \newcommand\NAT@citetp{\@ifnextchar[{\NAT@@citetp}{\NAT@@citetp[]}}
689
+ \newcommand\NAT@@citetp{}
690
+ \def\NAT@@citetp[#1]{\@ifnextchar[{\@citex[#1]}{\@citex[][#1]}}
691
+ \DeclareRobustCommand\citep
692
+ {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@partrue
693
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
694
+ \DeclareRobustCommand\cite
695
+ {\begingroup\let\NAT@ctype\z@\NAT@partrue\NAT@swatrue
696
+ \@ifstar{\NAT@fulltrue\NAT@cites}{\NAT@fullfalse\NAT@cites}}
697
+ \newcommand\NAT@cites{\@ifnextchar [{\NAT@@citetp}{%
698
+ \ifNAT@numbers\else
699
+ \NAT@swafalse
700
+ \fi
701
+ \NAT@@citetp[]}}
702
+ \DeclareRobustCommand\citealt
703
+ {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@parfalse
704
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
705
+ \DeclareRobustCommand\citealp
706
+ {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse
707
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
708
+ \DeclareRobustCommand\citenum
709
+ {\begingroup
710
+ \NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse\let\textsuperscript\NAT@spacechar
711
+ \NAT@citexnum[][]}
712
+ \DeclareRobustCommand\citeauthor
713
+ {\begingroup\NAT@swafalse\let\NAT@ctype\@ne\NAT@parfalse
714
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
715
+ \DeclareRobustCommand\Citet
716
+ {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@partrue
717
+ \let\NAT@up\NAT@Up
718
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
719
+ \DeclareRobustCommand\Citep
720
+ {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@partrue
721
+ \let\NAT@up\NAT@Up
722
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
723
+ \DeclareRobustCommand\Citealt
724
+ {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@parfalse
725
+ \let\NAT@up\NAT@Up
726
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
727
+ \DeclareRobustCommand\Citealp
728
+ {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse
729
+ \let\NAT@up\NAT@Up
730
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
731
+ \DeclareRobustCommand\Citeauthor
732
+ {\begingroup\NAT@swafalse\let\NAT@ctype\@ne\NAT@parfalse
733
+ \let\NAT@up\NAT@Up
734
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
735
+ \DeclareRobustCommand\citeyear
736
+ {\begingroup\NAT@swafalse\let\NAT@ctype\tw@\NAT@parfalse\NAT@citetp}
737
+ \DeclareRobustCommand\citeyearpar
738
+ {\begingroup\NAT@swatrue\let\NAT@ctype\tw@\NAT@partrue\NAT@citetp}
739
+ \newcommand\citetext[1]{\NAT@open#1\NAT@close}
740
+ \DeclareRobustCommand\citefullauthor
741
+ {\citeauthor*}
742
+ \newcommand\defcitealias[2]{%
743
+ \@ifundefined{al@#1\@extra@b@citeb}{}
744
+ {\PackageWarning{natbib}{Overwriting existing alias for citation #1}}
745
+ \@namedef{al@#1\@extra@b@citeb}{#2}}
746
+ \DeclareRobustCommand\citetalias{\begingroup
747
+ \NAT@swafalse\let\NAT@ctype\thr@@\NAT@parfalse\NAT@citetp}
748
+ \DeclareRobustCommand\citepalias{\begingroup
749
+ \NAT@swatrue\let\NAT@ctype\thr@@\NAT@partrue\NAT@citetp}
750
+ \renewcommand\nocite[1]{\@bsphack
751
+ \@for\@citeb:=#1\do{%
752
+ \@safe@activestrue
753
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
754
+ \@safe@activesfalse
755
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
756
+ \if*\@citeb\else
757
+ \@ifundefined{b@\@citeb\@extra@b@citeb}{%
758
+ \NAT@citeundefined \PackageWarning{natbib}%
759
+ {Citation `\@citeb' undefined}}{}\fi}%
760
+ \@esphack}
761
+ \newcommand\NAT@parse[1]{%
762
+ \begingroup
763
+ \let\protect=\@unexpandable@protect
764
+ \let~\relax
765
+ \let\active@prefix=\@gobble
766
+ \edef\NAT@temp{\csname b@#1\@extra@b@citeb\endcsname}%
767
+ \aftergroup\NAT@split
768
+ \expandafter
769
+ \endgroup
770
+ \NAT@temp{}{}{}{}{}@@%
771
+ \expandafter\NAT@parse@date\NAT@date??????@@%
772
+ \ifciteindex\NAT@index\fi
773
+ }%
774
+ \def\NAT@split#1#2#3#4#5@@{%
775
+ \gdef\NAT@num{#1}\gdef\NAT@name{#3}\gdef\NAT@date{#2}%
776
+ \gdef\NAT@all@names{#4}%
777
+ \ifx\NAT@num\@empty\gdef\NAT@num{0}\fi
778
+ \ifx\NAT@noname\NAT@all@names \gdef\NAT@all@names{#3}\fi
779
+ }%
780
+ \def\NAT@reset@parser{%
781
+ \global\let\NAT@num\@empty
782
+ \global\let\NAT@name\@empty
783
+ \global\let\NAT@date\@empty
784
+ \global\let\NAT@all@names\@empty
785
+ }%
786
+ \newcommand\NAT@parse@date{}
787
+ \def\NAT@parse@date#1#2#3#4#5#6@@{%
788
+ \ifnum\the\catcode`#1=11\def\NAT@year{}\def\NAT@exlab{#1}\else
789
+ \ifnum\the\catcode`#2=11\def\NAT@year{#1}\def\NAT@exlab{#2}\else
790
+ \ifnum\the\catcode`#3=11\def\NAT@year{#1#2}\def\NAT@exlab{#3}\else
791
+ \ifnum\the\catcode`#4=11\def\NAT@year{#1#2#3}\def\NAT@exlab{#4}\else
792
+ \def\NAT@year{#1#2#3#4}\def\NAT@exlab{{#5}}\fi\fi\fi\fi}
793
+ \newcommand\NAT@index{}
794
+ \let\NAT@makeindex=\makeindex
795
+ \renewcommand\makeindex{\NAT@makeindex
796
+ \renewcommand\NAT@index{\@bsphack\begingroup
797
+ \def~{\string~}\@wrindex{\NAT@idxtxt}}}
798
+ \newcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@date\NAT@close}
799
+ \@ifxundefined\@indexfile{}{\let\NAT@makeindex\relax\makeindex}
800
+ \newif\ifciteindex \citeindexfalse
801
+ \newcommand\citeindextype{default}
802
+ \newcommand\NAT@index@alt{{\let\protect=\noexpand\let~\relax
803
+ \xdef\NAT@temp{\NAT@idxtxt}}\expandafter\NAT@exp\NAT@temp\@nil}
804
+ \newcommand\NAT@exp{}
805
+ \def\NAT@exp#1\@nil{\index[\citeindextype]{#1}}
806
+
807
+ \AtBeginDocument{%
808
+ \@ifpackageloaded{index}{\let\NAT@index=\NAT@index@alt}{}}
809
+ \newcommand\NAT@ifcmd{\futurelet\NAT@temp\NAT@ifxcmd}
810
+ \newcommand\NAT@ifxcmd{\ifx\NAT@temp\relax\else\expandafter\NAT@bare\fi}
811
+ \def\NAT@bare#1(#2)#3(@)#4\@nil#5{%
812
+ \if @#2
813
+ \expandafter\NAT@apalk#1, , \@nil{#5}%
814
+ \else
815
+ \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{#3}{#5}%
816
+ \fi
817
+ }
818
+ \newcommand\NAT@wrout[5]{%
819
+ \if@filesw
820
+ {\let\protect\noexpand\let~\relax
821
+ \immediate
822
+ \write\@auxout{\string\bibcite{#5}{{#1}{#2}{{#3}}{{#4}}}}}\fi
823
+ \ignorespaces}
824
+ \def\NAT@noname{{}}
825
+ \renewcommand\bibitem{\@ifnextchar[{\@lbibitem}{\@lbibitem[]}}%
826
+ \let\NAT@bibitem@first@sw\@secondoftwo
827
+ \def\@lbibitem[#1]#2{%
828
+ \if\relax\@extra@b@citeb\relax\else
829
+ \@ifundefined{br@#2\@extra@b@citeb}{}{%
830
+ \@namedef{br@#2}{\@nameuse{br@#2\@extra@b@citeb}}%
831
+ }%
832
+ \fi
833
+ \@ifundefined{b@#2\@extra@b@citeb}{%
834
+ \def\NAT@num{}%
835
+ }{%
836
+ \NAT@parse{#2}%
837
+ }%
838
+ \def\NAT@tmp{#1}%
839
+ \expandafter\let\expandafter\bibitemOpen\csname NAT@b@open@#2\endcsname
840
+ \expandafter\let\expandafter\bibitemShut\csname NAT@b@shut@#2\endcsname
841
+ \@ifnum{\NAT@merge>\@ne}{%
842
+ \NAT@bibitem@first@sw{%
843
+ \@firstoftwo
844
+ }{%
845
+ \@ifundefined{NAT@b*@#2}{%
846
+ \@firstoftwo
847
+ }{%
848
+ \expandafter\def\expandafter\NAT@num\expandafter{\the\c@NAT@ctr}%
849
+ \@secondoftwo
850
+ }%
851
+ }%
852
+ }{%
853
+ \@firstoftwo
854
+ }%
855
+ {%
856
+ \global\advance\c@NAT@ctr\@ne
857
+ \@ifx{\NAT@tmp\@empty}{\@firstoftwo}{%
858
+ \@secondoftwo
859
+ }%
860
+ {%
861
+ \expandafter\def\expandafter\NAT@num\expandafter{\the\c@NAT@ctr}%
862
+ \global\NAT@stdbsttrue
863
+ }{}%
864
+ \bibitem@fin
865
+ \item[\hfil\NAT@anchor{#2}{\NAT@num}]%
866
+ \global\let\NAT@bibitem@first@sw\@secondoftwo
867
+ \NAT@bibitem@init
868
+ }%
869
+ {%
870
+ \NAT@anchor{#2}{}%
871
+ \NAT@bibitem@cont
872
+ \bibitem@fin
873
+ }%
874
+ \@ifx{\NAT@tmp\@empty}{%
875
+ \NAT@wrout{\the\c@NAT@ctr}{}{}{}{#2}%
876
+ }{%
877
+ \expandafter\NAT@ifcmd\NAT@tmp(@)(@)\@nil{#2}%
878
+ }%
879
+ }%
880
+ \def\bibitem@fin{%
881
+ \@ifxundefined\@bibstop{}{\csname bibitem@\@bibstop\endcsname}%
882
+ }%
883
+ \def\NAT@bibitem@init{%
884
+ \let\@bibstop\@undefined
885
+ }%
886
+ \def\NAT@bibitem@cont{%
887
+ \let\bibitem@Stop\bibitemStop
888
+ \let\bibitem@NoStop\bibitemContinue
889
+ }%
890
+ \def\BibitemOpen{%
891
+ \bibitemOpen
892
+ }%
893
+ \def\BibitemShut#1{%
894
+ \bibitemShut
895
+ \def\@bibstop{#1}%
896
+ \let\bibitem@Stop\bibitemStop
897
+ \let\bibitem@NoStop\bibitemNoStop
898
+ }%
899
+ \def\bibitemStop{}%
900
+ \def\bibitemNoStop{.\spacefactor\@mmm\space}%
901
+ \def\bibitemContinue{\spacefactor\@mmm\space}%
902
+ \mathchardef\@mmm=3000 %
903
+ \providecommand{\bibAnnote}[3]{%
904
+ \BibitemShut{#1}%
905
+ \def\@tempa{#3}\@ifx{\@tempa\@empty}{}{%
906
+ \begin{quotation}\noindent
907
+ \textsc{Key:}\ #2\\\textsc{Annotation:}\ \@tempa
908
+ \end{quotation}%
909
+ }%
910
+ }%
911
+ \providecommand{\bibAnnoteFile}[2]{%
912
+ \IfFileExists{#2}{%
913
+ \bibAnnote{#1}{#2}{\input{#2}}%
914
+ }{%
915
+ \bibAnnote{#1}{#2}{}%
916
+ }%
917
+ }%
918
+ \let\bibitemOpen\relax
919
+ \let\bibitemShut\relax
920
+ \def\bibfield{\@ifnum{\NAT@merge>\tw@}{\@bibfield}{\@secondoftwo}}%
921
+ \def\@bibfield#1#2{%
922
+ \begingroup
923
+ \let\Doi\@gobble
924
+ \let\bibinfo\relax
925
+ \let\restore@protect\@empty
926
+ \protected@edef\@tempa{#2}%
927
+ \aftergroup\def\aftergroup\@tempa
928
+ \expandafter\endgroup\expandafter{\@tempa}%
929
+ \expandafter\@ifx\expandafter{\csname @bib#1\endcsname\@tempa}{%
930
+ \expandafter\let\expandafter\@tempa\csname @bib@X#1\endcsname
931
+ }{%
932
+ \expandafter\let\csname @bib#1\endcsname\@tempa
933
+ \expandafter\let\expandafter\@tempa\csname @bib@Y#1\endcsname
934
+ }%
935
+ \@ifx{\@tempa\relax}{\let\@tempa\@firstofone}{}%
936
+ \@tempa{#2}%
937
+ }%
938
+ \def\bibinfo#1{%
939
+ \expandafter\let\expandafter\@tempa\csname bibinfo@X@#1\endcsname
940
+ \@ifx{\@tempa\relax}{\@firstofone}{\@tempa}%
941
+ }%
942
+ \def\@bib@Xauthor#1{\let\@bib@Xjournal\@gobble}%
943
+ \def\@bib@Xjournal#1{\begingroup\let\bibinfo@X@journal\@bib@Z@journal#1\endgroup}%
944
+ \def\@bibibid@#1{\textit{ibid}.}%
945
+ \appdef\NAT@bibitem@init{%
946
+ \let\@bibauthor \@empty
947
+ \let\@bibjournal \@empty
948
+ \let\@bib@Z@journal\@bibibid@
949
+ }%
950
+ \ifx\SK@lbibitem\@undefined\else
951
+ \let\SK@lbibitem\@lbibitem
952
+ \def\@lbibitem[#1]#2{%
953
+ \SK@lbibitem[#1]{#2}\SK@\SK@@label{#2}\ignorespaces}\fi
954
+ \newif\ifNAT@stdbst \NAT@stdbstfalse
955
+
956
+ \AtEndDocument{%
957
+ \ifNAT@stdbst\if@filesw
958
+ \immediate\write\@auxout{%
959
+ \string\providecommand\string\NAT@force@numbers{}%
960
+ \string\NAT@force@numbers
961
+ }%
962
+ \fi\fi
963
+ }
964
+ \newcommand\NAT@force@numbers{%
965
+ \ifNAT@numbers\else
966
+ \PackageError{natbib}{Bibliography not compatible with author-year
967
+ citations.\MessageBreak
968
+ Press <return> to continue in numerical citation style}
969
+ {Check the bibliography entries for non-compliant syntax,\MessageBreak
970
+ or select author-year BibTeX style, e.g. plainnat}%
971
+ \global\NAT@numberstrue\fi}
972
+
973
+ \providecommand\bibcite{}
974
+ \renewcommand\bibcite[2]{%
975
+ \@ifundefined{b@#1\@extra@binfo}{\relax}{%
976
+ \NAT@citemultiple
977
+ \PackageWarningNoLine{natbib}{Citation `#1' multiply defined}%
978
+ }%
979
+ \global\@namedef{b@#1\@extra@binfo}{#2}%
980
+ }%
981
+ \AtEndDocument{\NAT@swatrue\let\bibcite\NAT@testdef}
982
+ \newcommand\NAT@testdef[2]{%
983
+ \def\NAT@temp{#2}%
984
+ \expandafter \ifx \csname b@#1\@extra@binfo\endcsname\NAT@temp
985
+ \else
986
+ \ifNAT@swa \NAT@swafalse
987
+ \PackageWarningNoLine{natbib}{%
988
+ Citation(s) may have changed.\MessageBreak
989
+ Rerun to get citations correct%
990
+ }%
991
+ \fi
992
+ \fi
993
+ }%
994
+ \newcommand\NAT@apalk{}
995
+ \def\NAT@apalk#1, #2, #3\@nil#4{%
996
+ \if\relax#2\relax
997
+ \global\NAT@stdbsttrue
998
+ \NAT@wrout{#1}{}{}{}{#4}%
999
+ \else
1000
+ \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#4}%
1001
+ \fi
1002
+ }%
1003
+ \newcommand\citeauthoryear{}
1004
+ \def\citeauthoryear#1#2#3(@)(@)\@nil#4{%
1005
+ \if\relax#3\relax
1006
+ \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#4}%
1007
+ \else
1008
+ \NAT@wrout{\the\c@NAT@ctr}{#3}{#2}{#1}{#4}%
1009
+ \fi
1010
+ }%
1011
+ \newcommand\citestarts{\NAT@open}%
1012
+ \newcommand\citeends{\NAT@close}%
1013
+ \newcommand\betweenauthors{and}%
1014
+ \newcommand\astroncite{}
1015
+ \def\astroncite#1#2(@)(@)\@nil#3{%
1016
+ \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#3}%
1017
+ }%
1018
+ \newcommand\citename{}
1019
+ \def\citename#1#2(@)(@)\@nil#3{\expandafter\NAT@apalk#1#2, \@nil{#3}}
1020
+ \newcommand\harvarditem[4][]{%
1021
+ \if\relax#1\relax
1022
+ \bibitem[#2(#3)]{#4}%
1023
+ \else
1024
+ \bibitem[#1(#3)#2]{#4}%
1025
+ \fi
1026
+ }%
1027
+ \newcommand\harvardleft{\NAT@open}
1028
+ \newcommand\harvardright{\NAT@close}
1029
+ \newcommand\harvardyearleft{\NAT@open}
1030
+ \newcommand\harvardyearright{\NAT@close}
1031
+ \AtBeginDocument{\providecommand{\harvardand}{and}}
1032
+ \newcommand\harvardurl[1]{\textbf{URL:} \textit{#1}}
1033
+ \providecommand\bibsection{}
1034
+ \@ifundefined{chapter}{%
1035
+ \renewcommand\bibsection{%
1036
+ \section*{\refname\@mkboth{\MakeUppercase{\refname}}{\MakeUppercase{\refname}}}%
1037
+ }%
1038
+ }{%
1039
+ \@ifxundefined\NAT@sectionbib{%
1040
+ \renewcommand\bibsection{%
1041
+ \chapter*{\bibname\@mkboth{\MakeUppercase{\bibname}}{\MakeUppercase{\bibname}}}%
1042
+ }%
1043
+ }{%
1044
+ \renewcommand\bibsection{%
1045
+ \section*{\bibname\ifx\@mkboth\@gobbletwo\else\markright{\MakeUppercase{\bibname}}\fi}%
1046
+ }%
1047
+ }%
1048
+ }%
1049
+ \@ifclassloaded{amsart}{\renewcommand\bibsection{\section*{\refname}}}{}%
1050
+ \@ifclassloaded{amsbook}{\renewcommand\bibsection{\chapter*{\bibname}}}{}%
1051
+ \@ifxundefined\bib@heading{}{\let\bibsection\bib@heading}%
1052
+ \newcounter{NAT@ctr}
1053
+ \renewenvironment{thebibliography}[1]{%
1054
+ \bibsection
1055
+ \parindent\z@
1056
+ \bibpreamble
1057
+ \bibfont
1058
+ \list{\@biblabel{\the\c@NAT@ctr}}{\@bibsetup{#1}\global\c@NAT@ctr\z@}%
1059
+ \ifNAT@openbib
1060
+ \renewcommand\newblock{\par}%
1061
+ \else
1062
+ \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%
1063
+ \fi
1064
+ \sloppy\clubpenalty4000\widowpenalty4000
1065
+ \sfcode`\.\@m
1066
+ \let\NAT@bibitem@first@sw\@firstoftwo
1067
+ \let\citeN\cite \let\shortcite\cite
1068
+ \let\citeasnoun\cite
1069
+ }{%
1070
+ \bibitem@fin
1071
+ \bibpostamble
1072
+ \def\@noitemerr{%
1073
+ \PackageWarning{natbib}{Empty `thebibliography' environment}%
1074
+ }%
1075
+ \endlist
1076
+ \bibcleanup
1077
+ }%
1078
+ \let\bibfont\@empty
1079
+ \let\bibpreamble\@empty
1080
+ \let\bibpostamble\@empty
1081
+ \def\bibcleanup{\vskip-\lastskip}%
1082
+ \providecommand\reset@font{\relax}
1083
+ \providecommand\bibname{Bibliography}
1084
+ \providecommand\refname{References}
1085
+ \newcommand\NAT@citeundefined{\gdef \NAT@undefined {%
1086
+ \PackageWarningNoLine{natbib}{There were undefined citations}}}
1087
+ \let \NAT@undefined \relax
1088
+ \newcommand\NAT@citemultiple{\gdef \NAT@multiple {%
1089
+ \PackageWarningNoLine{natbib}{There were multiply defined citations}}}
1090
+ \let \NAT@multiple \relax
1091
+ \AtEndDocument{\NAT@undefined\NAT@multiple}
1092
+ \providecommand\@mkboth[2]{}
1093
+ \providecommand\MakeUppercase{\uppercase}
1094
+ \providecommand{\@extra@b@citeb}{}
1095
+ \gdef\@extra@binfo{}
1096
+ \def\NAT@anchor#1#2{%
1097
+ \hyper@natanchorstart{#1\@extra@b@citeb}%
1098
+ \def\@tempa{#2}\@ifx{\@tempa\@empty}{}{\@biblabel{#2}}%
1099
+ \hyper@natanchorend
1100
+ }%
1101
+ \providecommand\hyper@natanchorstart[1]{}%
1102
+ \providecommand\hyper@natanchorend{}%
1103
+ \providecommand\hyper@natlinkstart[1]{}%
1104
+ \providecommand\hyper@natlinkend{}%
1105
+ \providecommand\hyper@natlinkbreak[2]{#1}%
1106
+ \AtBeginDocument{%
1107
+ \@ifpackageloaded{babel}{%
1108
+ \let\org@@citex\@citex}{}}
1109
+ \providecommand\@safe@activestrue{}%
1110
+ \providecommand\@safe@activesfalse{}%
1111
+
1112
+ \newcommand\NAT@sort@cites[1]{%
1113
+ \let\NAT@cite@list\@empty
1114
+ \@for\@citeb:=#1\do{\expandafter\NAT@star@cite\@citeb\@@}%
1115
+ \if@filesw
1116
+ \expandafter\immediate\expandafter\write\expandafter\@auxout
1117
+ \expandafter{\expandafter\string\expandafter\citation\expandafter{\NAT@cite@list}}%
1118
+ \fi
1119
+ \@ifnum{\NAT@sort>\z@}{%
1120
+ \expandafter\NAT@sort@cites@\expandafter{\NAT@cite@list}%
1121
+ }{}%
1122
+ }%
1123
+ \def\NAT@star@cite{%
1124
+ \let\NAT@star@sw\@secondoftwo
1125
+ \@ifnum{\NAT@merge>\z@}{%
1126
+ \@ifnextchar*{%
1127
+ \let\NAT@star@sw\@firstoftwo
1128
+ \NAT@star@cite@star
1129
+ }{%
1130
+ \NAT@star@cite@nostar
1131
+ }%
1132
+ }{%
1133
+ \NAT@star@cite@noextension
1134
+ }%
1135
+ }%
1136
+ \def\NAT@star@cite@star*{%
1137
+ \NAT@star@cite@nostar
1138
+ }%
1139
+ \def\NAT@star@cite@nostar{%
1140
+ \let\nat@keyopt@open\@empty
1141
+ \let\nat@keyopt@shut\@empty
1142
+ \@ifnextchar[{\NAT@star@cite@pre}{\NAT@star@cite@pre[]}%
1143
+ }%
1144
+ \def\NAT@star@cite@pre[#1]{%
1145
+ \def\nat@keyopt@open{#1}%
1146
+ \@ifnextchar[{\NAT@star@cite@post}{\NAT@star@cite@post[]}%
1147
+ }%
1148
+ \def\NAT@star@cite@post[#1]#2\@@{%
1149
+ \def\nat@keyopt@shut{#1}%
1150
+ \NAT@star@sw{\expandafter\global\expandafter\let\csname NAT@b*@#2\endcsname\@empty}{}%
1151
+ \NAT@cite@list@append{#2}%
1152
+ }%
1153
+ \def\NAT@star@cite@noextension#1\@@{%
1154
+ \let\nat@keyopt@open\@empty
1155
+ \let\nat@keyopt@shut\@empty
1156
+ \NAT@cite@list@append{#1}%
1157
+ }%
1158
+ \def\NAT@cite@list@append#1{%
1159
+ \edef\@citeb{\@firstofone#1\@empty}%
1160
+ \if@filesw\@ifxundefined\@cprwrite{}{\expandafter\@cprwrite\@citeb=}\fi
1161
+ \if\relax\nat@keyopt@open\relax\else
1162
+ \global\expandafter\let\csname NAT@b@open@\@citeb\endcsname\nat@keyopt@open
1163
+ \fi
1164
+ \if\relax\nat@keyopt@shut\relax\else
1165
+ \global\expandafter\let\csname NAT@b@shut@\@citeb\endcsname\nat@keyopt@shut
1166
+ \fi
1167
+ \toks@\expandafter{\NAT@cite@list}%
1168
+ \ifx\NAT@cite@list\@empty
1169
+ \@temptokena\expandafter{\@citeb}%
1170
+ \else
1171
+ \@temptokena\expandafter{\expandafter,\@citeb}%
1172
+ \fi
1173
+ \edef\NAT@cite@list{\the\toks@\the\@temptokena}%
1174
+ }%
1175
+ \newcommand\NAT@sort@cites@[1]{%
1176
+ \count@\z@
1177
+ \@tempcntb\m@ne
1178
+ \let\@celt\delimiter
1179
+ \def\NAT@num@list{}%
1180
+ \let\NAT@cite@list\@empty
1181
+ \let\NAT@nonsort@list\@empty
1182
+ \@for \@citeb:=#1\do{\NAT@make@cite@list}%
1183
+ \ifx\NAT@nonsort@list\@empty\else
1184
+ \protected@edef\NAT@cite@list{\NAT@cite@list\NAT@nonsort@list}%
1185
+ \fi
1186
+ \ifx\NAT@cite@list\@empty\else
1187
+ \protected@edef\NAT@cite@list{\expandafter\NAT@xcom\NAT@cite@list @@}%
1188
+ \fi
1189
+ }%
1190
+ \def\NAT@make@cite@list{%
1191
+ \advance\count@\@ne
1192
+ \@safe@activestrue
1193
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
1194
+ \@safe@activesfalse
1195
+ \@ifundefined{b@\@citeb\@extra@b@citeb}%
1196
+ {\def\NAT@num{A}}%
1197
+ {\NAT@parse{\@citeb}}%
1198
+ \NAT@ifcat@num\NAT@num
1199
+ {\@tempcnta\NAT@num \relax
1200
+ \@ifnum{\@tempcnta<\@tempcntb}{%
1201
+ \let\NAT@@cite@list=\NAT@cite@list
1202
+ \let\NAT@cite@list\@empty
1203
+ \begingroup\let\@celt=\NAT@celt\NAT@num@list\endgroup
1204
+ \protected@edef\NAT@num@list{%
1205
+ \expandafter\NAT@num@celt \NAT@num@list \@gobble @%
1206
+ }%
1207
+ }{%
1208
+ \protected@edef\NAT@num@list{\NAT@num@list \@celt{\NAT@num}}%
1209
+ \protected@edef\NAT@cite@list{\NAT@cite@list\@citeb,}%
1210
+ \@tempcntb\@tempcnta
1211
+ }%
1212
+ }%
1213
+ {\protected@edef\NAT@nonsort@list{\NAT@nonsort@list\@citeb,}}%
1214
+ }%
1215
+ \def\NAT@celt#1{%
1216
+ \@ifnum{#1>\@tempcnta}{%
1217
+ \xdef\NAT@cite@list{\NAT@cite@list\@citeb,\NAT@@cite@list}%
1218
+ \let\@celt\@gobble
1219
+ }{%
1220
+ \expandafter\def@NAT@cite@lists\NAT@@cite@list\@@
1221
+ }%
1222
+ }%
1223
+ \def\NAT@num@celt#1#2{%
1224
+ \ifx#1\@celt
1225
+ \@ifnum{#2>\@tempcnta}{%
1226
+ \@celt{\number\@tempcnta}%
1227
+ \@celt{#2}%
1228
+ }{%
1229
+ \@celt{#2}%
1230
+ \expandafter\NAT@num@celt
1231
+ }%
1232
+ \fi
1233
+ }%
1234
+ \def\def@NAT@cite@lists#1,#2\@@{%
1235
+ \xdef\NAT@cite@list{\NAT@cite@list#1,}%
1236
+ \xdef\NAT@@cite@list{#2}%
1237
+ }%
1238
+ \def\NAT@nextc#1,#2@@{#1,}
1239
+ \def\NAT@restc#1,#2{#2}
1240
+ \def\NAT@xcom#1,@@{#1}
1241
+ \InputIfFileExists{natbib.cfg}
1242
+ {\typeout{Local config file natbib.cfg used}}{}
1243
+ %%
1244
+ %% <<<<< End of generated file <<<<<<
1245
+ %%
1246
+ %% End of file `natbib.sty'.
outputs/outputs_20230608_115759/ref.bib ADDED
@@ -0,0 +1,784 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @article{haarnoja2018soft,
2
+ title = {Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor},
3
+ author = {Tuomas Haarnoja and Aurick Zhou and P. Abbeel and S. Levine},
4
+ journal={International Conference on Machine Learning},
5
+ year = {2018},
6
+ url = {dblp.org/rec/conf/icml/HaarnojaZAL18}
7
+ }
8
+
9
+ @article{mnih2016asynchronous,
10
+ title = {Asynchronous Methods for Deep Reinforcement Learning},
11
+ author = {Volodymyr Mnih and Adrià Puigdomènech Badia and Mehdi Mirza and A. Graves and T. Lillicrap and Tim Harley and David Silver and K. Kavukcuoglu},
12
+ journal={International Conference on Machine Learning},
13
+ year = {2016},
14
+ url = {dblp.org/rec/journals/corr/MnihBMGLHSK16}
15
+ }
16
+
17
+ @article{zoph2016neural,
18
+ title = {Neural Architecture Search with Reinforcement Learning},
19
+ author = {Barret Zoph and Quoc V. Le},
20
+ journal={International Conference on Learning Representations},
21
+ year = {2016},
22
+ url = {dblp.org/rec/conf/iclr/ZophL17}
23
+ }
24
+
25
+ @article{mnih2013playing,
26
+ title = {Playing Atari with Deep Reinforcement Learning},
27
+ author = {Volodymyr Mnih and K. Kavukcuoglu and David Silver and A. Graves and Ioannis Antonoglou and Daan Wierstra and Martin A. Riedmiller},
28
+ journal={arXiv.org},
29
+ year = {2013},
30
+ url = {dblp.org/rec/journals/corr/MnihKSGAWR13}
31
+ }
32
+
33
+ @article{lillicrap2015continuous,
34
+ title = {Continuous control with deep reinforcement learning},
35
+ author = {T. Lillicrap and Jonathan J. Hunt and A. Pritzel and N. Heess and T. Erez and Yuval Tassa and David Silver and Daan Wierstra},
36
+ journal={International Conference on Learning Representations},
37
+ year = {2015},
38
+ url = {dblp.org/rec/journals/corr/LillicrapHPHETS15}
39
+ }
40
+
41
+ @article{hasselt2015deep,
42
+ title = {Deep Reinforcement Learning with Double Q-Learning},
43
+ author = {H. V. Hasselt and A. Guez and David Silver},
44
+ journal={AAAI Conference on Artificial Intelligence},
45
+ year = {2015},
46
+ url = {dblp.org/rec/journals/corr/HasseltGS15}
47
+ }
48
+
49
+ @article{sutton2005reinforcement,
50
+ title = {Reinforcement Learning: An Introduction},
51
+ author = {R. Sutton and A. Barto},
52
+ journal={IEEE Transactions on Neural Networks},
53
+ year = {2005},
54
+ url = {dblp.org/rec/journals/tnn/SuttonB98}
55
+ }
56
+
57
+ @article{silver2018a,
58
+ title = {A general reinforcement learning algorithm that masters chess, shogi, and Go through self-play},
59
+ author = {David Silver and T. Hubert and Julian Schrittwieser and Ioannis Antonoglou and Matthew Lai and A. Guez and Marc Lanctot and L. Sifre and D. Kumaran and T. Graepel and T. Lillicrap and K. Simonyan and D. Hassabis},
60
+ journal={Science},
61
+ year = {2018},
62
+ url = {}
63
+ }
64
+
65
+ @article{mcmahan2016communication,
66
+ title = {Communication-Efficient Learning of Deep Networks from Decentralized Data},
67
+ author = {H. B. McMahan and Eider Moore and D. Ramage and S. Hampson and B. A. Y. Arcas},
68
+ journal={International Conference on Artificial Intelligence and Statistics},
69
+ year = {2016},
70
+ url = {dblp.org/rec/conf/aistats/McMahanMRHA17}
71
+ }
72
+
73
+ @article{he2022byzantine,
74
+ title = {Byzantine-Robust Decentralized Learning via Self-Centered Clipping},
75
+ author = {Lie He and Sai Praneeth Karimireddy and Martin Jaggi},
76
+ journal={arXiv.org},
77
+ year = {2022},
78
+ url = {dblp.org/rec/journals/corr/abs-2202-01545}
79
+ }
80
+
81
+ @article{fu2022lightweight,
82
+ title = {Lightweight Automatic Modulation Classification Based on Decentralized Learning},
83
+ author = {Xue Fu and Guan Gui and Yu Wang and T. Ohtsuki and B. Adebisi and H. Gačanin and F. Adachi},
84
+ journal={IEEE Transactions on Cognitive Communications and Networking},
85
+ year = {2022},
86
+ url = {dblp.org/rec/journals/tccn/FuGWOAGA22}
87
+ }
88
+
89
+ @article{fu2022automatic,
90
+ title = {Automatic Modulation Classification Based on Decentralized Learning and Ensemble Learning},
91
+ author = {Xue Fu and Guan Gui and Yu Wang and H. Gačanin and F. Adachi},
92
+ journal={IEEE Transactions on Vehicular Technology},
93
+ year = {2022},
94
+ url = {dblp.org/rec/journals/tvt/FuG0GA22}
95
+ }
96
+
97
+ @article{dandi2022data,
98
+ title = {Data-heterogeneity-aware Mixing for Decentralized Learning},
99
+ author = {Yatin Dandi and Anastasia Koloskova and Martin Jaggi and S. Stich},
100
+ journal={arXiv.org},
101
+ year = {2022},
102
+ url = {dblp.org/rec/journals/corr/abs-2204-06477}
103
+ }
104
+
105
+ @article{jeong2022asynchronous,
106
+ title = {Asynchronous Decentralized Learning over Unreliable Wireless Networks},
107
+ author = {Eunjeong Jeong and Matteo Zecchin and M. Kountouris},
108
+ journal={ICC 2022 - IEEE International Conference on Communications},
109
+ year = {2022},
110
+ url = {dblp.org/rec/conf/icc/JeongZK22}
111
+ }
112
+
113
+ @article{li2022learning,
114
+ title = {Learning to Collaborate in Decentralized Learning of Personalized Models},
115
+ author = {Shuang-Yang Li and Tianyi Zhou and Xinmei Tian and Dacheng Tao},
116
+ journal={Computer Vision and Pattern Recognition},
117
+ year = {2022},
118
+ url = {dblp.org/rec/conf/cvpr/LiZ0T22}
119
+ }
120
+
121
+ @article{esfandiari2021cross,
122
+ title = {Cross-Gradient Aggregation for Decentralized Learning from Non-IID data},
123
+ author = {Yasaman Esfandiari and Sin Yong Tan and Zhanhong Jiang and Aditya Balu and Ethan Herron and C. Hegde and S. Sarkar},
124
+ journal={International Conference on Machine Learning},
125
+ year = {2021},
126
+ url = {dblp.org/rec/journals/corr/abs-2103-02051}
127
+ }
128
+
129
+ @article{taheri2022on,
130
+ title = {On Generalization of Decentralized Learning with Separable Data},
131
+ author = {Hossein Taheri and Christos Thrampoulidis},
132
+ journal={arXiv preprint},
133
+ year = {2022},
134
+ url = {arxiv.org/abs/2209.07116}
135
+ }
136
+
137
+ @article{paszke2019pytorch,
138
+ title = {PyTorch: An Imperative Style, High-Performance Deep Learning Library},
139
+ author = {Adam Paszke and Sam Gross and Francisco Massa and Adam Lerer and James Bradbury and Gregory Chanan and Trevor Killeen and Zeming Lin and N. Gimelshein and L. Antiga and Alban Desmaison and Andreas Köpf and E. Yang and Zach DeVito and Martin Raison and A. Tejani and Sasank Chilamkurthy and Benoit Steiner and Lu Fang and Junjie Bai and Soumith Chintala},
140
+ journal={Neural Information Processing Systems},
141
+ year = {2019},
142
+ url = {dblp.org/rec/journals/corr/abs-1912-01703}
143
+ }
144
+
145
+ @article{madry2017towards,
146
+ title = {Towards Deep Learning Models Resistant to Adversarial Attacks},
147
+ author = {A. Madry and Aleksandar Makelov and Ludwig Schmidt and Dimitris Tsipras and Adrian Vladu},
148
+ journal={International Conference on Learning Representations},
149
+ year = {2017},
150
+ url = {dblp.org/rec/conf/iclr/MadryMSTV18}
151
+ }
152
+
153
+ @article{gal2015dropout,
154
+ title = {Dropout as a Bayesian Approximation: Representing Model Uncertainty in Deep Learning},
155
+ author = {Y. Gal and Zoubin Ghahramani},
156
+ journal={International Conference on Machine Learning},
157
+ year = {2015},
158
+ url = {dblp.org/rec/journals/corr/GalG15}
159
+ }
160
+
161
+ @article{chollet2016xception,
162
+ title = {Xception: Deep Learning with Depthwise Separable Convolutions},
163
+ author = {François Chollet},
164
+ journal={Computer Vision and Pattern Recognition},
165
+ year = {2016},
166
+ url = {dblp.org/rec/journals/corr/Chollet16a}
167
+ }
168
+
169
+ @article{liu2014deep,
170
+ title = {Deep Learning Face Attributes in the Wild},
171
+ author = {Ziwei Liu and Ping Luo and Xiaogang Wang and Xiaoou Tang},
172
+ journal={IEEE International Conference on Computer Vision},
173
+ year = {2014},
174
+ url = {dblp.org/rec/journals/corr/LiuLWT14}
175
+ }
176
+
177
+ @article{qi2016pointnet,
178
+ title = {PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation},
179
+ author = {C. Qi and Hao Su and Kaichun Mo and L. Guibas},
180
+ journal={Computer Vision and Pattern Recognition},
181
+ year = {2016},
182
+ url = {dblp.org/rec/journals/corr/QiSMG16}
183
+ }
184
+
185
+ @article{gulshan2016development,
186
+ title = {Development and Validation of a Deep Learning Algorithm for Detection of Diabetic Retinopathy in Retinal Fundus Photographs.},
187
+ author = {Varun Gulshan and L. Peng and Marc Coram and Martin C. Stumpe and Derek J. Wu and Arunachalam Narayanaswamy and Subhashini Venugopalan and Kasumi Widner and T. Madams and Jorge A Cuadros and R. Kim and R. Raman and Philip Nelson and J. Mega and D. Webster},
188
+ journal={Journal of the American Medical Association (JAMA)},
189
+ year = {2016},
190
+ url = {}
191
+ }
192
+
193
+ @article{zhang2016understanding,
194
+ title = {Understanding deep learning requires rethinking generalization},
195
+ author = {Chiyuan Zhang and Samy Bengio and Moritz Hardt and B. Recht and Oriol Vinyals},
196
+ journal={International Conference on Learning Representations},
197
+ year = {2016},
198
+ url = {dblp.org/rec/conf/iclr/ZhangBHRV17}
199
+ }
200
+
201
+ @article{adadi2018peeking,
202
+ title = {Peeking Inside the Black-Box: A Survey on Explainable Artificial Intelligence (XAI)},
203
+ author = {Amina Adadi and M. Berrada},
204
+ journal={IEEE Access},
205
+ year = {2018},
206
+ url = {dblp.org/rec/journals/access/AdadiB18}
207
+ }
208
+
209
+ @article{ridley2022explainable,
210
+ title = {Explainable Artificial Intelligence (XAI)},
211
+ author = {M. Ridley},
212
+ journal={Information Technology and Libraries},
213
+ year = {2022},
214
+ url = {}
215
+ }
216
+
217
+ @article{russell1995artificial,
218
+ title = {Artificial Intelligence: A Modern Approach},
219
+ author = {Stuart J. Russell and Peter Norvig},
220
+ journal={arXiv preprint},
221
+ year = {1995},
222
+ url = {}
223
+ }
224
+
225
+ @article{ma2022artificial,
226
+ title = {Artificial Intelligence A Modern Approach Global Edition},
227
+ author = {},
228
+ journal={arXiv preprint},
229
+ year = {2022},
230
+ url = {}
231
+ }
232
+
233
+ @article{holland1992adaptation,
234
+ title = {Adaptation in Natural and Artificial Systems: An Introductory Analysis with Applications to Biology, Control, and Artificial Intelligence},
235
+ author = {J. Holland},
236
+ journal={arXiv preprint},
237
+ year = {1992},
238
+ url = {dblp.org/rec/books/mit/H1992}
239
+ }
240
+
241
+ @article{dufwenberg2011game,
242
+ title = {Game theory.},
243
+ author = {M. Dufwenberg},
244
+ journal={Wiley Interdisciplinary Reviews: Cognitive Science},
245
+ year = {2011},
246
+ url = {}
247
+ }
248
+
249
+ @article{9–jan2022combinatorial,
250
+ title = {Combinatorial Game Theory},
251
+ author = {Jan. 9–Jan},
252
+ journal={arXiv preprint},
253
+ year = {2022},
254
+ url = {}
255
+ }
256
+
257
+ @article{osborne1995a,
258
+ title = {A Course in Game Theory},
259
+ author = {M. Osborne and A. Rubinstein},
260
+ journal={arXiv preprint},
261
+ year = {1995},
262
+ url = {}
263
+ }
264
+
265
+ @article{camerer2003behavioral,
266
+ title = {Behavioral Game Theory: Experiments in Strategic Interaction},
267
+ author = {Colin Camerer},
268
+ journal={arXiv preprint},
269
+ year = {2003},
270
+ url = {}
271
+ }
272
+
273
+ @article{myerson1991game,
274
+ title = {Game theory - Analysis of Conflict},
275
+ author = {R. Myerson},
276
+ journal={arXiv preprint},
277
+ year = {1991},
278
+ url = {dblp.org/rec/books/daglib/0023252}
279
+ }
280
+
281
+ @article{rabin1993incorporating,
282
+ title = {Incorporating Fairness into Game Theory and Economics},
283
+ author = {M. Rabin},
284
+ journal={arXiv preprint},
285
+ year = {1993},
286
+ url = {}
287
+ }
288
+
289
+ @article{roughgarden2010algorithmic,
290
+ title = {Algorithmic game theory},
291
+ author = {T. Roughgarden},
292
+ journal={Communications of the ACM},
293
+ year = {2010},
294
+ url = {dblp.org/rec/journals/cacm/Roughgarden10}
295
+ }
296
+
297
+ @article{hesteren2017evolutionary,
298
+ title = {Evolutionary Game Theory},
299
+ author = {D. M. V. Hesteren},
300
+ journal={arXiv preprint},
301
+ year = {2017},
302
+ url = {}
303
+ }
304
+
305
+ @article{chen2022multi,
306
+ title = {Multi-Agent Reinforcement Learning for Decentralized Resilient Secondary Control of Energy Storage Systems Against DoS Attacks},
307
+ author = {Pengcheng Chen and Shichao Liu and Bo Chen and Li Yu},
308
+ journal={IEEE Transactions on Smart Grid},
309
+ year = {2022},
310
+ url = {dblp.org/rec/journals/tsg/ChenLCY22}
311
+ }
312
+
313
+ @article{lyu2021contrasting,
314
+ title = {Contrasting Centralized and Decentralized Critics in Multi-Agent Reinforcement Learning},
315
+ author = {Xueguang Lyu and Yuchen Xiao and Brett Daley and Chris Amato},
316
+ journal={Adaptive Agents and Multi-Agent Systems},
317
+ year = {2021},
318
+ url = {dblp.org/rec/conf/atal/LyuXDA21}
319
+ }
320
+
321
+ @article{su2022ma2ql,
322
+ title = {MA2QL: A Minimalist Approach to Fully Decentralized Multi-Agent Reinforcement Learning},
323
+ author = {Kefan Su and Siyuan Zhou and Chuang Gan and Xiangjun Wang and Zongqing Lu},
324
+ journal={arXiv.org},
325
+ year = {2022},
326
+ url = {dblp.org/rec/journals/corr/abs-2209-08244}
327
+ }
328
+
329
+ @article{liu2022federated,
330
+ title = {Federated Reinforcement Learning for Decentralized Voltage Control in Distribution Networks},
331
+ author = {Haotian Liu and Wenchuan Wu},
332
+ journal={IEEE Transactions on Smart Grid},
333
+ year = {2022},
334
+ url = {dblp.org/rec/journals/tsg/LiuW22a}
335
+ }
336
+
337
+ @article{lei2022adaptive,
338
+ title = {Adaptive Stochastic ADMM for Decentralized Reinforcement Learning in Edge IoT},
339
+ author = {Wanlu Lei and Yu Ye and M. Xiao and M. Skoglund and Zhu Han},
340
+ journal={IEEE Internet of Things Journal},
341
+ year = {2022},
342
+ url = {dblp.org/rec/journals/iotj/LeiYXSH22}
343
+ }
344
+
345
+ @article{lu2021decentralized,
346
+ title = {Decentralized Policy Gradient Descent Ascent for Safe Multi-Agent Reinforcement Learning},
347
+ author = {Songtao Lu and K. Zhang and Tianyi Chen and T. Başar and L. Horesh},
348
+ journal={AAAI Conference on Artificial Intelligence},
349
+ year = {2021},
350
+ url = {dblp.org/rec/conf/aaai/LuZCBH21}
351
+ }
352
+
353
+ @article{thumiger2022a,
354
+ title = {A Multi-Agent Deep Reinforcement Learning Approach for Practical Decentralized UAV Collision Avoidance},
355
+ author = {Nicholas Thumiger and M. Deghat},
356
+ journal={IEEE Control Systems Letters},
357
+ year = {2022},
358
+ url = {dblp.org/rec/journals/csysl/ThumigerD22}
359
+ }
360
+
361
+ @article{rakkini2022comprehensive,
362
+ title = {Comprehensive overview on the deployment of machine learning, deep learning, reinforcement learning algorithms in Selfish mining attack in blockchain},
363
+ author = {M. J. Jeyasheela Rakkini and K. Geetha},
364
+ journal={2022 IEEE 2nd Mysore Sub Section International Conference (MysuruCon)},
365
+ year = {2022},
366
+ url = {}
367
+ }
368
+
369
+ @article{sahu2023an,
370
+ title = {An Overview of Machine Learning, Deep Learning, and Reinforcement Learning-Based Techniques in Quantitative Finance: Recent Progress and Challenges},
371
+ author = {S. Sahu and A. Mokhade and N. Bokde},
372
+ journal={Applied Sciences},
373
+ year = {2023},
374
+ url = {}
375
+ }
376
+
377
+ @article{zhao2022alphaholdem,
378
+ title = {AlphaHoldem: High-Performance Artificial Intelligence for Heads-Up No-Limit Poker via End-to-End Reinforcement Learning},
379
+ author = {Enmin Zhao and Renye Yan and Jinqiu Li and Kai Li and Junliang Xing},
380
+ journal={AAAI Conference on Artificial Intelligence},
381
+ year = {2022},
382
+ url = {dblp.org/rec/conf/aaai/ZhaoYLLX22}
383
+ }
384
+
385
+ @article{ma2021algorithms,
386
+ title = {Algorithms For Reinforcement Learning Synthesis Lectures On Artificial Intelligence And Machine Learning Epdf Read},
387
+ author = {},
388
+ journal={arXiv preprint},
389
+ year = {2021},
390
+ url = {}
391
+ }
392
+
393
+ @article{yang2021an,
394
+ title = {An Information Fusion Approach to Intelligent Traffic Signal Control Using the Joint Methods of Multiagent Reinforcement Learning and Artificial Intelligence of Things},
395
+ author = {Xiaoxian Yang and Yueshen Xu and Li Kuang and Zhiying Wang and Honghao Gao and Xuejie Wang},
396
+ journal={IEEE transactions on intelligent transportation systems (Print)},
397
+ year = {2021},
398
+ url = {dblp.org/rec/journals/tits/YangXKWGW22}
399
+ }
400
+
401
+ @article{ribba2020model,
402
+ title = {Model‐Informed Artificial Intelligence: Reinforcement Learning for Precision Dosing},
403
+ author = {B. Ribba and S. Dudal and T. Lavé and R. Peck},
404
+ journal={Clinical pharmacology and therapy},
405
+ year = {2020},
406
+ url = {}
407
+ }
408
+
409
+ @article{hrinivich2020artificial,
410
+ title = {Artificial intelligence-based radiotherapy machine parameter optimization using reinforcement learning.},
411
+ author = {W. Hrinivich and Junghoon Lee},
412
+ journal={Medical Physics (Lancaster)},
413
+ year = {2020},
414
+ url = {}
415
+ }
416
+
417
+ @article{liu2022joint,
418
+ title = {Joint Beamforming, Power Allocation, and Splitting Control for SWIPT-Enabled IoT Networks with Deep Reinforcement Learning and Game Theory},
419
+ author = {Jain-Shing Liu and C. Lin and Yu‐Chen Hu and Praveen Kumar Donta},
420
+ journal={Italian National Conference on Sensors},
421
+ year = {2022},
422
+ url = {dblp.org/rec/journals/sensors/LiuLHD22}
423
+ }
424
+
425
+ @article{duan2022autonomous,
426
+ title = {Autonomous driving planning and decision making based on game theory and reinforcement learning},
427
+ author = {Weiping Duan and Zhongyi Tang and Wei Liu and Hongbiao Zhou},
428
+ journal={Expert Syst. J. Knowl. Eng.},
429
+ year = {2022},
430
+ url = {dblp.org/rec/journals/es/DuanTLZ23}
431
+ }
432
+
433
+ @article{liang2022gadqn,
434
+ title = {GaDQN-IDS: A Novel Self-Adaptive IDS for VANETs Based on Bayesian Game Theory and Deep Reinforcement Learning},
435
+ author = {Junwei Liang and M. Ma and Xu Tan},
436
+ journal={IEEE transactions on intelligent transportation systems (Print)},
437
+ year = {2022},
438
+ url = {dblp.org/rec/journals/tits/LiangMT22}
439
+ }
440
+
441
+ @article{jin2022security,
442
+ title = {Security State Estimation for Cyber-Physical Systems against DoS Attacks via Reinforcement Learning and Game Theory},
443
+ author = {Zengwang Jin and Shuting Zhang and Yanyan Hu and Yanning Zhang and Changyin Sun},
444
+ journal={Actuators},
445
+ year = {2022},
446
+ url = {}
447
+ }
448
+
449
+ @article{yin2022air,
450
+ title = {Air Combat Maneuver Decision Based on Deep Reinforcement Learning and Game Theory},
451
+ author = {Shuhui Yin and Yu Kang and Yunbo Zhao and Jian Xue},
452
+ journal={Cybersecurity and Cyberforensics Conference},
453
+ year = {2022},
454
+ url = {}
455
+ }
456
+
457
+ @article{zwillinger2022distributing,
458
+ title = {Distributing data throughout a MANET in a communications denied environment: reinforcement learning and game theory approaches},
459
+ author = {D. Zwillinger and J. Sierchio and M. Gerken and Emily Clark},
460
+ journal={Defense + Commercial Sensing},
461
+ year = {2022},
462
+ url = {}
463
+ }
464
+
465
+ @article{purfatideh2014efficent,
466
+ title = {Efficent Congestion Control Scheme in Computer Networks using Fuzzy Reinforcement Learning & Game Theory},
467
+ author = {Mohamad Bagher Safari Purfatideh and S. Jamali and Morteza Analoei},
468
+ journal={arXiv preprint},
469
+ year = {2014},
470
+ url = {}
471
+ }
472
+
473
+ @article{teymoori2022dynamic,
474
+ title = {Dynamic Multi-user Computation Offloading for Mobile Edge Computing using Game Theory and Deep Reinforcement Learning},
475
+ author = {P. Teymoori and A. Boukerche},
476
+ journal={ICC 2022 - IEEE International Conference on Communications},
477
+ year = {2022},
478
+ url = {dblp.org/rec/conf/icc/TeymooriB22}
479
+ }
480
+
481
+ @article{huang2022toward,
482
+ title = {Toward Decentralized and Collaborative Deep Learning Inference for Intelligent IoT Devices},
483
+ author = {Yakun Huang and Xiuquan Qiao and S. Dustdar and Jianwei Zhang and Jiulin Li},
484
+ journal={IEEE Network},
485
+ year = {2022},
486
+ url = {dblp.org/rec/journals/network/HuangQDZL22}
487
+ }
488
+
489
+ @article{lin2021quasi,
490
+ title = {Quasi-Global Momentum: Accelerating Decentralized Deep Learning on Heterogeneous Data},
491
+ author = {Tao Lin and Sai Praneeth Karimireddy and S. Stich and Martin Jaggi},
492
+ journal={International Conference on Machine Learning},
493
+ year = {2021},
494
+ url = {dblp.org/rec/journals/corr/abs-2102-04761}
495
+ }
496
+
497
+ @article{takezawa2022momentum,
498
+ title = {Momentum Tracking: Momentum Acceleration for Decentralized Deep Learning on Heterogeneous Data},
499
+ author = {Yuki Takezawa and Hang Bao and K. Niwa and R. Sato and Makoto Yamada},
500
+ journal={arXiv.org},
501
+ year = {2022},
502
+ url = {dblp.org/rec/journals/corr/abs-2209-15505}
503
+ }
504
+
505
+ @article{kong2021consensus,
506
+ title = {Consensus Control for Decentralized Deep Learning},
507
+ author = {Lingjing Kong and Tao Lin and Anastasia Koloskova and Martin Jaggi and S. Stich},
508
+ journal={International Conference on Machine Learning},
509
+ year = {2021},
510
+ url = {dblp.org/rec/conf/icml/00010KJS21}
511
+ }
512
+
513
+ @article{vogels2021relaysum,
514
+ title = {RelaySum for Decentralized Deep Learning on Heterogeneous Data},
515
+ author = {Thijs Vogels and Lie He and Anastasia Koloskova and Tao Lin and Sai Praneeth Karimireddy and S. Stich and Martin Jaggi},
516
+ journal={Neural Information Processing Systems},
517
+ year = {2021},
518
+ url = {dblp.org/rec/conf/nips/VogelsHKKLSJ21}
519
+ }
520
+
521
+ @article{shiri2022decentralized,
522
+ title = {Decentralized Distributed Multi-institutional PET Image Segmentation Using a Federated Deep Learning Framework},
523
+ author = {I. Shiri and A. Vafaei Sadr and Mehdi Amini and Y. Salimi and Amirhossein Sanaat and A. Akhavanallaf and Behrooz Razeghi and Sohrab Ferdowsi and A. Saberi and Hossein ARABI and M. Becker and S. Voloshynovskiy and Deniz Gündüz and A. Rahmim and H. Zaidi},
524
+ journal={Clinical Nuclear Medicine},
525
+ year = {2022},
526
+ url = {}
527
+ }
528
+
529
+ @article{jayakody2022fake,
530
+ title = {Fake News Detection using a Decentralized Deep Learning Model and Federated Learning},
531
+ author = {Nirosh Jayakody and Azeem Mohammad and M. Halgamuge},
532
+ journal={Annual Conference of the IEEE Industrial Electronics Society},
533
+ year = {2022},
534
+ url = {dblp.org/rec/conf/iecon/JayakodyMH22}
535
+ }
536
+
537
+ @article{sun2021decentralized,
538
+ title = {Decentralized Deep Learning for Multi-Access Edge Computing: A Survey on Communication Efficiency and Trustworthiness},
539
+ author = {Yuwei Sun and H. Ochiai and H. Esaki},
540
+ journal={IEEE Transactions on Artificial Intelligence},
541
+ year = {2021},
542
+ url = {dblp.org/rec/journals/tai/SunOE22}
543
+ }
544
+
545
+ @article{lim2022decentralized,
546
+ title = {Decentralized Edge Intelligence: A Dynamic Resource Allocation Framework for Hierarchical Federated Learning},
547
+ author = {Wei Yang Bryan Lim and Jer Shyuan Ng and Zehui Xiong and Jiangming Jin and Yang Zhang and D. Niyato and C. Leung and C. Miao},
548
+ journal={IEEE Transactions on Parallel and Distributed Systems},
549
+ year = {2022},
550
+ url = {dblp.org/rec/journals/tpds/LimNXJZNLM22}
551
+ }
552
+
553
+ @article{kang2022communication,
554
+ title = {Communication-Efficient and Cross-Chain Empowered Federated Learning for Artificial Intelligence of Things},
555
+ author = {Jiawen Kang and Xuandi Li and Jiangtian Nie and Yi Liu and Minrui Xu and Zehui Xiong and D. Niyato and Qiang Yan},
556
+ journal={IEEE Transactions on Network Science and Engineering},
557
+ year = {2022},
558
+ url = {dblp.org/rec/journals/tnse/KangLNLXXNY22}
559
+ }
560
+
561
+ @article{s2022converging,
562
+ title = {Converging Blockchain and Artificial-Intelligence Towards Healthcare: A Decentralized-Private and Intelligence Health Record System},
563
+ author = {Arpith S and G. Mufeed and Anusha K R and Gahana},
564
+ journal={2022 2nd International Conference on Intelligent Technologies (CONIT)},
565
+ year = {2022},
566
+ url = {}
567
+ }
568
+
569
+ @article{facchini2022decentralized,
570
+ title = {Decentralized Autonomous Organizations and Multi-agent Systems for Artificial Intelligence Applications and Data Analysis},
571
+ author = {Sante Dino Facchini},
572
+ journal={International Joint Conference on Artificial Intelligence},
573
+ year = {2022},
574
+ url = {dblp.org/rec/conf/ijcai/Facchini22}
575
+ }
576
+
577
+ @article{nouruzi2022toward,
578
+ title = {Toward a Smart Resource Allocation Policy via Artificial Intelligence in 6G Networks: Centralized or Decentralized?},
579
+ author = {A. Nouruzi and A. Rezaei and Ata Khalili and N. Mokari and M. Javan and Eduard Axel Jorswieck and H. Yanikomeroglu},
580
+ journal={arXiv.org},
581
+ year = {2022},
582
+ url = {dblp.org/rec/journals/corr/abs-2202-09093}
583
+ }
584
+
585
+ @article{jose2022application,
586
+ title = {Application of artificial intelligence in secure decentralized computation enabled by TOTEM},
587
+ author = {Dhanya Therese Jose and Chunming Rong and Antorweep Chakravorty},
588
+ journal={2022 IEEE Asia-Pacific Conference on Computer Science and Data Engineering (CSDE)},
589
+ year = {2022},
590
+ url = {}
591
+ }
592
+
593
+ @article{clough2020artificial,
594
+ title = {Artificial Intelligence, Data-Driven Learning, and the Decentralized Structure of Platform Ecosystems},
595
+ author = {David R. Clough and Andy Wu},
596
+ journal={arXiv preprint},
597
+ year = {2020},
598
+ url = {}
599
+ }
600
+
601
+ @article{hu2020energy,
602
+ title = {Energy Management for isolated renewable-powered microgrids using reinforcement learning and game theory},
603
+ author = {R. Hu and A. Kwasinski},
604
+ journal={EPE},
605
+ year = {2020},
606
+ url = {}
607
+ }
608
+
609
+ @article{adams2020resolving,
610
+ title = {Resolving Implicit Coordination in Multi-Agent Deep Reinforcement Learning with Deep Q-Networks & Game Theory},
611
+ author = {Griffin Adams and Sarguna Padmanabhan and S. Shekhar},
612
+ journal={arXiv.org},
613
+ year = {2020},
614
+ url = {dblp.org/rec/journals/corr/abs-2012-09136}
615
+ }
616
+
617
+ @article{zhou2019intelligent,
618
+ title = {Intelligent Decentralized Dynamic Power Allocation in MANET at Tactical Edge based on Mean-Field Game Theory},
619
+ author = {Zejian Zhou and Lijun Qian and Hao Xu},
620
+ journal={IEEE Military Communications Conference},
621
+ year = {2019},
622
+ url = {dblp.org/rec/conf/milcom/ZhouQX19}
623
+ }
624
+
625
+ @article{zhou2021decentralized,
626
+ title = {Decentralized Optimal Tracking Control for Large-scale Multi-Agent Systems under Complex Environment: A Constrained Mean Field Game with Reinforcement Learning Approach},
627
+ author = {Zejian Zhou and Hao Xu},
628
+ journal={Conference on Control Technology and Applications},
629
+ year = {2021},
630
+ url = {dblp.org/rec/conf/ccta/ZhouX21a}
631
+ }
632
+
633
+ @article{blum2006machine,
634
+ title = {Machine Learning , Game Theory , and Mechanism Design for a Networked World},
635
+ author = {A. Blum},
636
+ journal={arXiv preprint},
637
+ year = {2006},
638
+ url = {}
639
+ }
640
+
641
+ @article{goktas2022an,
642
+ title = {An Algorithmic Theory of Markets and Their Application to Decentralized Markets},
643
+ author = {Denizalp Goktas},
644
+ journal={AAAI Conference on Artificial Intelligence},
645
+ year = {2022},
646
+ url = {dblp.org/rec/conf/aaai/Goktas22}
647
+ }
648
+
649
+ @article{celli2021decentralized,
650
+ title = {Decentralized No-regret Learning Algorithms for Extensive-form Correlated Equilibria (Extended Abstract)},
651
+ author = {A. Celli and A. Marchesi and Gabriele Farina and N. Gatti},
652
+ journal={International Joint Conference on Artificial Intelligence},
653
+ year = {2021},
654
+ url = {dblp.org/rec/conf/ijcai/CelliMF021}
655
+ }
656
+
657
+ @article{kim2018a,
658
+ title = {A better-performing Q-learning game-theoretic distributed routing for underwater wireless sensor networks},
659
+ author = {Sungwook Kim},
660
+ journal={Int. J. Distributed Sens. Networks},
661
+ year = {2018},
662
+ url = {dblp.org/rec/journals/ijdsn/Kim18}
663
+ }
664
+
665
+ @article{zhu2020deep,
666
+ title = {Deep‐learning artificial intelligence analysis of clinical variables predicts mortality in COVID‐19 patients},
667
+ author = {Jocelyn Zhu and Peilin Ge and Chun-guo Jiang and Yong Zhang and Xiaoran Li and Zirun Zhao and Liming Zhang and T. Duong},
668
+ journal={Journal of the American College of Emergency Physicians Open},
669
+ year = {2020},
670
+ url = {}
671
+ }
672
+
673
+ @article{hiraiwa2019a,
674
+ title = {A deep-learning artificial intelligence system for assessment of root morphology of the mandibular first molar on panoramic radiography.},
675
+ author = {T. Hiraiwa and Y. Ariji and M. Fukuda and Yoshitaka Kise and K. Nakata and A. Katsumata and H. Fujita and E. Ariji},
676
+ journal={Dento maxillo facial radiology},
677
+ year = {2019},
678
+ url = {}
679
+ }
680
+
681
+ @article{lemley2017deep,
682
+ title = {Deep Learning for Consumer Devices and Services: Pushing the limits for machine learning, artificial intelligence, and computer vision.},
683
+ author = {Joseph Lemley and S. Bazrafkan and P. Corcoran},
684
+ journal={IEEE Consumer Electronics Magazine},
685
+ year = {2017},
686
+ url = {dblp.org/rec/journals/cem/LemleyBC17}
687
+ }
688
+
689
+ @article{joonmyun2020application,
690
+ title = {Application Trends of Deep Learning Artificial Intelligence in Autonomous Things},
691
+ author = {Cho Joonmyun},
692
+ journal={arXiv preprint},
693
+ year = {2020},
694
+ url = {}
695
+ }
696
+
697
+ @article{xie2022intelligent,
698
+ title = {INTELLIGENT ACQUISITION METHOD OF HERBACEOUS FLOWERS IMAGE BASED ON THEME CRAWLER, DEEP LEARNING AND GAME THEORY},
699
+ author = {Zhouyi Xie and Yanrong Hu and Weijun Hu},
700
+ journal={Chronos},
701
+ year = {2022},
702
+ url = {}
703
+ }
704
+
705
+ @article{anishfathima2022secure,
706
+ title = {Secure Wireless Sensor Network Energy Optimization Model with Game Theory and Deep Learning Algorithm},
707
+ author = {B. Anishfathima and M. Mahaboob and S.Gokul Kumar and A. Jabakumar},
708
+ journal={2022 8th International Conference on Advanced Computing and Communication Systems (ICACCS)},
709
+ year = {2022},
710
+ url = {}
711
+ }
712
+
713
+ @article{ardekani2022combining,
714
+ title = {Combining Deep Learning and Game Theory for Path Planning in Autonomous Racing Cars},
715
+ author = {Amirhossein Afkhami Ardekani and Amirhosein Chahe and M. R. Hairi Yazdi},
716
+ journal={International Conference on Robotics and Mechatronics},
717
+ year = {2022},
718
+ url = {}
719
+ }
720
+
721
+ @article{cunningham2023a,
722
+ title = {A Deep Learning Game Theoretic Model for Defending Against Large Scale Smart Grid Attacks},
723
+ author = {James Cunningham and Alexander J. Aved and David Ferris and Philip Morrone and Conrad S. Tucker},
724
+ journal={IEEE Transactions on Smart Grid},
725
+ year = {2023},
726
+ url = {dblp.org/rec/journals/tsg/CunninghamAFMT23}
727
+ }
728
+
729
+ @article{jia2021lane,
730
+ title = {Lane-Changing Behavior Prediction Based on Game Theory and Deep Learning},
731
+ author = {Shuo Jia and F. Hui and Cheng Wei and Xiangmo Zhao and Jianbei Liu},
732
+ journal={Journal of Advanced Transportation},
733
+ year = {2021},
734
+ url = {}
735
+ }
736
+
737
+ @article{sahin2022artificial,
738
+ title = {Artificial Intelligence, Game Theory, Programming Used Languages and Platforms, Game Types and Training Methods},
739
+ author = {Fatih Sahin},
740
+ journal={2022 International Conference on Artificial Intelligence of Things (ICAIoT)},
741
+ year = {2022},
742
+ url = {}
743
+ }
744
+
745
+ @article{hanley2021games,
746
+ title = {GAMES, game theory and artificial intelligence Game theory and artificial intelligence},
747
+ author = {J. Hanley},
748
+ journal={arXiv preprint},
749
+ year = {2021},
750
+ url = {}
751
+ }
752
+
753
+ @article{wang2022deepholdem,
754
+ title = {DeepHoldem: An Efficient End-to-End Texas Hold'em Artificial Intelligence Fusion of Algorithmic Game Theory and Game Information},
755
+ author = {Ke Wang and Dongdong Bai and Qibin Zhou},
756
+ journal={International Conference on Innovative Computing and Cloud Computing},
757
+ year = {2022},
758
+ url = {}
759
+ }
760
+
761
+ @article{shen2021interactive,
762
+ title = {Interactive Artificial Intelligence Meets Game Theory in Next-Generation Communication Networks},
763
+ author = {Jingyu Shen and Chungang Yang and Tong Li and Xinwei Wang and Yanbo Song and M. Guizani},
764
+ journal={IEEE wireless communications},
765
+ year = {2021},
766
+ url = {dblp.org/rec/journals/wc/ShenYLWSG21}
767
+ }
768
+
769
+ @article{bai2021smart,
770
+ title = {Smart financial policy adjustment system based on multiple game theory and artificial intelligence},
771
+ author = {Yunru Bai and Guang Zhang and San Sun},
772
+ journal={2021 5th International Conference on Trends in Electronics and Informatics (ICOEI)},
773
+ year = {2021},
774
+ url = {}
775
+ }
776
+
777
+ @article{dowe2020game,
778
+ title = {Game theory and Artificial Intelligence in just preservation},
779
+ author = {D. Dowe and N. Chmait},
780
+ journal={arXiv preprint},
781
+ year = {2020},
782
+ url = {}
783
+ }
784
+
outputs/outputs_20230608_115759/related works.tex ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ \section{Related Works}
2
+
3
+ \paragraph{Deep Reinforcement Learning for Atari Games}
4
+ The seminal work by \citet{mnih2013playing} introduced the first deep learning model to successfully learn control policies directly from high-dimensional sensory input using reinforcement learning. This model outperformed all previous approaches on six of the games and surpassed a human expert on three of them. The authors later extended their work with asynchronous gradient descent for optimization of deep neural network controllers, showing success on a wide variety of continuous motor control problems and a new task of navigating random 3D mazes using a visual input \citep{mnih2016asynchronous}. However, these approaches suffer from overestimations in value function approximations, which were addressed by \citet{hasselt2015deep} through a specific adaptation to the DQN algorithm, leading to much better performance on several games.
5
+
6
+ \paragraph{Decentralized Reinforcement Learning}
7
+ Decentralized reinforcement learning has been studied in various contexts. \citet{lu2021decentralized} proposed a decentralized policy gradient (PG) method, Safe Dec-PG, to perform policy optimization based on the D-CMDP model over a network. This was the first decentralized PG algorithm that accounted for coupled safety constraints with a quantifiable convergence rate in multi-agent reinforcement learning. \citet{lei2022adaptive} introduced an adaptive stochastic incremental ADMM (asI-ADMM) algorithm for decentralized RL with edge-computing-empowered IoT networks, showing better performance in terms of communication costs and scalability compared to the state of the art. However, the work by \citet{lyu2021contrasting} highlighted misconceptions regarding centralized critics in the literature, emphasizing that both centralized and decentralized critics have different pros and cons that should be considered by algorithm designers.
8
+
9
+ \paragraph{Game Theory and Multi-Agent Reinforcement Learning}
10
+ Game theory has been widely used in combination with reinforcement learning to tackle multi-agent problems. \citet{yin2022air} proposed an algorithm based on deep reinforcement learning and game theory to solve Nash equilibrium strategy in highly competitive environments, demonstrating good convergence through simulation tests. \citet{adams2020resolving} addressed the challenges of implicit coordination in multi-agent deep reinforcement learning by combining Deep-Q Networks for policy learning with Nash equilibrium for action selection. In the context of autonomous driving, \citet{duan2022autonomous} proposed an automatic drive model based on game theory and reinforcement learning, enabling multi-agent cooperative driving with strategic reasoning and negotiation in traffic scenarios. However, these approaches often require complex computations and may not scale well to large-scale problems.
11
+
12
+ \paragraph{Decentralized Learning with Communication Constraints}
13
+ One of the challenges in decentralized learning is to handle communication constraints. \citet{kong2021consensus} showed that decentralized training converges as fast as the centralized counterpart when the training consensus distance is lower than a critical quantity, providing insights for designing better decentralized training schemes. \citet{fu2022automatic} proposed a decentralized ensemble learning framework for automatic modulation classification, reducing communication overhead while maintaining similar classification performance. In the context of multi-agent systems, \citet{su2022ma2ql} introduced MA2QL, a minimalist approach to fully decentralized cooperative MARL with theoretical guarantees on convergence to a Nash equilibrium when each agent achieves $\varepsilon$-convergence at each turn. However, these methods may still suffer from limitations in highly dynamic and complex environments.
14
+
15
+ \paragraph{Decentralized Collision Avoidance}
16
+ Decentralized collision avoidance has been an important application of reinforcement learning. \citet{thumiger2022a} proposed an improved deep reinforcement learning controller for decentralized collision avoidance using a unique architecture incorporating long-short term memory cells and a reward function inspired by gradient-based approaches. This controller outperformed existing techniques in environments with variable numbers of agents. In the context of autonomous vehicles, \citet{ardekani2022combining} suggested a novel algorithm based on Nash equilibrium and memory neural networks for path selection in highly dynamic and complex environments, showing that the obtained response matched with Nash equilibrium in 90.2 percent of the situations during simulation experiments. However, these approaches may require extensive training and computational resources, which could be a concern in real-world applications.
outputs/outputs_20230608_115759/template.tex ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ \documentclass{article} % For LaTeX2e
2
+ \UseRawInputEncoding
3
+ \usepackage{graphicx}
4
+ \usepackage{booktabs}
5
+ \usepackage{iclr2022_conference, times}
6
+ \input{math_commands.tex}
7
+ \usepackage{hyperref}
8
+ \usepackage{url}
9
+ \usepackage{algorithm}
10
+ \usepackage{algpseudocode}
11
+
12
+ \title{TITLE}
13
+ \author{GPT-4}
14
+
15
+ \newcommand{\fix}{\marginpar{FIX}}
16
+ \newcommand{\new}{\marginpar{NEW}}
17
+
18
+ \begin{document}
19
+ \maketitle
20
+ \input{abstract.tex}
21
+ \input{introduction.tex}
22
+ \input{related works.tex}
23
+ \input{backgrounds.tex}
24
+ \input{methodology.tex}
25
+ \input{experiments.tex}
26
+ \input{conclusion.tex}
27
+
28
+ \bibliography{ref}
29
+ \bibliographystyle{iclr2022_conference}
30
+
31
+ %\appendix
32
+ %\section{Appendix}
33
+ %You may include other additional sections here.
34
+
35
+ \end{document}
prompts/instructions.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"introduction": "- Include five paragraph: Establishing the motivation for the research. Explaining its importance and relevance to the AI community. Clearly state the problem you're addressing, your proposed solution, and the specific research questions or objectives. Briefly mention key related works for context and explain the main differences from this work. List three novel contributions of this paper.", "results": "Write the theoretical results section using LaTeX. Include theorem and corollary to support this paper (with formulas). Explain what assumptions are used and why they are standard and necessary. Do not include \\section{...}. ", "conclusion": "- Read the existing parts of paper and write the conclusion section.", "abstract": "- Read the existing parts of paper and write the abstract.", "backgrounds": "- Start from one high-level paragraph to state the central problem in this field with detailed examples in industrial applications and theoretical challenges. \n- Followed by two to three subsections: Explain the foundational concepts and notations that underpin your research using as many as mathematical formulas (written in LaTeX). Introduce more necessary mathematical notations, equations, or algorithms that are connected to this work. Present detailed discussions on how these concepts are applied in this paper.", "related works": "- Discuss three to five main related fields to this paper. For each field, select five to ten key publications from references. For each reference, analyze its strengths and weaknesses in one or two sentences. Present the related works in a logical manner, often chronologically. Consider using a taxonomy or categorization to structure the discussion. Do not use \\section{...} or \\subsection{...}; use \\paragraph{...} to list related fields. ", "methodology": "- Provide a high-level overview of the proposed method at the beginning of this section. \n - Assume you have some figures ('fig1.png', 'fig2.png', ...); they can be any figures you need (e.g. flow chart, model architecture, sample output, simulation result, or others you need). Insert figures you need with informative caption. \n- Use one subsection to give a detailed formulation of the proposed method and explain how it overcomes the weakness of existing methods mentioned in this paper. If necessary, write pseudo codes wrapped by \\begin{{algorithm}} ... \\end{{algorithm}} to explain the detailed steps instead of simply listing them. \n- Use one follow-up subsection to highlight the key concepts in the proposed method. Elaborate the novelty of these key concepts using formulas and inserting appropriate figures. \n- Ensure the name of each subsection to be specific. \n", "experiments": "- Provide a high-level overview at the beginning of this section.\n - If necessary, include a table to compare with other methods and bold our method.\n- Assume you have some figures ('exp1.png', 'exp2.png', ...); they can be any figures you need (e.g. loss curves, comparison with other methods, visualization, or others you need). Insert figures you need with informative caption. \n- If necessary, use different subsections to distinguish different experimental setup."}
requirements.txt CHANGED
Binary files a/requirements.txt and b/requirements.txt differ
 
utils/prompts.py CHANGED
@@ -1,34 +1,11 @@
1
  import logging
2
  from langchain import PromptTemplate
 
3
 
4
 
5
  log = logging.getLogger(__name__)
6
 
7
  # todo: load prompts from configurations
8
-
9
- ######################################################################################################################
10
- # Some basic functions
11
- ######################################################################################################################
12
- # def generate_keywords_prompts(title, description="", num_refs=5):
13
- # prompts = f"I am writing a machine learning paper with the title '{title}'. {description}\n" \
14
- # f"Generate three to five keywords. For each keyword, rate it from 1 to {num_refs}; the larger number means more important." \
15
- # r"Your response must be in JSON format like {\"keyword1\":1, \"keyword2\":3}."
16
- # return prompts
17
- #
18
- # def generate_rename_prompts(paper_info, section):
19
- # prompts = f"Please read the {section} section of the paper {paper_info['title']}: {paper_info['body'][section]}. \n" \
20
- # f"You need to rename this section to make it more specific to the context. " \
21
- # r"Response in a dictionary format like {\"option_1\": \"new_section_name_1\", \"option_2\": \"new_section_name_2\", ...}."
22
- # return prompts
23
- #
24
- # def generate_experiments_prompts(paper_info):
25
- # prompts = f"I am writing a machine learning paper with the title {paper_info['title']}\n" \
26
- # f"Please list two to four methods that I should compare my methods with and assign them with scores (5 means most related, 1 means least related). " \
27
- # r"Response in a dictionary format like {\"method_name_1\": 2, \"method_name_2\": 5, ...}. Use abbreviation to make their names have 5 characters or less."
28
- # return prompts
29
-
30
-
31
-
32
  ######################################################################################################################
33
  # System Message
34
  ######################################################################################################################
@@ -65,47 +42,53 @@ SECTION_GENERATION_SYSTEM = PromptTemplate(input_variables=["research_field"],
65
 
66
 
67
  ######################################################################################################################
68
- # Academic Paper
69
  ######################################################################################################################
70
 
 
 
 
 
 
 
71
  # When generating Academic Paper. Load instructions.
72
  # with open("../prompts/instructions.json", "r") as f:
73
  # INSTRUCTIONS = json.load(f)
74
  #
75
- INSTRUCTIONS = {"introduction":
76
- "- Include five paragraph: Establishing the motivation for the research. Explaining its importance and relevance to the AI community. Clearly state the problem you're addressing, your proposed solution, and the specific research questions or objectives. Briefly mention key related works for context and explain the main differences from this work. List three novel contributions of this paper.",
77
- "results":
78
- "Write the theoretical results section using LaTeX. Include theorem and corollary to support this paper (with formulas). Explain what assumptions are used and why they are standard and necessary. Do not include \section{...}. ",
79
- "conclusion":
80
- "- Read the existing parts of paper and write the conclusion section.",
81
- "abstract":
82
- "- Read the existing parts of paper and write the abstract."}
83
-
84
-
85
- INSTRUCTIONS["backgrounds"] = "- Start from one high-level paragraph to state the central problem in this field with detailed examples in industrial applications and theoretical challenges. \n" \
86
- "- Followed by two to three subsections: Explain the foundational concepts and notations that underpin your research using as many as mathematical formulas (written in LaTeX). " \
87
- "Introduce more necessary mathematical notations, equations, or algorithms that are connected to this work. Present detailed discussions on how these concepts are applied in this paper."
88
-
89
-
90
- INSTRUCTIONS["related works"] = r"- Discuss three to five main related fields to this paper. " \
91
- r"For each field, select five to ten key publications from references. " \
92
- r"For each reference, analyze its strengths and weaknesses in one or two sentences. " \
93
- r"Present the related works in a logical manner, often chronologically. " \
94
- r"Consider using a taxonomy or categorization to structure the discussion. " \
95
- r"Do not use \section{...} or \subsection{...}; use \paragraph{...} to list related fields. "
96
-
97
- INSTRUCTIONS["methodology"] = "- Provide a high-level overview of the proposed method at the beginning of this section. \n " \
98
- "- Assume you have some figures ('fig1.png', 'fig2.png', ...); they can be any figures you need (e.g. flow chart, model architecture, sample output, simulation result, or others you need). Insert figures you need with informative caption. \n" \
99
- "- Use one subsection to give a detailed formulation of the proposed method and explain how it overcomes the weakness of existing methods mentioned in this paper. " \
100
- " If necessary, write pseudo codes wrapped by \\begin{{algorithm}} ... \\end{{algorithm}} to explain the detailed steps instead of simply listing them. \n" \
101
- "- Use one follow-up subsection to highlight the key concepts in the proposed method. " \
102
- " Elaborate the novelty of these key concepts using formulas and inserting appropriate figures. \n" \
103
- "- Ensure the name of each subsection to be specific. \n"
104
-
105
- INSTRUCTIONS["experiments"] = "- Provide a high-level overview at the beginning of this section.\n " \
106
- "- If necessary, include a table to compare with other methods and bold our method.\n" \
107
- "- Assume you have some figures ('exp1.png', 'exp2.png', ...); they can be any figures you need (e.g. loss curves, comparison with other methods, visualization, or others you need). Insert figures you need with informative caption. \n" \
108
- "- If necessary, use different subsections to distinguish different experimental setup."
109
 
110
 
111
  def generate_paper_prompts(paper_info, section):
@@ -220,9 +203,9 @@ def generate_bg_summary_prompts(paper_info, section):
220
  return prompts
221
 
222
  if __name__ == "__main__":
223
- # import json
224
- # with open("../prompts/instructions.json", "w") as f:
225
- # json.dump(INSTRUCTIONS, f)
226
  import json
227
  with open("../prompts/instructions.json", "r") as f:
228
  ins = json.load(f)
 
1
  import logging
2
  from langchain import PromptTemplate
3
+ import os, json
4
 
5
 
6
  log = logging.getLogger(__name__)
7
 
8
  # todo: load prompts from configurations
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  ######################################################################################################################
10
  # System Message
11
  ######################################################################################################################
 
42
 
43
 
44
  ######################################################################################################################
45
+ # Prompts for Generating Academic Paper
46
  ######################################################################################################################
47
 
48
+ cur_path = os.path.dirname(__file__)
49
+ prompts_path = os.path.join(cur_path, '..\\prompts\\instructions.json')
50
+ print(prompts_path)
51
+ with open(prompts_path, "r") as f:
52
+ INSTRUCTIONS = json.load(f)
53
+ # f = open(file_path)
54
  # When generating Academic Paper. Load instructions.
55
  # with open("../prompts/instructions.json", "r") as f:
56
  # INSTRUCTIONS = json.load(f)
57
  #
58
+ # INSTRUCTIONS = {"introduction":
59
+ # "- Include five paragraph: Establishing the motivation for the research. Explaining its importance and relevance to the AI community. Clearly state the problem you're addressing, your proposed solution, and the specific research questions or objectives. Briefly mention key related works for context and explain the main differences from this work. List three novel contributions of this paper.",
60
+ # "results":
61
+ # "Write the theoretical results section using LaTeX. Include theorem and corollary to support this paper (with formulas). Explain what assumptions are used and why they are standard and necessary. Do not include \section{...}. ",
62
+ # "conclusion":
63
+ # "- Read the existing parts of paper and write the conclusion section.",
64
+ # "abstract":
65
+ # "- Read the existing parts of paper and write the abstract."}
66
+ #
67
+ #
68
+ # INSTRUCTIONS["backgrounds"] = "- Start from one high-level paragraph to state the central problem in this field with detailed examples in industrial applications and theoretical challenges. \n" \
69
+ # "- Followed by two to three subsections: Explain the foundational concepts and notations that underpin your research using as many as mathematical formulas (written in LaTeX). " \
70
+ # "Introduce more necessary mathematical notations, equations, or algorithms that are connected to this work. Present detailed discussions on how these concepts are applied in this paper."
71
+ #
72
+ #
73
+ # INSTRUCTIONS["related works"] = r"- Discuss three to five main related fields to this paper. " \
74
+ # r"For each field, select five to ten key publications from references. " \
75
+ # r"For each reference, analyze its strengths and weaknesses in one or two sentences. " \
76
+ # r"Present the related works in a logical manner, often chronologically. " \
77
+ # r"Consider using a taxonomy or categorization to structure the discussion. " \
78
+ # r"Do not use \section{...} or \subsection{...}; use \paragraph{...} to list related fields. "
79
+ #
80
+ # INSTRUCTIONS["methodology"] = "- Provide a high-level overview of the proposed method at the beginning of this section. \n " \
81
+ # "- Assume you have some figures ('fig1.png', 'fig2.png', ...); they can be any figures you need (e.g. flow chart, model architecture, sample output, simulation result, or others you need). Insert figures you need with informative caption. \n" \
82
+ # "- Use one subsection to give a detailed formulation of the proposed method and explain how it overcomes the weakness of existing methods mentioned in this paper. " \
83
+ # " If necessary, write pseudo codes wrapped by \\begin{{algorithm}} ... \\end{{algorithm}} to explain the detailed steps instead of simply listing them. \n" \
84
+ # "- Use one follow-up subsection to highlight the key concepts in the proposed method. " \
85
+ # " Elaborate the novelty of these key concepts using formulas and inserting appropriate figures. \n" \
86
+ # "- Ensure the name of each subsection to be specific. \n"
87
+ #
88
+ # INSTRUCTIONS["experiments"] = "- Provide a high-level overview at the beginning of this section.\n " \
89
+ # "- If necessary, include a table to compare with other methods and bold our method.\n" \
90
+ # "- Assume you have some figures ('exp1.png', 'exp2.png', ...); they can be any figures you need (e.g. loss curves, comparison with other methods, visualization, or others you need). Insert figures you need with informative caption. \n" \
91
+ # "- If necessary, use different subsections to distinguish different experimental setup."
92
 
93
 
94
  def generate_paper_prompts(paper_info, section):
 
203
  return prompts
204
 
205
  if __name__ == "__main__":
206
+ import json
207
+ with open("../prompts/instructions.json", "w") as f:
208
+ json.dump(INSTRUCTIONS, f)
209
  import json
210
  with open("../prompts/instructions.json", "r") as f:
211
  ins = json.load(f)