feat: 添加模型评估脚本并更新实验报告
- 添加 evaluate_checkpoints.py 脚本,用于评估训练过程中的检查点模型 - 更新 generate_plots.py 以支持从真实评估结果生成图表 - 更新实验报告内容,包含具体实验结果数据和分析 - 添加中文支持并更新作者信息 - 生成评估结果JSON文件和相应图表
@@ -0,0 +1,107 @@
|
||||
"""评估所有检查点并生成评估曲线数据"""
|
||||
import sys
|
||||
import os
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
import torch
|
||||
import numpy as np
|
||||
import json
|
||||
|
||||
from src.network import QNetwork
|
||||
from src.utils import make_env, get_device
|
||||
|
||||
|
||||
def evaluate_model(model_path, env, device, num_actions, num_episodes=10):
|
||||
"""评估单个模型"""
|
||||
state_shape = (4, 84, 84)
|
||||
q_network = QNetwork(state_shape, num_actions).to(device)
|
||||
|
||||
checkpoint = torch.load(model_path, map_location=device, weights_only=False)
|
||||
q_network.load_state_dict(checkpoint['q_network'])
|
||||
q_network.eval()
|
||||
|
||||
rewards = []
|
||||
for _ in range(num_episodes):
|
||||
state, _ = env.reset()
|
||||
episode_reward = 0
|
||||
done = False
|
||||
|
||||
while not done:
|
||||
with torch.no_grad():
|
||||
state_tensor = torch.from_numpy(state).float().unsqueeze(0).to(device)
|
||||
q_values = q_network(state_tensor)
|
||||
action = q_values.argmax(dim=1).item()
|
||||
|
||||
state, reward, terminated, truncated, _ = env.step(action)
|
||||
done = terminated or truncated
|
||||
episode_reward += reward
|
||||
|
||||
rewards.append(episode_reward)
|
||||
|
||||
return np.mean(rewards), np.std(rewards)
|
||||
|
||||
|
||||
def main():
|
||||
# 获取设备
|
||||
device = get_device()
|
||||
|
||||
# 创建环境
|
||||
env = make_env("ALE/SpaceInvaders-v5", gray_scale=True, resize=True, frame_stack=4)
|
||||
num_actions = env.action_space.n
|
||||
|
||||
# 检查点列表
|
||||
checkpoints = [
|
||||
("models/dqn_step_100000.pt", 100000),
|
||||
("models/dqn_step_200000.pt", 200000),
|
||||
("models/dqn_step_400000.pt", 400000),
|
||||
("models/dqn_step_600000.pt", 600000),
|
||||
("models/dqn_step_800000.pt", 800000),
|
||||
("models/dqn_step_1000000.pt", 1000000),
|
||||
("models/dqn_step_1200000.pt", 1200000),
|
||||
("models/dqn_step_1400000.pt", 1400000),
|
||||
("models/dqn_step_1600000.pt", 1600000),
|
||||
("models/dqn_step_1800000.pt", 1800000),
|
||||
("models/dqn_step_2000000.pt", 2000000),
|
||||
("models/dqn_best.pt", -1), # 最佳模型
|
||||
("models/dqn_final.pt", -2), # 最终模型
|
||||
]
|
||||
|
||||
results = []
|
||||
|
||||
for model_path, step in checkpoints:
|
||||
if not os.path.exists(model_path):
|
||||
print(f"跳过 {model_path}(不存在)")
|
||||
continue
|
||||
|
||||
print(f"\n评估 {model_path}...")
|
||||
avg_reward, std_reward = evaluate_model(
|
||||
model_path, env, device, num_actions, num_episodes=10
|
||||
)
|
||||
|
||||
results.append({
|
||||
"model": model_path,
|
||||
"step": step,
|
||||
"avg_reward": float(avg_reward),
|
||||
"std_reward": float(std_reward)
|
||||
})
|
||||
|
||||
print(f" 平均回报: {avg_reward:.2f} ± {std_reward:.2f}")
|
||||
|
||||
# 保存结果
|
||||
output_file = "evaluation_results.json"
|
||||
with open(output_file, "w", encoding="utf-8") as f:
|
||||
json.dump(results, f, indent=2, ensure_ascii=False)
|
||||
|
||||
print(f"\n结果已保存到 {output_file}")
|
||||
|
||||
# 打印汇总
|
||||
print("\n" + "=" * 60)
|
||||
print("评估汇总:")
|
||||
print("=" * 60)
|
||||
for r in results:
|
||||
step_str = f"Step {r['step']:>10,}" if r['step'] > 0 else f"{'Best' if r['step'] == -1 else 'Final':>15}"
|
||||
print(f"{step_str}: 平均回报 = {r['avg_reward']:.2f} ± {r['std_reward']:.2f}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,80 @@
|
||||
[
|
||||
{
|
||||
"model": "models/dqn_step_100000.pt",
|
||||
"step": 100000,
|
||||
"avg_reward": 17.8,
|
||||
"std_reward": 5.2306787322488075
|
||||
},
|
||||
{
|
||||
"model": "models/dqn_step_200000.pt",
|
||||
"step": 200000,
|
||||
"avg_reward": 14.0,
|
||||
"std_reward": 6.603029607687671
|
||||
},
|
||||
{
|
||||
"model": "models/dqn_step_400000.pt",
|
||||
"step": 400000,
|
||||
"avg_reward": 16.4,
|
||||
"std_reward": 4.24735211631906
|
||||
},
|
||||
{
|
||||
"model": "models/dqn_step_600000.pt",
|
||||
"step": 600000,
|
||||
"avg_reward": 19.0,
|
||||
"std_reward": 4.123105625617661
|
||||
},
|
||||
{
|
||||
"model": "models/dqn_step_800000.pt",
|
||||
"step": 800000,
|
||||
"avg_reward": 13.2,
|
||||
"std_reward": 3.944616584663204
|
||||
},
|
||||
{
|
||||
"model": "models/dqn_step_1000000.pt",
|
||||
"step": 1000000,
|
||||
"avg_reward": 15.7,
|
||||
"std_reward": 4.960846701924985
|
||||
},
|
||||
{
|
||||
"model": "models/dqn_step_1200000.pt",
|
||||
"step": 1200000,
|
||||
"avg_reward": 18.4,
|
||||
"std_reward": 6.216108107168021
|
||||
},
|
||||
{
|
||||
"model": "models/dqn_step_1400000.pt",
|
||||
"step": 1400000,
|
||||
"avg_reward": 14.2,
|
||||
"std_reward": 4.467661580737736
|
||||
},
|
||||
{
|
||||
"model": "models/dqn_step_1600000.pt",
|
||||
"step": 1600000,
|
||||
"avg_reward": 17.8,
|
||||
"std_reward": 4.686149805543993
|
||||
},
|
||||
{
|
||||
"model": "models/dqn_step_1800000.pt",
|
||||
"step": 1800000,
|
||||
"avg_reward": 21.5,
|
||||
"std_reward": 4.984977432245807
|
||||
},
|
||||
{
|
||||
"model": "models/dqn_step_2000000.pt",
|
||||
"step": 2000000,
|
||||
"avg_reward": 14.6,
|
||||
"std_reward": 5.276362383309167
|
||||
},
|
||||
{
|
||||
"model": "models/dqn_best.pt",
|
||||
"step": -1,
|
||||
"avg_reward": 19.9,
|
||||
"std_reward": 6.920260110718383
|
||||
},
|
||||
{
|
||||
"model": "models/dqn_final.pt",
|
||||
"step": -2,
|
||||
"avg_reward": 11.3,
|
||||
"std_reward": 3.3778691508109073
|
||||
}
|
||||
]
|
||||
@@ -8,13 +8,13 @@ from collections import defaultdict
|
||||
|
||||
|
||||
def load_training_logs(log_file):
|
||||
"""加载训练日志
|
||||
"""Load training logs
|
||||
|
||||
Args:
|
||||
log_file: 日志文件路径
|
||||
log_file: Log file path
|
||||
|
||||
Returns:
|
||||
logs: 训练日志字典
|
||||
logs: Training logs dict
|
||||
"""
|
||||
logs = defaultdict(list)
|
||||
|
||||
@@ -28,14 +28,14 @@ def load_training_logs(log_file):
|
||||
|
||||
|
||||
def smooth_data(data, window=100):
|
||||
"""平滑数据
|
||||
"""Smooth data
|
||||
|
||||
Args:
|
||||
data: 原始数据
|
||||
window: 平滑窗口大小
|
||||
data: Raw data
|
||||
window: Smoothing window size
|
||||
|
||||
Returns:
|
||||
smoothed: 平滑后的数据
|
||||
smoothed: Smoothed data
|
||||
"""
|
||||
if len(data) < window:
|
||||
return data
|
||||
@@ -49,13 +49,13 @@ def smooth_data(data, window=100):
|
||||
|
||||
|
||||
def plot_training_curves(rewards, losses, q_values, save_dir="plots"):
|
||||
"""绘制训练曲线
|
||||
"""Plot training curves
|
||||
|
||||
Args:
|
||||
rewards: 回报列表
|
||||
losses: 损失列表
|
||||
q_values: Q值列表
|
||||
save_dir: 保存目录
|
||||
rewards: Reward list
|
||||
losses: Loss list
|
||||
q_values: Q-value list
|
||||
save_dir: Save directory
|
||||
"""
|
||||
os.makedirs(save_dir, exist_ok=True)
|
||||
|
||||
@@ -66,18 +66,18 @@ def plot_training_curves(rewards, losses, q_values, save_dir="plots"):
|
||||
ax1 = axes[0, 0]
|
||||
if len(rewards) > 0:
|
||||
episodes = range(1, len(rewards) + 1)
|
||||
ax1.plot(episodes, rewards, alpha=0.3, color="blue", label="原始数据")
|
||||
ax1.plot(episodes, rewards, alpha=0.3, color="blue", label="Raw Data")
|
||||
smoothed_rewards = smooth_data(rewards, window=100)
|
||||
ax1.plot(
|
||||
episodes,
|
||||
smoothed_rewards,
|
||||
color="red",
|
||||
linewidth=2,
|
||||
label="平滑曲线 (window=100)",
|
||||
label="Smoothed (window=100)",
|
||||
)
|
||||
ax1.set_xlabel("Episode", fontsize=12)
|
||||
ax1.set_ylabel("回报", fontsize=12)
|
||||
ax1.set_title("训练回报曲线", fontsize=14)
|
||||
ax1.set_ylabel("Reward", fontsize=12)
|
||||
ax1.set_title("Training Reward Curve", fontsize=14)
|
||||
ax1.legend(fontsize=10)
|
||||
ax1.grid(True, alpha=0.3)
|
||||
|
||||
@@ -85,12 +85,12 @@ def plot_training_curves(rewards, losses, q_values, save_dir="plots"):
|
||||
ax2 = axes[0, 1]
|
||||
if len(losses) > 0:
|
||||
steps = range(1, len(losses) + 1)
|
||||
ax2.plot(steps, losses, alpha=0.3, color="green", label="原始数据")
|
||||
ax2.plot(steps, losses, alpha=0.3, color="green", label="Raw Data")
|
||||
smoothed_losses = smooth_data(losses, window=100)
|
||||
ax2.plot(steps, smoothed_losses, color="red", linewidth=2, label="平滑曲线")
|
||||
ax2.set_xlabel("训练步数", fontsize=12)
|
||||
ax2.set_ylabel("损失", fontsize=12)
|
||||
ax2.set_title("训练损失曲线", fontsize=14)
|
||||
ax2.plot(steps, smoothed_losses, color="red", linewidth=2, label="Smoothed")
|
||||
ax2.set_xlabel("Training Steps", fontsize=12)
|
||||
ax2.set_ylabel("Loss", fontsize=12)
|
||||
ax2.set_title("Training Loss Curve", fontsize=14)
|
||||
ax2.legend(fontsize=10)
|
||||
ax2.grid(True, alpha=0.3)
|
||||
|
||||
@@ -98,12 +98,12 @@ def plot_training_curves(rewards, losses, q_values, save_dir="plots"):
|
||||
ax3 = axes[1, 0]
|
||||
if len(q_values) > 0:
|
||||
steps = range(1, len(q_values) + 1)
|
||||
ax3.plot(steps, q_values, alpha=0.3, color="purple", label="原始数据")
|
||||
ax3.plot(steps, q_values, alpha=0.3, color="purple", label="Raw Data")
|
||||
smoothed_q = smooth_data(q_values, window=100)
|
||||
ax3.plot(steps, smoothed_q, color="red", linewidth=2, label="平滑曲线")
|
||||
ax3.set_xlabel("训练步数", fontsize=12)
|
||||
ax3.set_ylabel("平均Q值", fontsize=12)
|
||||
ax3.set_title("平均Q值变化", fontsize=14)
|
||||
ax3.plot(steps, smoothed_q, color="red", linewidth=2, label="Smoothed")
|
||||
ax3.set_xlabel("Training Steps", fontsize=12)
|
||||
ax3.set_ylabel("Average Q Value", fontsize=12)
|
||||
ax3.set_title("Average Q Value", fontsize=14)
|
||||
ax3.legend(fontsize=10)
|
||||
ax3.grid(True, alpha=0.3)
|
||||
|
||||
@@ -116,18 +116,18 @@ def plot_training_curves(rewards, losses, q_values, save_dir="plots"):
|
||||
color="red",
|
||||
linestyle="--",
|
||||
linewidth=2,
|
||||
label=f"均值: {np.mean(rewards):.1f}",
|
||||
label=f"Mean: {np.mean(rewards):.1f}",
|
||||
)
|
||||
ax4.axvline(
|
||||
np.median(rewards),
|
||||
color="green",
|
||||
linestyle="--",
|
||||
linewidth=2,
|
||||
label=f"中位数: {np.median(rewards):.1f}",
|
||||
label=f"Median: {np.median(rewards):.1f}",
|
||||
)
|
||||
ax4.set_xlabel("回报", fontsize=12)
|
||||
ax4.set_ylabel("频次", fontsize=12)
|
||||
ax4.set_title("回报分布", fontsize=14)
|
||||
ax4.set_xlabel("Reward", fontsize=12)
|
||||
ax4.set_ylabel("Frequency", fontsize=12)
|
||||
ax4.set_title("Reward Distribution", fontsize=14)
|
||||
ax4.legend(fontsize=10)
|
||||
ax4.grid(True, alpha=0.3)
|
||||
|
||||
@@ -136,19 +136,19 @@ def plot_training_curves(rewards, losses, q_values, save_dir="plots"):
|
||||
# 保存图片
|
||||
save_path = os.path.join(save_dir, "training_curves.png")
|
||||
plt.savefig(save_path, dpi=300, bbox_inches="tight")
|
||||
print(f"训练曲线已保存到: {save_path}")
|
||||
print(f"Training curves saved: {save_path}")
|
||||
|
||||
plt.close()
|
||||
|
||||
|
||||
def plot_epsilon_decay(epsilon_start, epsilon_end, decay_steps, save_dir="plots"):
|
||||
"""绘制ε衰减曲线
|
||||
"""Plot epsilon decay curve
|
||||
|
||||
Args:
|
||||
epsilon_start: ε初始值
|
||||
epsilon_end: ε最终值
|
||||
decay_steps: 衰减步数
|
||||
save_dir: 保存目录
|
||||
epsilon_start: Initial epsilon value
|
||||
epsilon_end: Final epsilon value
|
||||
decay_steps: Decay steps
|
||||
save_dir: Save directory
|
||||
"""
|
||||
os.makedirs(save_dir, exist_ok=True)
|
||||
|
||||
@@ -157,40 +157,39 @@ def plot_epsilon_decay(epsilon_start, epsilon_end, decay_steps, save_dir="plots"
|
||||
|
||||
fig, ax = plt.subplots(figsize=(10, 6))
|
||||
ax.plot(steps / 1e6, epsilons, color="blue", linewidth=2)
|
||||
ax.set_xlabel("训练步数 (百万)", fontsize=12)
|
||||
ax.set_ylabel("Epsilon (ε)", fontsize=12)
|
||||
ax.set_title("Epsilon衰减曲线", fontsize=14)
|
||||
ax.set_xlabel("Training Steps (Million)", fontsize=12)
|
||||
ax.set_ylabel("Epsilon", fontsize=12)
|
||||
ax.set_title("Epsilon Decay Curve", fontsize=14)
|
||||
ax.grid(True, alpha=0.3)
|
||||
ax.set_ylim(0, 1.1)
|
||||
|
||||
# 标注关键点
|
||||
ax.axhline(y=epsilon_end, color="red", linestyle="--", alpha=0.5)
|
||||
ax.text(
|
||||
decay_steps * 0.8 / 1e6,
|
||||
epsilon_end + 0.05,
|
||||
f"最终值: {epsilon_end}",
|
||||
f"Final: {epsilon_end}",
|
||||
fontsize=10,
|
||||
color="red",
|
||||
)
|
||||
|
||||
save_path = os.path.join(save_dir, "epsilon_decay.png")
|
||||
plt.savefig(save_path, dpi=300, bbox_inches="tight")
|
||||
print(f"ε衰减曲线已保存到: {save_path}")
|
||||
print(f"Epsilon decay curve saved: {save_path}")
|
||||
|
||||
plt.close()
|
||||
|
||||
|
||||
def plot_evaluation_results(eval_rewards, save_dir="plots"):
|
||||
"""绘制评估结果
|
||||
"""Plot evaluation results
|
||||
|
||||
Args:
|
||||
eval_rewards: 评估回报列表 [(step, reward), ...]
|
||||
save_dir: 保存目录
|
||||
eval_rewards: Evaluation reward list [(step, reward), ...]
|
||||
save_dir: Save directory
|
||||
"""
|
||||
os.makedirs(save_dir, exist_ok=True)
|
||||
|
||||
if not eval_rewards:
|
||||
print("没有评估数据")
|
||||
print("No evaluation data")
|
||||
return
|
||||
|
||||
steps, rewards = zip(*eval_rewards)
|
||||
@@ -203,10 +202,9 @@ def plot_evaluation_results(eval_rewards, save_dir="plots"):
|
||||
color="blue",
|
||||
linewidth=2,
|
||||
markersize=8,
|
||||
label="评估回报",
|
||||
label="Eval Reward",
|
||||
)
|
||||
|
||||
# 添加趋势线
|
||||
if len(rewards) > 1:
|
||||
z = np.polyfit(steps, rewards, 1)
|
||||
p = np.poly1d(z)
|
||||
@@ -217,27 +215,27 @@ def plot_evaluation_results(eval_rewards, save_dir="plots"):
|
||||
color="red",
|
||||
linewidth=2,
|
||||
alpha=0.7,
|
||||
label="趋势线",
|
||||
label="Trend Line",
|
||||
)
|
||||
|
||||
ax.set_xlabel("训练步数 (百万)", fontsize=12)
|
||||
ax.set_ylabel("平均回报", fontsize=12)
|
||||
ax.set_title("评估回报变化", fontsize=14)
|
||||
ax.set_xlabel("Training Steps (Million)", fontsize=12)
|
||||
ax.set_ylabel("Average Reward", fontsize=12)
|
||||
ax.set_title("Evaluation Reward", fontsize=14)
|
||||
ax.legend(fontsize=10)
|
||||
ax.grid(True, alpha=0.3)
|
||||
|
||||
save_path = os.path.join(save_dir, "evaluation_results.png")
|
||||
plt.savefig(save_path, dpi=300, bbox_inches="tight")
|
||||
print(f"评估结果已保存到: {save_path}")
|
||||
print(f"Evaluation results saved: {save_path}")
|
||||
|
||||
plt.close()
|
||||
|
||||
|
||||
def generate_sample_plots(save_dir="plots"):
|
||||
"""生成示例图表(用于报告)
|
||||
"""Generate sample plots for report
|
||||
|
||||
Args:
|
||||
save_dir: 保存目录
|
||||
save_dir: Save directory
|
||||
"""
|
||||
os.makedirs(save_dir, exist_ok=True)
|
||||
|
||||
@@ -270,21 +268,119 @@ def generate_sample_plots(save_dir="plots"):
|
||||
eval_rewards = [50, 100, 150, 180, 190, 195]
|
||||
plot_evaluation_results(list(zip(eval_steps, eval_rewards)), save_dir)
|
||||
|
||||
print(f"\n示例图表已生成到: {save_dir}/")
|
||||
print(f"\nSample plots generated: {save_dir}/")
|
||||
|
||||
|
||||
def generate_real_plots(eval_results_file="evaluation_results.json", save_dir="plots"):
|
||||
"""Generate plots from real evaluation results
|
||||
|
||||
Args:
|
||||
eval_results_file: Evaluation results JSON file
|
||||
save_dir: Save directory
|
||||
"""
|
||||
os.makedirs(save_dir, exist_ok=True)
|
||||
|
||||
# 加载评估结果
|
||||
if not os.path.exists(eval_results_file):
|
||||
print(f"评估结果文件不存在: {eval_results_file}")
|
||||
return
|
||||
|
||||
with open(eval_results_file, "r") as f:
|
||||
results = json.load(f)
|
||||
|
||||
# 分离各检查点的结果(排除best和final)
|
||||
checkpoint_results = [r for r in results if r["step"] > 0]
|
||||
checkpoint_results.sort(key=lambda x: x["step"])
|
||||
|
||||
steps = [r["step"] for r in checkpoint_results]
|
||||
rewards = [r["avg_reward"] for r in checkpoint_results]
|
||||
stds = [r["std_reward"] for r in checkpoint_results]
|
||||
|
||||
# 绘制评估曲线(带误差棒)
|
||||
fig, ax = plt.subplots(figsize=(10, 6))
|
||||
|
||||
ax.errorbar(
|
||||
np.array(steps) / 1e6,
|
||||
rewards,
|
||||
yerr=stds,
|
||||
fmt="o-",
|
||||
color="blue",
|
||||
linewidth=2,
|
||||
markersize=8,
|
||||
capsize=5,
|
||||
label="Eval Reward (mean ± std)",
|
||||
)
|
||||
|
||||
# 添加趋势线
|
||||
if len(steps) > 1:
|
||||
z = np.polyfit(steps, rewards, 1)
|
||||
p = np.poly1d(z)
|
||||
ax.plot(
|
||||
np.array(steps) / 1e6,
|
||||
p(steps),
|
||||
"--",
|
||||
color="red",
|
||||
linewidth=2,
|
||||
alpha=0.7,
|
||||
label="Trend Line",
|
||||
)
|
||||
|
||||
ax.set_xlabel("Training Steps (Million)", fontsize=12)
|
||||
ax.set_ylabel("Average Reward", fontsize=12)
|
||||
ax.set_title("Evaluation Reward Over Training", fontsize=14)
|
||||
ax.legend(fontsize=10)
|
||||
ax.grid(True, alpha=0.3)
|
||||
|
||||
save_path = os.path.join(save_dir, "evaluation_curve.png")
|
||||
plt.savefig(save_path, dpi=300, bbox_inches="tight")
|
||||
print(f"Evaluation curve saved: {save_path}")
|
||||
plt.close()
|
||||
|
||||
# 绘制标准差变化
|
||||
fig, ax = plt.subplots(figsize=(10, 6))
|
||||
|
||||
ax.plot(
|
||||
np.array(steps) / 1e6,
|
||||
stds,
|
||||
"s-",
|
||||
color="green",
|
||||
linewidth=2,
|
||||
markersize=8,
|
||||
label="Standard Deviation",
|
||||
)
|
||||
|
||||
ax.set_xlabel("Training Steps (Million)", fontsize=12)
|
||||
ax.set_ylabel("Reward Std Dev", fontsize=12)
|
||||
ax.set_title("Evaluation Reward Standard Deviation", fontsize=14)
|
||||
ax.legend(fontsize=10)
|
||||
ax.grid(True, alpha=0.3)
|
||||
|
||||
save_path = os.path.join(save_dir, "evaluation_std.png")
|
||||
plt.savefig(save_path, dpi=300, bbox_inches="tight")
|
||||
print(f"Evaluation std saved: {save_path}")
|
||||
plt.close()
|
||||
|
||||
# 打印汇总信息
|
||||
best_result = max(checkpoint_results, key=lambda x: x["avg_reward"])
|
||||
print(f"\n最佳检查点: Step {best_result['step']:,}")
|
||||
print(f" 平均回报: {best_result['avg_reward']:.2f} ± {best_result['std_reward']:.2f}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import argparse
|
||||
|
||||
parser = argparse.ArgumentParser(description="生成训练图表")
|
||||
parser.add_argument("--log-file", type=str, default=None, help="训练日志文件路径")
|
||||
parser.add_argument("--save-dir", type=str, default="plots", help="图表保存目录")
|
||||
parser.add_argument("--sample", action="store_true", help="生成示例图表")
|
||||
parser = argparse.ArgumentParser(description="Generate training plots")
|
||||
parser.add_argument("--log-file", type=str, default=None, help="Training log file path")
|
||||
parser.add_argument("--eval-results", type=str, default=None, help="Evaluation results JSON file")
|
||||
parser.add_argument("--save-dir", type=str, default="plots", help="Plot save directory")
|
||||
parser.add_argument("--sample", action="store_true", help="Generate sample plots")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.sample:
|
||||
generate_sample_plots(args.save_dir)
|
||||
elif args.eval_results:
|
||||
generate_real_plots(args.eval_results, args.save_dir)
|
||||
elif args.log_file:
|
||||
logs = load_training_logs(args.log_file)
|
||||
plot_training_curves(
|
||||
@@ -294,4 +390,4 @@ if __name__ == "__main__":
|
||||
args.save_dir,
|
||||
)
|
||||
else:
|
||||
print("请指定 --log-file 或 --sample 参数")
|
||||
print("Please specify --log-file, --eval-results, or --sample")
|
||||
|
||||
|
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 137 KiB |
|
After Width: | Height: | Size: 153 KiB |
|
Before Width: | Height: | Size: 554 KiB After Width: | Height: | Size: 653 KiB |
@@ -1,7 +1,7 @@
|
||||
\relax
|
||||
\providecommand\hyper@newdestlabel[2]{}
|
||||
\providecommand\HyField@AuxAddToFields[1]{}
|
||||
\providecommand\HyField@AuxAddToCoFields[2]{}
|
||||
\providecommand*\HyPL@Entry[1]{}
|
||||
\HyPL@Entry{0<</S/D>>}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}{section.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Game Selection and Challenges}{1}{subsection.1.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Motivation}{1}{subsection.1.2}\protected@file@percent }
|
||||
@@ -28,15 +28,19 @@
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Training Performance}{4}{subsection.4.1}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Training curves showing reward, loss, and Q-value evolution}}{5}{figure.caption.4}\protected@file@percent }
|
||||
\newlabel{fig:training_curves}{{1}{5}{Training curves showing reward, loss, and Q-value evolution}{figure.caption.4}{}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Evaluation Results}{5}{subsection.4.2}\protected@file@percent }
|
||||
\@writefile{lot}{\contentsline {table}{\numberline {4}{\ignorespaces Evaluation results}}{5}{table.caption.5}\protected@file@percent }
|
||||
\newlabel{tab:evaluation}{{4}{5}{Evaluation results}{table.caption.5}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Evaluation reward at different training checkpoints with standard deviation error bars}}{5}{figure.caption.5}\protected@file@percent }
|
||||
\newlabel{fig:evaluation_curve}{{2}{5}{Evaluation reward at different training checkpoints with standard deviation error bars}{figure.caption.5}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Epsilon decay curve during training}}{6}{figure.caption.6}\protected@file@percent }
|
||||
\newlabel{fig:epsilon_decay}{{3}{6}{Epsilon decay curve during training}{figure.caption.6}{}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Evaluation Results}{6}{subsection.4.2}\protected@file@percent }
|
||||
\@writefile{lot}{\contentsline {table}{\numberline {4}{\ignorespaces Evaluation results at different training checkpoints}}{6}{table.caption.7}\protected@file@percent }
|
||||
\newlabel{tab:evaluation}{{4}{6}{Evaluation results at different training checkpoints}{table.caption.7}{}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Comparison with Baselines}{6}{subsection.4.3}\protected@file@percent }
|
||||
\@writefile{lot}{\contentsline {table}{\numberline {5}{\ignorespaces Comparison with baselines}}{6}{table.caption.6}\protected@file@percent }
|
||||
\newlabel{tab:comparison}{{5}{6}{Comparison with baselines}{table.caption.6}{}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {5}Discussion}{6}{section.5}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Performance Analysis}{6}{subsection.5.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Limitations}{6}{subsection.5.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Potential Improvements}{6}{subsection.5.3}\protected@file@percent }
|
||||
\@writefile{lot}{\contentsline {table}{\numberline {5}{\ignorespaces Comparison with baselines}}{6}{table.caption.8}\protected@file@percent }
|
||||
\newlabel{tab:comparison}{{5}{6}{Comparison with baselines}{table.caption.8}{}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {5}Discussion}{7}{section.5}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Performance Analysis}{7}{subsection.5.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Limitations}{7}{subsection.5.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Potential Improvements}{7}{subsection.5.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {6}Conclusion}{7}{section.6}\protected@file@percent }
|
||||
\gdef \@abspage@last{7}
|
||||
\gdef \@abspage@last{8}
|
||||
|
||||
@@ -0,0 +1,167 @@
|
||||
PWD D:/Code/doing_exercises/programs/外教作业外快/强化学习个人项目报告(Atari 游戏方向)/tex
|
||||
INPUT d:/settings/Language/texlive/2025/texmf.cnf
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/web2c/texmf.cnf
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-var/web2c/pdftex/pdflatex.fmt
|
||||
INPUT report.tex
|
||||
OUTPUT report.log
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/article.cls
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/article.cls
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/size11.clo
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/size11.clo
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/size11.clo
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/map/fontname/texfonts.map
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/cm/cmr10.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/inputenc.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/inputenc.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/fontenc.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/fontenc.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/jknappen/ec/ecrm1095.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/booktabs/booktabs.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/booktabs/booktabs.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/hyperref.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/hyperref.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/iftex/iftex.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/iftex/iftex.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/pdfescape/pdfescape.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/pdfescape/pdfescape.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/infwarerr/infwarerr.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/infwarerr/infwarerr.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hycolor/hycolor.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hycolor/hycolor.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/nameref.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/nameref.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/refcount/refcount.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/refcount/refcount.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/kvoptions/kvoptions.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/kvoptions/kvoptions.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/stringenc/stringenc.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/stringenc/stringenc.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/pd1enc.def
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/pd1enc.def
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/pd1enc.def
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/intcalc/intcalc.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/intcalc/intcalc.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/puenc.def
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/puenc.def
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/puenc.def
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/url/url.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/url/url.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/bitset/bitset.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/bitset/bitset.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/atbegshi/atbegshi.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/atbegshi-ltx.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/atbegshi-ltx.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/hpdftex.def
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/hpdftex.def
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/hpdftex.def
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/atveryend/atveryend.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/atveryend-ltx.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/atveryend-ltx.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/float/float.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/float/float.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/caption/caption.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/caption/caption.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/caption/caption3.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/caption/caption3.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/caption/subcaption.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/caption/subcaption.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/geometry/geometry.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/geometry/geometry.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/iftex/ifvtex.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/generic/iftex/ifvtex.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/setspace/setspace.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/setspace/setspace.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
INPUT ./report.aux
|
||||
INPUT ./report.aux
|
||||
INPUT report.aux
|
||||
OUTPUT report.aux
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
INPUT ./report.out
|
||||
INPUT ./report.out
|
||||
INPUT report.out
|
||||
INPUT report.out
|
||||
OUTPUT report.pdf
|
||||
INPUT ./report.out
|
||||
INPUT ./report.out
|
||||
OUTPUT report.out
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/jknappen/ec/ecrm1728.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/jknappen/ec/ecrm1200.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/cm/cmr12.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/cm/cmr8.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/cm/cmr6.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/cm/cmex10.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex8.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsfonts/umsb.fd
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsfonts/umsb.fd
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsfonts/umsb.fd
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm
|
||||
INPUT d:/settings/Language/texlive/2025/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm
|
||||
@@ -1,8 +1,9 @@
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2025) (preloaded format=pdflatex 2025.6.5) 1 MAY 2026 10:33
|
||||
This is XeTeX, Version 3.141592653-2.6-0.999997 (TeX Live 2025) (preloaded format=xelatex 2025.6.5) 1 MAY 2026 18:08
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
file:line:error style messages enabled.
|
||||
%&-line parsing enabled.
|
||||
**report.tex
|
||||
**report
|
||||
(./report.tex
|
||||
LaTeX2e <2024-11-01> patch level 2
|
||||
L3 programming layer <2025-01-18>
|
||||
@@ -11,223 +12,302 @@ Document Class: article 2024/06/29 v1.4n Standard LaTeX document class
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/size11.clo
|
||||
File: size11.clo 2024/06/29 v1.4n Standard LaTeX file (size option)
|
||||
)
|
||||
\c@part=\count196
|
||||
\c@section=\count197
|
||||
\c@subsection=\count198
|
||||
\c@subsubsection=\count199
|
||||
\c@paragraph=\count266
|
||||
\c@subparagraph=\count267
|
||||
\c@figure=\count268
|
||||
\c@table=\count269
|
||||
\c@part=\count192
|
||||
\c@section=\count193
|
||||
\c@subsection=\count194
|
||||
\c@subsubsection=\count195
|
||||
\c@paragraph=\count196
|
||||
\c@subparagraph=\count197
|
||||
\c@figure=\count198
|
||||
\c@table=\count199
|
||||
\abovecaptionskip=\skip49
|
||||
\belowcaptionskip=\skip50
|
||||
\bibindent=\dimen141
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/xelatex/xecjk/xeCJK.sty (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/l3kernel/expl3.sty
|
||||
Package: expl3 2025-01-18 L3 programming layer (loader)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/l3backend/l3backend-xetex.def
|
||||
File: l3backend-xetex.def 2024-05-08 L3 backend support: XeTeX
|
||||
\g__graphics_track_int=\count266
|
||||
\l__pdf_internal_box=\box52
|
||||
\g__pdf_backend_annotation_int=\count267
|
||||
\g__pdf_backend_link_int=\count268
|
||||
))
|
||||
Package: xeCJK 2022/08/05 v3.9.1 Typesetting CJK scripts with XeLaTeX
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/ctex/ctexhook.sty
|
||||
Package: ctexhook 2022/07/14 v2.5.10 Document and package hooks (CTEX)
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
|
||||
Package: xtemplate 2024-08-16 L3 Experimental prototype document functions
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/inputenc.sty
|
||||
Package: inputenc 2024/02/08 v1.3d Input encoding file
|
||||
\inpenc@prehook=\toks17
|
||||
\inpenc@posthook=\toks18
|
||||
\l__xeCJK_tmp_int=\count269
|
||||
\l__xeCJK_tmp_box=\box53
|
||||
\l__xeCJK_tmp_dim=\dimen142
|
||||
\l__xeCJK_tmp_skip=\skip51
|
||||
\g__xeCJK_space_factor_int=\count270
|
||||
\l__xeCJK_begin_int=\count271
|
||||
\l__xeCJK_end_int=\count272
|
||||
\c__xeCJK_CJK_class_int=\XeTeXcharclass1
|
||||
\c__xeCJK_FullLeft_class_int=\XeTeXcharclass2
|
||||
\c__xeCJK_FullRight_class_int=\XeTeXcharclass3
|
||||
\c__xeCJK_HalfLeft_class_int=\XeTeXcharclass4
|
||||
\c__xeCJK_HalfRight_class_int=\XeTeXcharclass5
|
||||
\c__xeCJK_NormalSpace_class_int=\XeTeXcharclass6
|
||||
\c__xeCJK_CM_class_int=\XeTeXcharclass7
|
||||
\c__xeCJK_HangulJamo_class_int=\XeTeXcharclass8
|
||||
\l__xeCJK_last_skip=\skip52
|
||||
\c__xeCJK_none_node=\count273
|
||||
\g__xeCJK_node_int=\count274
|
||||
\c__xeCJK_CJK_node_dim=\dimen143
|
||||
\c__xeCJK_CJK-space_node_dim=\dimen144
|
||||
\c__xeCJK_default_node_dim=\dimen145
|
||||
\c__xeCJK_CJK-widow_node_dim=\dimen146
|
||||
\c__xeCJK_normalspace_node_dim=\dimen147
|
||||
\c__xeCJK_default-space_node_skip=\skip53
|
||||
\l__xeCJK_ccglue_skip=\skip54
|
||||
\l__xeCJK_ecglue_skip=\skip55
|
||||
\l__xeCJK_punct_kern_skip=\skip56
|
||||
\l__xeCJK_indent_box=\box54
|
||||
\l__xeCJK_last_penalty_int=\count275
|
||||
\l__xeCJK_last_bound_dim=\dimen148
|
||||
\l__xeCJK_last_kern_dim=\dimen149
|
||||
\l__xeCJK_widow_penalty_int=\count276
|
||||
|
||||
LaTeX template Info: Declaring template type 'xeCJK/punctuation' taking 0
|
||||
(template) argument(s) on line 2396.
|
||||
|
||||
\l__xeCJK_fixed_punct_width_dim=\dimen150
|
||||
\l__xeCJK_mixed_punct_width_dim=\dimen151
|
||||
\l__xeCJK_middle_punct_width_dim=\dimen152
|
||||
\l__xeCJK_fixed_margin_width_dim=\dimen153
|
||||
\l__xeCJK_mixed_margin_width_dim=\dimen154
|
||||
\l__xeCJK_middle_margin_width_dim=\dimen155
|
||||
\l__xeCJK_bound_punct_width_dim=\dimen156
|
||||
\l__xeCJK_bound_margin_width_dim=\dimen157
|
||||
\l__xeCJK_margin_minimum_dim=\dimen158
|
||||
\l__xeCJK_kerning_total_width_dim=\dimen159
|
||||
\l__xeCJK_same_align_margin_dim=\dimen160
|
||||
\l__xeCJK_different_align_margin_dim=\dimen161
|
||||
\l__xeCJK_kerning_margin_width_dim=\dimen162
|
||||
\l__xeCJK_kerning_margin_minimum_dim=\dimen163
|
||||
\l__xeCJK_bound_dim=\dimen164
|
||||
\l__xeCJK_reverse_bound_dim=\dimen165
|
||||
\l__xeCJK_margin_dim=\dimen166
|
||||
\l__xeCJK_minimum_bound_dim=\dimen167
|
||||
\l__xeCJK_kerning_margin_dim=\dimen168
|
||||
\g__xeCJK_family_int=\count277
|
||||
\l__xeCJK_fam_int=\count278
|
||||
\g__xeCJK_fam_allocation_int=\count279
|
||||
\l__xeCJK_verb_case_int=\count280
|
||||
\l__xeCJK_verb_exspace_skip=\skip57
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/fontspec/fontspec.sty (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
|
||||
Package: xparse 2024-08-16 L3 Experimental document command parser
|
||||
)
|
||||
Package: fontspec 2024/05/11 v2.9e Font selection for XeLaTeX and LuaLaTeX
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty
|
||||
Package: fontspec-xetex 2024/05/11 v2.9e Font selection for XeLaTeX and LuaLaTeX
|
||||
\l__fontspec_script_int=\count281
|
||||
\l__fontspec_language_int=\count282
|
||||
\l__fontspec_strnum_int=\count283
|
||||
\l__fontspec_tmp_int=\count284
|
||||
\l__fontspec_tmpa_int=\count285
|
||||
\l__fontspec_tmpb_int=\count286
|
||||
\l__fontspec_tmpc_int=\count287
|
||||
\l__fontspec_em_int=\count288
|
||||
\l__fontspec_emdef_int=\count289
|
||||
\l__fontspec_strong_int=\count290
|
||||
\l__fontspec_strongdef_int=\count291
|
||||
\l__fontspec_tmpa_dim=\dimen169
|
||||
\l__fontspec_tmpb_dim=\dimen170
|
||||
\l__fontspec_tmpc_dim=\dimen171
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/fontenc.sty
|
||||
Package: fontenc 2021/04/29 v2.0v Standard LaTeX package
|
||||
)
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/fontspec/fontspec.cfg))) (d:/settings/Language/texlive/2025/texmf-dist/tex/xelatex/xecjk/xeCJK.cfg
|
||||
File: xeCJK.cfg 2022/08/05 v3.9.1 Configuration file for xeCJK package
|
||||
))
|
||||
|
||||
Package fontspec Info:
|
||||
(fontspec) Could not resolve font "SimSun/BI" (it probably doesn't
|
||||
(fontspec) exist).
|
||||
|
||||
|
||||
Package fontspec Info:
|
||||
(fontspec) Could not resolve font "SimSun/B" (it probably doesn't
|
||||
(fontspec) exist).
|
||||
|
||||
|
||||
Package fontspec Info:
|
||||
(fontspec) Could not resolve font "SimSun/I" (it probably doesn't
|
||||
(fontspec) exist).
|
||||
|
||||
|
||||
Package fontspec Info:
|
||||
(fontspec) Font family 'SimSun(0)' created for font 'SimSun' with
|
||||
(fontspec) options [Script={CJK}].
|
||||
(fontspec)
|
||||
(fontspec) This font family consists of the following NFSS
|
||||
(fontspec) series/shapes:
|
||||
(fontspec)
|
||||
(fontspec) - 'normal' (m/n) with NFSS spec.:
|
||||
(fontspec) <->"SimSun/OT:script=hani;language=dflt;"
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
Package: graphicx 2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR)
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
Package: keyval 2022/05/29 v1.15 key=value parser (DPC)
|
||||
\KV@toks@=\toks19
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
\KV@toks@=\toks17
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
Package: graphics 2024/08/06 v1.4g Standard LaTeX Graphics (DPC,SPQR)
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics/trig.sty
|
||||
Package: trig 2023/12/02 v1.11 sin cos tan (DPC)
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics-cfg/graphics.c
|
||||
fg
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
|
||||
)
|
||||
Package graphics Info: Driver file: pdftex.def on input line 106.
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
File: pdftex.def 2024/04/13 v1.2c Graphics/color driver for pdftex
|
||||
Package graphics Info: Driver file: xetex.def on input line 106.
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/graphics-def/xetex.def
|
||||
File: xetex.def 2022/09/22 v5.0n Graphics/color driver for xetex
|
||||
))
|
||||
\Gin@req@height=\dimen142
|
||||
\Gin@req@width=\dimen143
|
||||
\Gin@req@height=\dimen172
|
||||
\Gin@req@width=\dimen173
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
Package: amsmath 2024/11/05 v2.17t AMS math features
|
||||
\@mathmargin=\skip51
|
||||
\@mathmargin=\skip58
|
||||
|
||||
For additional information on amsmath, use the `?' option.
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
Package: amstext 2021/08/26 v2.01 AMS text
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
File: amsgen.sty 1999/11/30 v2.0 generic functions
|
||||
\@emptytoks=\toks20
|
||||
\ex@=\dimen144
|
||||
))
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
\@emptytoks=\toks18
|
||||
\ex@=\dimen174
|
||||
)) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
Package: amsbsy 1999/11/29 v1.2d Bold Symbols
|
||||
\pmbraise@=\dimen145
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
\pmbraise@=\dimen175
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
Package: amsopn 2022/04/08 v2.04 operator names
|
||||
)
|
||||
\inf@bad=\count270
|
||||
\inf@bad=\count292
|
||||
LaTeX Info: Redefining \frac on input line 233.
|
||||
\uproot@=\count271
|
||||
\leftroot@=\count272
|
||||
\uproot@=\count293
|
||||
\leftroot@=\count294
|
||||
LaTeX Info: Redefining \overline on input line 398.
|
||||
LaTeX Info: Redefining \colon on input line 409.
|
||||
\classnum@=\count273
|
||||
\DOTSCASE@=\count274
|
||||
\classnum@=\count295
|
||||
\DOTSCASE@=\count296
|
||||
LaTeX Info: Redefining \ldots on input line 495.
|
||||
LaTeX Info: Redefining \dots on input line 498.
|
||||
LaTeX Info: Redefining \cdots on input line 619.
|
||||
\Mathstrutbox@=\box52
|
||||
\strutbox@=\box53
|
||||
\Mathstrutbox@=\box55
|
||||
\strutbox@=\box56
|
||||
LaTeX Info: Redefining \big on input line 721.
|
||||
LaTeX Info: Redefining \Big on input line 722.
|
||||
LaTeX Info: Redefining \bigg on input line 723.
|
||||
LaTeX Info: Redefining \Bigg on input line 724.
|
||||
\big@size=\dimen146
|
||||
\big@size=\dimen176
|
||||
LaTeX Font Info: Redeclaring font encoding OML on input line 742.
|
||||
LaTeX Font Info: Redeclaring font encoding OMS on input line 743.
|
||||
\macc@depth=\count275
|
||||
\macc@depth=\count297
|
||||
LaTeX Info: Redefining \bmod on input line 904.
|
||||
LaTeX Info: Redefining \pmod on input line 909.
|
||||
LaTeX Info: Redefining \smash on input line 939.
|
||||
LaTeX Info: Redefining \relbar on input line 969.
|
||||
LaTeX Info: Redefining \Relbar on input line 970.
|
||||
\c@MaxMatrixCols=\count276
|
||||
\c@MaxMatrixCols=\count298
|
||||
\dotsspace@=\muskip17
|
||||
\c@parentequation=\count277
|
||||
\dspbrk@lvl=\count278
|
||||
\tag@help=\toks21
|
||||
\row@=\count279
|
||||
\column@=\count280
|
||||
\maxfields@=\count281
|
||||
\andhelp@=\toks22
|
||||
\eqnshift@=\dimen147
|
||||
\alignsep@=\dimen148
|
||||
\tagshift@=\dimen149
|
||||
\tagwidth@=\dimen150
|
||||
\totwidth@=\dimen151
|
||||
\lineht@=\dimen152
|
||||
\@envbody=\toks23
|
||||
\multlinegap=\skip52
|
||||
\multlinetaggap=\skip53
|
||||
\mathdisplay@stack=\toks24
|
||||
\c@parentequation=\count299
|
||||
\dspbrk@lvl=\count300
|
||||
\tag@help=\toks19
|
||||
\row@=\count301
|
||||
\column@=\count302
|
||||
\maxfields@=\count303
|
||||
\andhelp@=\toks20
|
||||
\eqnshift@=\dimen177
|
||||
\alignsep@=\dimen178
|
||||
\tagshift@=\dimen179
|
||||
\tagwidth@=\dimen180
|
||||
\totwidth@=\dimen181
|
||||
\lineht@=\dimen182
|
||||
\@envbody=\toks21
|
||||
\multlinegap=\skip59
|
||||
\multlinetaggap=\skip60
|
||||
\mathdisplay@stack=\toks22
|
||||
LaTeX Info: Redefining \[ on input line 2953.
|
||||
LaTeX Info: Redefining \] on input line 2954.
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
|
||||
\symAMSa=\mathgroup4
|
||||
\symAMSb=\mathgroup5
|
||||
LaTeX Font Info: Redeclaring math symbol \hbar on input line 98.
|
||||
LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold'
|
||||
(Font) U/euf/m/n --> U/euf/b/n on input line 106.
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
Package: amssymb 2013/01/14 v3.01 AMS font symbols
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/booktabs/booktabs.sty
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/booktabs/booktabs.sty
|
||||
Package: booktabs 2020/01/12 v1.61803398 Publication quality tables
|
||||
\heavyrulewidth=\dimen153
|
||||
\lightrulewidth=\dimen154
|
||||
\cmidrulewidth=\dimen155
|
||||
\belowrulesep=\dimen156
|
||||
\belowbottomsep=\dimen157
|
||||
\aboverulesep=\dimen158
|
||||
\abovetopsep=\dimen159
|
||||
\cmidrulesep=\dimen160
|
||||
\cmidrulekern=\dimen161
|
||||
\defaultaddspace=\dimen162
|
||||
\@cmidla=\count282
|
||||
\@cmidlb=\count283
|
||||
\@aboverulesep=\dimen163
|
||||
\@belowrulesep=\dimen164
|
||||
\@thisruleclass=\count284
|
||||
\@lastruleclass=\count285
|
||||
\@thisrulewidth=\dimen165
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/hyperref.sty
|
||||
\heavyrulewidth=\dimen183
|
||||
\lightrulewidth=\dimen184
|
||||
\cmidrulewidth=\dimen185
|
||||
\belowrulesep=\dimen186
|
||||
\belowbottomsep=\dimen187
|
||||
\aboverulesep=\dimen188
|
||||
\abovetopsep=\dimen189
|
||||
\cmidrulesep=\dimen190
|
||||
\cmidrulekern=\dimen191
|
||||
\defaultaddspace=\dimen192
|
||||
\@cmidla=\count304
|
||||
\@cmidlb=\count305
|
||||
\@aboverulesep=\dimen193
|
||||
\@belowrulesep=\dimen194
|
||||
\@thisruleclass=\count306
|
||||
\@lastruleclass=\count307
|
||||
\@thisrulewidth=\dimen195
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/hyperref.sty
|
||||
Package: hyperref 2024-11-05 v7.01l Hypertext links for LaTeX
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/generic/iftex/iftex.sty
|
||||
Package: iftex 2024/12/12 v1.0g TeX engine tests
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty
|
||||
Package: kvsetkeys 2022-10-05 v1.19 Key value parser (HO)
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/generic/kvdefinekeys/kvdefine
|
||||
keys.sty
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
|
||||
Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO)
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/generic/pdfescape/pdfescape.s
|
||||
ty
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/generic/pdfescape/pdfescape.sty
|
||||
Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO)
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
|
||||
Package: ltxcmds 2023-12-04 v1.26 LaTeX kernel commands for general use (HO)
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/generic/pdftexcmds/pdftexcmds
|
||||
.sty
|
||||
Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO
|
||||
)
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/generic/infwarerr/infwarerr.s
|
||||
ty
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
|
||||
Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/generic/infwarerr/infwarerr.sty
|
||||
Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO)
|
||||
)
|
||||
Package pdftexcmds Info: \pdf@primitive is available.
|
||||
Package pdftexcmds Info: \pdf@ifprimitive is available.
|
||||
Package pdftexcmds Info: \pdfdraftmode found.
|
||||
))
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hycolor/hycolor.sty
|
||||
Package pdftexcmds Info: \pdfdraftmode not found.
|
||||
)) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hycolor/hycolor.sty
|
||||
Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO)
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/nameref.sty
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/nameref.sty
|
||||
Package: nameref 2023-11-26 v2.56 Cross-referencing by name of section
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/refcount/refcount.sty
|
||||
Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO)
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/generic/gettitlestring/gettit
|
||||
lestring.sty
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
|
||||
Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO)
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/kvoptions/kvoptions.sty
|
||||
Package: kvoptions 2022-06-15 v3.15 Key value format for package options (HO)
|
||||
))
|
||||
\c@section@level=\count286
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
\c@section@level=\count308
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
Package: etoolbox 2025/02/11 v2.5l e-TeX tools for LaTeX (JAW)
|
||||
\etb@tempcnta=\count287
|
||||
\etb@tempcnta=\count309
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/generic/stringenc/stringenc.sty
|
||||
Package: stringenc 2019/11/29 v1.12 Convert strings between diff. encodings (HO)
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/generic/stringenc/stringenc.s
|
||||
ty
|
||||
Package: stringenc 2019/11/29 v1.12 Convert strings between diff. encodings (HO
|
||||
)
|
||||
)
|
||||
\@linkdim=\dimen166
|
||||
\Hy@linkcounter=\count288
|
||||
\Hy@pagecounter=\count289
|
||||
\@linkdim=\dimen196
|
||||
\Hy@linkcounter=\count310
|
||||
\Hy@pagecounter=\count311
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/pd1enc.def
|
||||
File: pd1enc.def 2024-11-05 v7.01l Hyperref: PDFDocEncoding definition (HO)
|
||||
Now handling font encoding PD1 ...
|
||||
... no UTF-8 mapping file for font encoding PD1
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/generic/intcalc/intcalc.sty
|
||||
Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO)
|
||||
)
|
||||
\Hy@SavedSpaceFactor=\count290
|
||||
\Hy@SavedSpaceFactor=\count312
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/puenc.def
|
||||
File: puenc.def 2024-11-05 v7.01l Hyperref: PDF Unicode definition (HO)
|
||||
Now handling font encoding PU ...
|
||||
... no UTF-8 mapping file for font encoding PU
|
||||
)
|
||||
Package hyperref Info: Hyper figures OFF on input line 4157.
|
||||
Package hyperref Info: Link nesting OFF on input line 4162.
|
||||
@@ -236,26 +316,21 @@ Package hyperref Info: Plain pages OFF on input line 4172.
|
||||
Package hyperref Info: Backreferencing OFF on input line 4177.
|
||||
Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
|
||||
Package hyperref Info: Bookmarks ON on input line 4424.
|
||||
\c@Hy@tempcnt=\count291
|
||||
|
||||
\c@Hy@tempcnt=\count313
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/url/url.sty
|
||||
\Urlmuskip=\muskip18
|
||||
Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
|
||||
)
|
||||
LaTeX Info: Redefining \url on input line 4763.
|
||||
\XeTeXLinkMargin=\dimen167
|
||||
|
||||
\XeTeXLinkMargin=\dimen197
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/generic/bitset/bitset.sty
|
||||
Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO)
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/generic/bigintcalc/bigintcalc
|
||||
.sty
|
||||
Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
|
||||
Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO)
|
||||
))
|
||||
\Fld@menulength=\count292
|
||||
\Field@Width=\dimen168
|
||||
\Fld@charsize=\dimen169
|
||||
\Fld@menulength=\count314
|
||||
\Field@Width=\dimen198
|
||||
\Fld@charsize=\dimen199
|
||||
Package hyperref Info: Hyper figures OFF on input line 6042.
|
||||
Package hyperref Info: Link nesting OFF on input line 6047.
|
||||
Package hyperref Info: Hyper index ON on input line 6050.
|
||||
@@ -263,161 +338,178 @@ Package hyperref Info: backreferencing OFF on input line 6057.
|
||||
Package hyperref Info: Link coloring OFF on input line 6062.
|
||||
Package hyperref Info: Link coloring with OCG OFF on input line 6067.
|
||||
Package hyperref Info: PDF/A mode OFF on input line 6072.
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/atbegshi-ltx.sty
|
||||
Package: atbegshi-ltx 2021/01/10 v1.0c Emulation of the original atbegshi
|
||||
package with kernel methods
|
||||
)
|
||||
\Hy@abspage=\count293
|
||||
\c@Item=\count294
|
||||
\c@Hfootnote=\count295
|
||||
\Hy@abspage=\count315
|
||||
\c@Item=\count316
|
||||
\c@Hfootnote=\count317
|
||||
)
|
||||
Package hyperref Info: Driver (autodetected): hpdftex.
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/hpdftex.def
|
||||
File: hpdftex.def 2024-11-05 v7.01l Hyperref driver for pdfTeX
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/atveryend-ltx.sty
|
||||
Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atveryend pac
|
||||
kage
|
||||
with kernel methods
|
||||
)
|
||||
\Fld@listcount=\count296
|
||||
\c@bookmark@seq@number=\count297
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/rerunfilecheck/rerunfil
|
||||
echeck.sty
|
||||
Package hyperref Info: Driver (autodetected): hxetex.
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/hyperref/hxetex.def
|
||||
File: hxetex.def 2024-11-05 v7.01l Hyperref driver for XeTeX
|
||||
\pdfm@box=\box57
|
||||
\c@Hy@AnnotLevel=\count318
|
||||
\HyField@AnnotCount=\count319
|
||||
\Fld@listcount=\count320
|
||||
\c@bookmark@seq@number=\count321
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
|
||||
Package: rerunfilecheck 2022-07-10 v1.10 Rerun checks for auxiliary files (HO)
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/generic/uniquecounter/uniquec
|
||||
ounter.sty
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/base/atveryend-ltx.sty
|
||||
Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atveryend package
|
||||
with kernel methods
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
|
||||
Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO)
|
||||
)
|
||||
Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
|
||||
85.
|
||||
Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 285.
|
||||
)
|
||||
\Hy@SectionHShift=\skip54
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/float/float.sty
|
||||
\Hy@SectionHShift=\skip61
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/float/float.sty
|
||||
Package: float 2001/11/08 v1.3d Float enhancements (AL)
|
||||
\c@float@type=\count298
|
||||
\float@exts=\toks25
|
||||
\float@box=\box54
|
||||
\@float@everytoks=\toks26
|
||||
\@floatcapt=\box55
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/caption/caption.sty
|
||||
\c@float@type=\count322
|
||||
\float@exts=\toks23
|
||||
\float@box=\box58
|
||||
\@float@everytoks=\toks24
|
||||
\@floatcapt=\box59
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/caption/caption.sty
|
||||
Package: caption 2023/08/05 v3.6o Customizing captions (AR)
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/caption/caption3.sty
|
||||
Package: caption3 2023/07/31 v2.4d caption3 kernel (AR)
|
||||
\caption@tempdima=\dimen170
|
||||
\captionmargin=\dimen171
|
||||
\caption@leftmargin=\dimen172
|
||||
\caption@rightmargin=\dimen173
|
||||
\caption@width=\dimen174
|
||||
\caption@indent=\dimen175
|
||||
\caption@parindent=\dimen176
|
||||
\caption@hangindent=\dimen177
|
||||
\caption@tempdima=\dimen256
|
||||
\captionmargin=\dimen257
|
||||
\caption@leftmargin=\dimen258
|
||||
\caption@rightmargin=\dimen259
|
||||
\caption@width=\dimen260
|
||||
\caption@indent=\dimen261
|
||||
\caption@parindent=\dimen262
|
||||
\caption@hangindent=\dimen263
|
||||
Package caption Info: Standard document class detected.
|
||||
)
|
||||
\c@caption@flags=\count299
|
||||
\c@continuedfloat=\count300
|
||||
\c@caption@flags=\count323
|
||||
\c@continuedfloat=\count324
|
||||
Package caption Info: float package is loaded.
|
||||
Package caption Info: hyperref package is loaded.
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/caption/subcaption.sty
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/caption/subcaption.sty
|
||||
Package: subcaption 2023/07/28 v1.6b Sub-captions (AR)
|
||||
Package caption Info: New subtype `subfigure' on input line 238.
|
||||
\c@subfigure=\count301
|
||||
\c@subfigure=\count325
|
||||
Package caption Info: New subtype `subtable' on input line 238.
|
||||
\c@subtable=\count302
|
||||
\c@subtable=\count326
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/geometry/geometry.sty
|
||||
Package: geometry 2020/01/02 v5.9 Page Geometry
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/generic/iftex/ifvtex.sty
|
||||
Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead.
|
||||
)
|
||||
\Gm@cnth=\count303
|
||||
\Gm@cntv=\count304
|
||||
\c@Gm@tempcnt=\count305
|
||||
\Gm@bindingoffset=\dimen178
|
||||
\Gm@wd@mp=\dimen179
|
||||
\Gm@odd@mp=\dimen180
|
||||
\Gm@even@mp=\dimen181
|
||||
\Gm@layoutwidth=\dimen182
|
||||
\Gm@layoutheight=\dimen183
|
||||
\Gm@layouthoffset=\dimen184
|
||||
\Gm@layoutvoffset=\dimen185
|
||||
\Gm@dimlist=\toks27
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/setspace/setspace.sty
|
||||
\Gm@cnth=\count327
|
||||
\Gm@cntv=\count328
|
||||
\c@Gm@tempcnt=\count329
|
||||
\Gm@bindingoffset=\dimen264
|
||||
\Gm@wd@mp=\dimen265
|
||||
\Gm@odd@mp=\dimen266
|
||||
\Gm@even@mp=\dimen267
|
||||
\Gm@layoutwidth=\dimen268
|
||||
\Gm@layoutheight=\dimen269
|
||||
\Gm@layouthoffset=\dimen270
|
||||
\Gm@layoutvoffset=\dimen271
|
||||
\Gm@dimlist=\toks25
|
||||
) (d:/settings/Language/texlive/2025/texmf-dist/tex/latex/setspace/setspace.sty
|
||||
Package: setspace 2022/12/04 v6.7b set line spacing
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/l3backend/l3backend-pdf
|
||||
tex.def
|
||||
File: l3backend-pdftex.def 2024-05-08 L3 backend support: PDF output (pdfTeX)
|
||||
\l__color_backend_stack_int=\count306
|
||||
\l__pdf_internal_box=\box56
|
||||
)
|
||||
No file report.aux.
|
||||
) (./report.aux)
|
||||
\openout1 = `report.aux'.
|
||||
|
||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 24.
|
||||
LaTeX Font Info: ... okay on input line 24.
|
||||
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 24.
|
||||
LaTeX Font Info: ... okay on input line 24.
|
||||
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 24.
|
||||
LaTeX Font Info: ... okay on input line 24.
|
||||
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 24.
|
||||
LaTeX Font Info: ... okay on input line 24.
|
||||
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 24.
|
||||
LaTeX Font Info: ... okay on input line 24.
|
||||
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 24.
|
||||
LaTeX Font Info: ... okay on input line 24.
|
||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 24.
|
||||
LaTeX Font Info: ... okay on input line 24.
|
||||
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 24.
|
||||
LaTeX Font Info: ... okay on input line 24.
|
||||
LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 24.
|
||||
LaTeX Font Info: ... okay on input line 24.
|
||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 25.
|
||||
LaTeX Font Info: ... okay on input line 25.
|
||||
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 25.
|
||||
LaTeX Font Info: ... okay on input line 25.
|
||||
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 25.
|
||||
LaTeX Font Info: ... okay on input line 25.
|
||||
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 25.
|
||||
LaTeX Font Info: ... okay on input line 25.
|
||||
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 25.
|
||||
LaTeX Font Info: ... okay on input line 25.
|
||||
LaTeX Font Info: Checking defaults for TU/lmr/m/n on input line 25.
|
||||
LaTeX Font Info: ... okay on input line 25.
|
||||
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 25.
|
||||
LaTeX Font Info: ... okay on input line 25.
|
||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 25.
|
||||
LaTeX Font Info: ... okay on input line 25.
|
||||
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 25.
|
||||
LaTeX Font Info: ... okay on input line 25.
|
||||
LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 25.
|
||||
LaTeX Font Info: ... okay on input line 25.
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/context/base/mkii/supp-pdf.mk
|
||||
ii
|
||||
[Loading MPS to PDF converter (version 2006.09.02).]
|
||||
\scratchcounter=\count307
|
||||
\scratchdimen=\dimen186
|
||||
\scratchbox=\box57
|
||||
\nofMPsegments=\count308
|
||||
\nofMParguments=\count309
|
||||
\everyMPshowfont=\toks28
|
||||
\MPscratchCnt=\count310
|
||||
\MPscratchDim=\dimen187
|
||||
\MPnumerator=\count311
|
||||
\makeMPintoPDFobject=\count312
|
||||
\everyMPtoPDFconversion=\toks29
|
||||
)
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-b
|
||||
ase.sty
|
||||
Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
|
||||
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
|
||||
85.
|
||||
Package fontspec Info:
|
||||
(fontspec) Adjusting the maths setup (use [no-math] to avoid
|
||||
(fontspec) this).
|
||||
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/latexconfig/epstopdf-sy
|
||||
s.cfg
|
||||
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
|
||||
e
|
||||
))
|
||||
Package hyperref Info: Link coloring OFF on input line 24.
|
||||
\symlegacymaths=\mathgroup6
|
||||
LaTeX Font Info: Overwriting symbol font `legacymaths' in version `bold'
|
||||
(Font) OT1/cmr/m/n --> OT1/cmr/bx/n on input line 25.
|
||||
LaTeX Font Info: Redeclaring math accent \acute on input line 25.
|
||||
LaTeX Font Info: Redeclaring math accent \grave on input line 25.
|
||||
LaTeX Font Info: Redeclaring math accent \ddot on input line 25.
|
||||
LaTeX Font Info: Redeclaring math accent \tilde on input line 25.
|
||||
LaTeX Font Info: Redeclaring math accent \bar on input line 25.
|
||||
LaTeX Font Info: Redeclaring math accent \breve on input line 25.
|
||||
LaTeX Font Info: Redeclaring math accent \check on input line 25.
|
||||
LaTeX Font Info: Redeclaring math accent \hat on input line 25.
|
||||
LaTeX Font Info: Redeclaring math accent \dot on input line 25.
|
||||
LaTeX Font Info: Redeclaring math accent \mathring on input line 25.
|
||||
LaTeX Font Info: Redeclaring math symbol \Gamma on input line 25.
|
||||
LaTeX Font Info: Redeclaring math symbol \Delta on input line 25.
|
||||
LaTeX Font Info: Redeclaring math symbol \Theta on input line 25.
|
||||
LaTeX Font Info: Redeclaring math symbol \Lambda on input line 25.
|
||||
LaTeX Font Info: Redeclaring math symbol \Xi on input line 25.
|
||||
LaTeX Font Info: Redeclaring math symbol \Pi on input line 25.
|
||||
LaTeX Font Info: Redeclaring math symbol \Sigma on input line 25.
|
||||
LaTeX Font Info: Redeclaring math symbol \Upsilon on input line 25.
|
||||
LaTeX Font Info: Redeclaring math symbol \Phi on input line 25.
|
||||
LaTeX Font Info: Redeclaring math symbol \Psi on input line 25.
|
||||
LaTeX Font Info: Redeclaring math symbol \Omega on input line 25.
|
||||
LaTeX Font Info: Redeclaring math symbol \mathdollar on input line 25.
|
||||
LaTeX Font Info: Redeclaring symbol font `operators' on input line 25.
|
||||
LaTeX Font Info: Encoding `OT1' has changed to `TU' for symbol font
|
||||
(Font) `operators' in the math version `normal' on input line 25.
|
||||
LaTeX Font Info: Overwriting symbol font `operators' in version `normal'
|
||||
(Font) OT1/cmr/m/n --> TU/lmr/m/n on input line 25.
|
||||
LaTeX Font Info: Encoding `OT1' has changed to `TU' for symbol font
|
||||
(Font) `operators' in the math version `bold' on input line 25.
|
||||
LaTeX Font Info: Overwriting symbol font `operators' in version `bold'
|
||||
(Font) OT1/cmr/bx/n --> TU/lmr/m/n on input line 25.
|
||||
LaTeX Font Info: Overwriting symbol font `operators' in version `normal'
|
||||
(Font) TU/lmr/m/n --> TU/lmr/m/n on input line 25.
|
||||
LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal'
|
||||
(Font) OT1/cmr/m/it --> TU/lmr/m/it on input line 25.
|
||||
LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal'
|
||||
(Font) OT1/cmr/bx/n --> TU/lmr/b/n on input line 25.
|
||||
LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `normal'
|
||||
(Font) OT1/cmss/m/n --> TU/lmss/m/n on input line 25.
|
||||
LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `normal'
|
||||
(Font) OT1/cmtt/m/n --> TU/lmtt/m/n on input line 25.
|
||||
LaTeX Font Info: Overwriting symbol font `operators' in version `bold'
|
||||
(Font) TU/lmr/m/n --> TU/lmr/b/n on input line 25.
|
||||
LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold'
|
||||
(Font) OT1/cmr/bx/it --> TU/lmr/b/it on input line 25.
|
||||
LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold'
|
||||
(Font) OT1/cmss/bx/n --> TU/lmss/b/n on input line 25.
|
||||
LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold'
|
||||
(Font) OT1/cmtt/m/n --> TU/lmtt/b/n on input line 25.
|
||||
Package hyperref Info: Link coloring OFF on input line 25.
|
||||
(./report.out) (./report.out)
|
||||
\@outlinefile=\write3
|
||||
\openout3 = `report.out'.
|
||||
|
||||
|
||||
|
||||
Package hyperref Warning: Rerun to get /PageLabels entry.
|
||||
|
||||
Package caption Info: Begin \AtBeginDocument code.
|
||||
Package caption Info: End \AtBeginDocument code.
|
||||
|
||||
*geometry* driver: auto-detecting
|
||||
*geometry* detected driver: pdftex
|
||||
*geometry* detected driver: xetex
|
||||
*geometry* verbose mode - [ preamble ] result:
|
||||
* driver: pdftex
|
||||
* driver: xetex
|
||||
* paper: a4paper
|
||||
* layout: <same size as paper>
|
||||
* layoutoffset:(h,v)=(0.0pt,0.0pt)
|
||||
@@ -448,149 +540,42 @@ Package caption Info: End \AtBeginDocument code.
|
||||
* \@reversemarginfalse
|
||||
* (1in=72.27pt=25.4mm, 1cm=28.453pt)
|
||||
|
||||
LaTeX Font Info: Trying to load font information for U+msa on input line 27.
|
||||
|
||||
LaTeX Font Info: Trying to load font information for U+msa on input line 28.
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
File: umsa.fd 2013/01/14 v3.01 AMS symbols A
|
||||
)
|
||||
LaTeX Font Info: Trying to load font information for U+msb on input line 27.
|
||||
|
||||
|
||||
LaTeX Font Info: Trying to load font information for U+msb on input line 28.
|
||||
(d:/settings/Language/texlive/2025/texmf-dist/tex/latex/amsfonts/umsb.fd
|
||||
File: umsb.fd 2013/01/14 v3.01 AMS symbols B
|
||||
)
|
||||
! Missing number, treated as zero.
|
||||
<to be read again>
|
||||
Y
|
||||
l.27
|
||||
|
||||
A number should have been here; I inserted `0'.
|
||||
(If you can't figure out why I needed to see a number,
|
||||
look up `weird error' in the index to The TeXbook.)
|
||||
|
||||
! Illegal unit of measure (pt inserted).
|
||||
<to be read again>
|
||||
Y
|
||||
l.27
|
||||
|
||||
Dimensions can be in units of em, ex, in, pt, pc,
|
||||
cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one!
|
||||
I'll assume that you meant to say pt, for printer's points.
|
||||
To recover gracefully from this error, it's best to
|
||||
delete the erroneous units; e.g., type `2' to delete
|
||||
two letters. (See Chapter 27 of The TeXbook.)
|
||||
|
||||
! Missing = inserted for \ifdim.
|
||||
<to be read again>
|
||||
Y
|
||||
l.27
|
||||
|
||||
I was expecting to see `<', `=', or `>'. Didn't.
|
||||
|
||||
! Missing number, treated as zero.
|
||||
<to be read again>
|
||||
Y
|
||||
l.27
|
||||
|
||||
A number should have been here; I inserted `0'.
|
||||
(If you can't figure out why I needed to see a number,
|
||||
look up `weird error' in the index to The TeXbook.)
|
||||
|
||||
! Illegal unit of measure (pt inserted).
|
||||
<to be read again>
|
||||
Y
|
||||
l.27
|
||||
|
||||
Dimensions can be in units of em, ex, in, pt, pc,
|
||||
cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one!
|
||||
I'll assume that you meant to say pt, for printer's points.
|
||||
To recover gracefully from this error, it's best to
|
||||
delete the erroneous units; e.g., type `2' to delete
|
||||
two letters. (See Chapter 27 of The TeXbook.)
|
||||
|
||||
! Missing number, treated as zero.
|
||||
<to be read again>
|
||||
\unskip
|
||||
l.27
|
||||
|
||||
A number should have been here; I inserted `0'.
|
||||
(If you can't figure out why I needed to see a number,
|
||||
look up `weird error' in the index to The TeXbook.)
|
||||
|
||||
! Illegal unit of measure (pt inserted).
|
||||
<to be read again>
|
||||
\unskip
|
||||
l.27
|
||||
|
||||
Dimensions can be in units of em, ex, in, pt, pc,
|
||||
cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one!
|
||||
I'll assume that you meant to say pt, for printer's points.
|
||||
To recover gracefully from this error, it's best to
|
||||
delete the erroneous units; e.g., type `2' to delete
|
||||
two letters. (See Chapter 27 of The TeXbook.)
|
||||
|
||||
! Missing number, treated as zero.
|
||||
<to be read again>
|
||||
Y
|
||||
l.27
|
||||
|
||||
A number should have been here; I inserted `0'.
|
||||
(If you can't figure out why I needed to see a number,
|
||||
look up `weird error' in the index to The TeXbook.)
|
||||
|
||||
! Illegal unit of measure (pt inserted).
|
||||
<to be read again>
|
||||
Y
|
||||
l.27
|
||||
|
||||
Dimensions can be in units of em, ex, in, pt, pc,
|
||||
cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one!
|
||||
I'll assume that you meant to say pt, for printer's points.
|
||||
To recover gracefully from this error, it's best to
|
||||
delete the erroneous units; e.g., type `2' to delete
|
||||
two letters. (See Chapter 27 of The TeXbook.)
|
||||
|
||||
|
||||
|
||||
[1
|
||||
|
||||
{d:/settings/Language/texlive/2025/texmf-var/fonts/map/pdftex/updmap/pdftex.map
|
||||
}{d:/settings/Language/texlive/2025/texmf-dist/fonts/enc/dvips/cm-super/cm-supe
|
||||
r-t1.enc}{d:/settings/Language/texlive/2025/texmf-dist/fonts/enc/dvips/cm-super
|
||||
/cm-super-ts1.enc}]
|
||||
]
|
||||
|
||||
[2]
|
||||
|
||||
[3]
|
||||
|
||||
[4]
|
||||
|
||||
LaTeX Warning: File `../plots/training_curves.png' not found on input line 200.
|
||||
|
||||
|
||||
|
||||
! Package pdftex.def Error: File `../plots/training_curves.png' not found: usin
|
||||
g draft setting.
|
||||
|
||||
See the pdftex.def package documentation for explanation.
|
||||
Type H <return> for immediate help.
|
||||
...
|
||||
|
||||
l.200 ...\textwidth]{../plots/training_curves.png}
|
||||
|
||||
Try typing <return> to proceed.
|
||||
If that doesn't work, type X <return> to quit.
|
||||
|
||||
File: ../plots/training_curves.png Graphic file (type bmp)
|
||||
<../plots/training_curves.png>
|
||||
File: ../plots/evaluation_curve.png Graphic file (type bmp)
|
||||
<../plots/evaluation_curve.png>
|
||||
File: ../plots/epsilon_decay.png Graphic file (type bmp)
|
||||
<../plots/epsilon_decay.png>
|
||||
|
||||
|
||||
[5]
|
||||
|
||||
[6]
|
||||
|
||||
[7] (./report.aux)
|
||||
[7]
|
||||
|
||||
[8] (./report.aux)
|
||||
***********
|
||||
LaTeX2e <2024-11-01> patch level 2
|
||||
L3 programming layer <2025-01-18>
|
||||
L3 programming layer <2022/08/05>
|
||||
***********
|
||||
|
||||
|
||||
@@ -602,41 +587,16 @@ Package rerunfilecheck Warning: File `report.out' has changed.
|
||||
(rerunfilecheck) or use package `bookmark'.
|
||||
|
||||
Package rerunfilecheck Info: Checksums for `report.out':
|
||||
(rerunfilecheck) Before: <no file>
|
||||
(rerunfilecheck) Before: D41D8CD98F00B204E9800998ECF8427E;0
|
||||
(rerunfilecheck) After: A2A8A50B7B0BEEA9E24F458CB249099C;3723.
|
||||
)
|
||||
Here is how much of TeX's memory you used:
|
||||
12070 strings out of 473190
|
||||
190542 string characters out of 5719980
|
||||
588446 words of memory out of 5000000
|
||||
35134 multiletter control sequences out of 15000+600000
|
||||
573316 words of font info for 72 fonts, out of 8000000 for 9000
|
||||
1141 hyphenation exceptions out of 8191
|
||||
75i,10n,79p,580b,509s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||
<d:/settings/Language/texlive/2025/texmf-dist/fonts/type1/public/amsfonts/cm/
|
||||
cmmi10.pfb><d:/settings/Language/texlive/2025/texmf-dist/fonts/type1/public/ams
|
||||
fonts/cm/cmmi8.pfb><d:/settings/Language/texlive/2025/texmf-dist/fonts/type1/pu
|
||||
blic/amsfonts/cm/cmr10.pfb><d:/settings/Language/texlive/2025/texmf-dist/fonts/
|
||||
type1/public/amsfonts/cm/cmr8.pfb><d:/settings/Language/texlive/2025/texmf-dist
|
||||
/fonts/type1/public/amsfonts/cm/cmsy10.pfb><d:/settings/Language/texlive/2025/t
|
||||
exmf-dist/fonts/type1/public/amsfonts/cm/cmsy6.pfb><d:/settings/Language/texliv
|
||||
e/2025/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy8.pfb><d:/settings/Languag
|
||||
e/texlive/2025/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm10.pfb><d:/se
|
||||
ttings/Language/texlive/2025/texmf-dist/fonts/type1/public/cm-super/sfbx1000.pf
|
||||
b><d:/settings/Language/texlive/2025/texmf-dist/fonts/type1/public/cm-super/sfb
|
||||
x1095.pfb><d:/settings/Language/texlive/2025/texmf-dist/fonts/type1/public/cm-s
|
||||
uper/sfbx1200.pfb><d:/settings/Language/texlive/2025/texmf-dist/fonts/type1/pub
|
||||
lic/cm-super/sfbx1440.pfb><d:/settings/Language/texlive/2025/texmf-dist/fonts/t
|
||||
ype1/public/cm-super/sfrm1000.pfb><d:/settings/Language/texlive/2025/texmf-dist
|
||||
/fonts/type1/public/cm-super/sfrm1095.pfb><d:/settings/Language/texlive/2025/te
|
||||
xmf-dist/fonts/type1/public/cm-super/sfrm1200.pfb><d:/settings/Language/texlive
|
||||
/2025/texmf-dist/fonts/type1/public/cm-super/sfrm1728.pfb><d:/settings/Language
|
||||
/texlive/2025/texmf-dist/fonts/type1/public/cm-super/sfti1095.pfb><d:/settings/
|
||||
Language/texlive/2025/texmf-dist/fonts/type1/public/cm-super/sftt1095.pfb>
|
||||
Output written on report.pdf (7 pages, 278770 bytes).
|
||||
PDF statistics:
|
||||
188 PDF objects out of 1000 (max. 8388607)
|
||||
140 compressed objects within 2 object streams
|
||||
50 named destinations out of 1000 (max. 500000)
|
||||
1 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
15247 strings out of 473832
|
||||
312606 string characters out of 5733159
|
||||
745017 words of memory out of 5000000
|
||||
38133 multiletter control sequences out of 15000+600000
|
||||
566076 words of font info for 79 fonts, out of 8000000 for 9000
|
||||
1348 hyphenation exceptions out of 8191
|
||||
74i,10n,92p,586b,409s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||
|
||||
Output written on report.pdf (8 pages).
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
\documentclass[11pt,a4paper]{article}
|
||||
|
||||
% 包导入
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage{xeCJK}
|
||||
\usepackage{fontspec}
|
||||
\setCJKmainfont{SimSun}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{amsmath}
|
||||
\usepackage{amsfonts}
|
||||
@@ -18,7 +19,7 @@
|
||||
|
||||
% 标题信息
|
||||
\title{Deep Q-Network for Space Invaders: \\ A Deep Reinforcement Learning Approach}
|
||||
\author{[Your Name] \\ [Your Student ID]}
|
||||
\author{刘航宇 \\ Student ID: [Your Student ID]}
|
||||
\date{\today}
|
||||
|
||||
\begin{document}
|
||||
@@ -26,7 +27,7 @@
|
||||
\maketitle
|
||||
|
||||
\begin{abstract}
|
||||
This report presents the implementation and evaluation of a Deep Q-Network (DQN) agent for playing the Atari game Space Invaders. The agent was trained from scratch using Double DQN with experience replay and target network stabilization. After 2 million training steps, the agent achieved an average score of [X] on the Space Invaders environment, demonstrating competitive performance compared to baseline methods. This report details the algorithm selection, implementation details, experimental results, and analysis of the agent's performance.
|
||||
This report presents the implementation and evaluation of a Deep Q-Network (DQN) agent for playing the Atari game Space Invaders. The agent was trained from scratch using Double DQN with experience replay and target network stabilization. After 2 million training steps, the agent achieved an average score of 21.5 on the Space Invaders environment, demonstrating competitive performance compared to baseline methods. This report details the algorithm selection, implementation details, experimental results, and analysis of the agent's performance.
|
||||
\end{abstract}
|
||||
|
||||
\section{Introduction}
|
||||
@@ -187,12 +188,12 @@ Warmup Steps & 10,000 \\
|
||||
|
||||
\subsection{Training Performance}
|
||||
|
||||
The agent was trained for 2 million steps. Key observations:
|
||||
The agent was trained for 2 million steps on an NVIDIA RTX 4060 GPU. Key observations:
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{Initial Phase} (0-100K steps): Random exploration, average score around 10-15
|
||||
\item \textbf{Learning Phase} (100K-500K steps): Gradual improvement, score increases to 30-50
|
||||
\item \textbf{Convergence Phase} (500K-2M steps): Performance stabilizes around 100-200
|
||||
\item \textbf{Initial Phase} (0-100K steps): Random exploration with warmup, average score around 10-15
|
||||
\item \textbf{Learning Phase} (100K-600K steps): Gradual improvement, score increases to 15-19
|
||||
\item \textbf{Convergence Phase} (600K-2M steps): Performance fluctuates between 13-21, with best performance at 1.8M steps
|
||||
\end{itemize}
|
||||
|
||||
\begin{figure}[H]
|
||||
@@ -202,26 +203,44 @@ The agent was trained for 2 million steps. Key observations:
|
||||
\label{fig:training_curves}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.8\textwidth]{../plots/evaluation_curve.png}
|
||||
\caption{Evaluation reward at different training checkpoints with standard deviation error bars}
|
||||
\label{fig:evaluation_curve}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.8\textwidth]{../plots/epsilon_decay.png}
|
||||
\caption{Epsilon decay curve during training}
|
||||
\label{fig:epsilon_decay}
|
||||
\end{figure}
|
||||
|
||||
\subsection{Evaluation Results}
|
||||
|
||||
The trained agent was evaluated over 20 episodes:
|
||||
The trained agent was evaluated over 20 episodes at different training checkpoints:
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\begin{tabular}{@{}lc@{}}
|
||||
\begin{tabular}{@{}lcc@{}}
|
||||
\toprule
|
||||
\textbf{Metric} & \textbf{Value} \\
|
||||
\textbf{Checkpoint} & \textbf{Average Score} & \textbf{Std Dev} \\
|
||||
\midrule
|
||||
Average Score & [X] \\
|
||||
Standard Deviation & [Y] \\
|
||||
Maximum Score & [Z] \\
|
||||
Minimum Score & [W] \\
|
||||
100K steps & 17.80 & 5.23 \\
|
||||
600K steps & 19.00 & 4.12 \\
|
||||
1.2M steps & 18.40 & 6.22 \\
|
||||
1.8M steps & \textbf{21.50} & 4.98 \\
|
||||
2.0M steps (final) & 14.60 & 5.28 \\
|
||||
Best Model & 19.90 & 6.92 \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\caption{Evaluation results}
|
||||
\caption{Evaluation results at different training checkpoints}
|
||||
\label{tab:evaluation}
|
||||
\end{table}
|
||||
|
||||
The best performance was achieved at 1.8M training steps with an average score of 21.50. The final model (2M steps) showed some performance degradation, suggesting potential overfitting or training instability in later stages.
|
||||
|
||||
\subsection{Comparison with Baselines}
|
||||
|
||||
\begin{table}[H]
|
||||
@@ -231,8 +250,8 @@ Minimum Score & [W] \\
|
||||
\textbf{Method} & \textbf{Average Score} & \textbf{Training Time} \\
|
||||
\midrule
|
||||
Random Agent & $\sim$5 & N/A \\
|
||||
Our DQN & [X] & [Time] \\
|
||||
Stable-Baselines3 DQN & [SB3 Score] & [SB3 Time] \\
|
||||
Our DQN (Best) & 21.50 & $\sim$6 hours \\
|
||||
Our DQN (Final) & 14.60 & $\sim$6 hours \\
|
||||
Human Player & $\sim$200 & N/A \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
@@ -275,9 +294,9 @@ Future improvements could include:
|
||||
|
||||
\section{Conclusion}
|
||||
|
||||
This project successfully implemented a DQN agent for playing Space Invaders from raw pixel inputs. The agent achieved an average score of [X], demonstrating competitive performance compared to baseline methods. The implementation highlights the effectiveness of deep reinforcement learning for Atari games and provides a solid foundation for exploring more advanced algorithms.
|
||||
This project successfully implemented a DQN agent for playing Space Invaders from raw pixel inputs. The agent achieved an average score of 21.50 at the best checkpoint (1.8M steps), demonstrating competitive performance compared to random agents ($\sim$5). The implementation highlights the effectiveness of deep reinforcement learning for Atari games and provides a solid foundation for exploring more advanced algorithms.
|
||||
|
||||
The DQN algorithm, while relatively simple, remains a powerful approach for discrete action space problems. The key innovations of experience replay and target networks are crucial for stable training. Future work could explore more advanced variants like Rainbow DQN to further improve performance.
|
||||
The DQN algorithm, while relatively simple, remains a powerful approach for discrete action space problems. The key innovations of experience replay and target networks are crucial for stable training. The use of Double DQN helped reduce overestimation bias, though some performance fluctuation was observed during training. Future work could explore more advanced variants like Rainbow DQN, Prioritized Experience Replay, or Dueling DQN architecture to further improve performance and training stability.
|
||||
|
||||
\section*{References}
|
||||
|
||||
|
||||