1381 lines
214 KiB
Plaintext
1381 lines
214 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import sys\n",
|
|
"sys.path.append(\"../\")\n",
|
|
"from gcdata.gc import *\n",
|
|
"from gcdata.gc1 import *"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"['DSJC0500.5.txt', 'DSJC1000.9.txt', 'DSJC0500.1.txt', 'DSJC0250.1.txt', 'DSJC0125.9.txt', 'DSJC0250.5.txt', 'DSJC0125.5.txt', 'DSJC0250.9.txt', 'DSJC0125.1.txt', 'DSJC1000.1.txt', 'DSJC0500.9.txt', 'DSJC1000.5.txt']\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import os\n",
|
|
"import numpy as np\n",
|
|
"import time\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"# 获取gcdata目录下所有txt文件\n",
|
|
"data_dir = \"../\"\n",
|
|
"data_dir2 = \"../gcdata/\"\n",
|
|
"test_files = [f for f in os.listdir(data_dir2) if f.endswith('txt')]\n",
|
|
"print(test_files)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# 定义评估函数\n",
|
|
"def evaluate_coloring(coloring_func, adj_matrix):\n",
|
|
" \"\"\"评估图着色算法的性能\"\"\"\n",
|
|
" try:\n",
|
|
" # 计时并执行图着色\n",
|
|
" start_time = time.time()\n",
|
|
" colors = coloring_func(adj_matrix)\n",
|
|
" end_time = time.time()\n",
|
|
" execution_time = end_time - start_time\n",
|
|
" \n",
|
|
" # 检查解的合法性\n",
|
|
" n = len(adj_matrix)\n",
|
|
" for i in range(n):\n",
|
|
" for j in range(n):\n",
|
|
" if adj_matrix[i][j] == 1 and colors[i] == colors[j]:\n",
|
|
" print(f\"非法解:节点{i}和{j}相邻但颜色相同\")\n",
|
|
" return float('inf')\n",
|
|
" \n",
|
|
" # 计算使用的颜色数\n",
|
|
" num_colors = len(set(colors))\n",
|
|
" \n",
|
|
" print(f\"执行时间:{execution_time:.4f}秒, 使用颜色数:{num_colors}\")\n",
|
|
" return num_colors,execution_time\n",
|
|
" \n",
|
|
" except Exception as e:\n",
|
|
" print(f\"评估过程出错: {str(e)}\")\n",
|
|
" return float('inf')\n",
|
|
"\n",
|
|
"# 定义数据加载函数 \n",
|
|
"def load_graph_data(filename):\n",
|
|
" \"\"\"读取图着色问题数据\"\"\"\n",
|
|
" try:\n",
|
|
" filepath = os.path.join(data_dir2, filename)\n",
|
|
" with open(filepath, 'r') as f:\n",
|
|
" first_line = f.readline().strip().split()\n",
|
|
" n_vertices = int(first_line[0])\n",
|
|
" \n",
|
|
" adj_matrix = np.zeros((n_vertices, n_vertices), dtype=np.int32)\n",
|
|
" \n",
|
|
" for line in f:\n",
|
|
" v1, v2 = map(int, line.strip().split())\n",
|
|
" adj_matrix[v1][v2] = 1\n",
|
|
" adj_matrix[v2][v1] = 1\n",
|
|
" \n",
|
|
" return adj_matrix\n",
|
|
" \n",
|
|
" except Exception as e:\n",
|
|
" print(f\"读取数据出错: {str(e)}\")\n",
|
|
" return None"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
"测试实例: DSJC0500.5.txt\n",
|
|
"\n",
|
|
"使用算法: FunSearch-MCP\n",
|
|
"执行时间:0.0579秒, 使用颜色数:68\n",
|
|
"\n",
|
|
"使用算法: EoH-MCP\n",
|
|
"执行时间:18.2027秒, 使用颜色数:65\n",
|
|
"\n",
|
|
"使用算法: MEoH-MCP\n",
|
|
"执行时间:0.0938秒, 使用颜色数:72\n",
|
|
"\n",
|
|
"使用算法: AAE-MCP\n",
|
|
"执行时间:0.2781秒, 使用颜色数:65\n",
|
|
"\n",
|
|
"使用算法: Greedy\n",
|
|
"执行时间:0.0417秒, 使用颜色数:72\n",
|
|
"\n",
|
|
"使用算法: Welsh-Powell\n",
|
|
"执行时间:0.0708秒, 使用颜色数:71\n",
|
|
"\n",
|
|
"使用算法: DSATUR\n",
|
|
"执行时间:13.6344秒, 使用颜色数:65\n",
|
|
"\n",
|
|
"测试实例: DSJC1000.9.txt\n",
|
|
"\n",
|
|
"使用算法: FunSearch-MCP\n",
|
|
"执行时间:0.2167秒, 使用颜色数:316\n",
|
|
"\n",
|
|
"使用算法: EoH-MCP\n",
|
|
"执行时间:122.6014秒, 使用颜色数:299\n",
|
|
"\n",
|
|
"使用算法: MEoH-MCP\n",
|
|
"执行时间:1.1258秒, 使用颜色数:321\n",
|
|
"\n",
|
|
"使用算法: AAE-MCP\n",
|
|
"执行时间:0.6846秒, 使用颜色数:299\n",
|
|
"\n",
|
|
"使用算法: Greedy\n",
|
|
"执行时间:0.0872秒, 使用颜色数:321\n",
|
|
"\n",
|
|
"使用算法: Welsh-Powell\n",
|
|
"执行时间:0.4910秒, 使用颜色数:313\n",
|
|
"\n",
|
|
"使用算法: DSATUR\n",
|
|
"执行时间:61.6497秒, 使用颜色数:299\n",
|
|
"\n",
|
|
"测试实例: DSJC0500.1.txt\n",
|
|
"\n",
|
|
"使用算法: FunSearch-MCP\n",
|
|
"执行时间:0.0271秒, 使用颜色数:18\n",
|
|
"\n",
|
|
"使用算法: EoH-MCP\n",
|
|
"执行时间:8.2985秒, 使用颜色数:16\n",
|
|
"\n",
|
|
"使用算法: MEoH-MCP\n",
|
|
"执行时间:0.0060秒, 使用颜色数:20\n",
|
|
"\n",
|
|
"使用算法: AAE-MCP\n",
|
|
"执行时间:0.0395秒, 使用颜色数:16\n",
|
|
"\n",
|
|
"使用算法: Greedy\n",
|
|
"执行时间:0.0208秒, 使用颜色数:20\n",
|
|
"\n",
|
|
"使用算法: Welsh-Powell\n",
|
|
"执行时间:0.0193秒, 使用颜色数:18\n",
|
|
"\n",
|
|
"使用算法: DSATUR\n",
|
|
"执行时间:7.5141秒, 使用颜色数:16\n",
|
|
"\n",
|
|
"测试实例: DSJC0250.1.txt\n",
|
|
"\n",
|
|
"使用算法: FunSearch-MCP\n",
|
|
"执行时间:0.0059秒, 使用颜色数:12\n",
|
|
"\n",
|
|
"使用算法: EoH-MCP\n",
|
|
"执行时间:0.9747秒, 使用颜色数:10\n",
|
|
"\n",
|
|
"使用算法: MEoH-MCP\n",
|
|
"执行时间:0.0015秒, 使用颜色数:13\n",
|
|
"\n",
|
|
"使用算法: AAE-MCP\n",
|
|
"执行时间:0.0082秒, 使用颜色数:10\n",
|
|
"\n",
|
|
"使用算法: Greedy\n",
|
|
"执行时间:0.0048秒, 使用颜色数:13\n",
|
|
"\n",
|
|
"使用算法: Welsh-Powell\n",
|
|
"执行时间:0.0041秒, 使用颜色数:11\n",
|
|
"\n",
|
|
"使用算法: DSATUR\n",
|
|
"执行时间:0.8288秒, 使用颜色数:10\n",
|
|
"\n",
|
|
"测试实例: DSJC0125.9.txt\n",
|
|
"\n",
|
|
"使用算法: FunSearch-MCP\n",
|
|
"执行时间:0.0018秒, 使用颜色数:53\n",
|
|
"\n",
|
|
"使用算法: EoH-MCP\n",
|
|
"执行时间:0.1796秒, 使用颜色数:51\n",
|
|
"\n",
|
|
"使用算法: MEoH-MCP\n",
|
|
"执行时间:0.0047秒, 使用颜色数:56\n",
|
|
"\n",
|
|
"使用算法: AAE-MCP\n",
|
|
"执行时间:0.0083秒, 使用颜色数:51\n",
|
|
"\n",
|
|
"使用算法: Greedy\n",
|
|
"执行时间:0.0015秒, 使用颜色数:56\n",
|
|
"\n",
|
|
"使用算法: Welsh-Powell\n",
|
|
"执行时间:0.0027秒, 使用颜色数:53\n",
|
|
"\n",
|
|
"使用算法: DSATUR\n",
|
|
"执行时间:0.1214秒, 使用颜色数:51\n",
|
|
"\n",
|
|
"测试实例: DSJC0250.5.txt\n",
|
|
"\n",
|
|
"使用算法: FunSearch-MCP\n",
|
|
"执行时间:0.0062秒, 使用颜色数:40\n",
|
|
"\n",
|
|
"使用算法: EoH-MCP\n",
|
|
"执行时间:1.2001秒, 使用颜色数:37\n",
|
|
"\n",
|
|
"使用算法: MEoH-MCP\n",
|
|
"执行时间:0.0080秒, 使用颜色数:43\n",
|
|
"\n",
|
|
"使用算法: AAE-MCP\n",
|
|
"执行时间:0.0207秒, 使用颜色数:37\n",
|
|
"\n",
|
|
"使用算法: Greedy\n",
|
|
"执行时间:0.0052秒, 使用颜色数:43\n",
|
|
"\n",
|
|
"使用算法: Welsh-Powell\n",
|
|
"执行时间:0.0065秒, 使用颜色数:41\n",
|
|
"\n",
|
|
"使用算法: DSATUR\n",
|
|
"执行时间:0.9142秒, 使用颜色数:37\n",
|
|
"\n",
|
|
"测试实例: DSJC0125.5.txt\n",
|
|
"\n",
|
|
"使用算法: FunSearch-MCP\n",
|
|
"执行时间:0.0016秒, 使用颜色数:24\n",
|
|
"\n",
|
|
"使用算法: EoH-MCP\n",
|
|
"执行时间:0.1555秒, 使用颜色数:22\n",
|
|
"\n",
|
|
"使用算法: MEoH-MCP\n",
|
|
"执行时间:0.0018秒, 使用颜色数:26\n",
|
|
"\n",
|
|
"使用算法: AAE-MCP\n",
|
|
"执行时间:0.0051秒, 使用颜色数:22\n",
|
|
"\n",
|
|
"使用算法: Greedy\n",
|
|
"执行时间:0.0014秒, 使用颜色数:26\n",
|
|
"\n",
|
|
"使用算法: Welsh-Powell\n",
|
|
"执行时间:0.0013秒, 使用颜色数:23\n",
|
|
"\n",
|
|
"使用算法: DSATUR\n",
|
|
"执行时间:0.1308秒, 使用颜色数:22\n",
|
|
"\n",
|
|
"测试实例: DSJC0250.9.txt\n",
|
|
"\n",
|
|
"使用算法: FunSearch-MCP\n",
|
|
"执行时间:0.0065秒, 使用颜色数:92\n",
|
|
"\n",
|
|
"使用算法: EoH-MCP\n",
|
|
"执行时间:1.4176秒, 使用颜色数:92\n",
|
|
"\n",
|
|
"使用算法: MEoH-MCP\n",
|
|
"执行时间:0.0281秒, 使用颜色数:99\n",
|
|
"\n",
|
|
"使用算法: AAE-MCP\n",
|
|
"执行时间:0.0361秒, 使用颜色数:92\n",
|
|
"\n",
|
|
"使用算法: Greedy\n",
|
|
"执行时间:0.0054秒, 使用颜色数:99\n",
|
|
"\n",
|
|
"使用算法: Welsh-Powell\n",
|
|
"执行时间:0.0130秒, 使用颜色数:93\n",
|
|
"\n",
|
|
"使用算法: DSATUR\n",
|
|
"执行时间:0.9777秒, 使用颜色数:92\n",
|
|
"\n",
|
|
"测试实例: DSJC0125.1.txt\n",
|
|
"\n",
|
|
"使用算法: FunSearch-MCP\n",
|
|
"执行时间:0.0016秒, 使用颜色数:7\n",
|
|
"\n",
|
|
"使用算法: EoH-MCP\n",
|
|
"执行时间:0.2009秒, 使用颜色数:6\n",
|
|
"\n",
|
|
"使用算法: MEoH-MCP\n",
|
|
"执行时间:0.0006秒, 使用颜色数:8\n",
|
|
"\n",
|
|
"使用算法: AAE-MCP\n",
|
|
"执行时间:0.0059秒, 使用颜色数:6\n",
|
|
"\n",
|
|
"使用算法: Greedy\n",
|
|
"执行时间:0.0028秒, 使用颜色数:8\n",
|
|
"\n",
|
|
"使用算法: Welsh-Powell\n",
|
|
"执行时间:0.0022秒, 使用颜色数:7\n",
|
|
"\n",
|
|
"使用算法: DSATUR\n",
|
|
"执行时间:0.2098秒, 使用颜色数:6\n",
|
|
"\n",
|
|
"测试实例: DSJC1000.1.txt\n",
|
|
"\n",
|
|
"使用算法: FunSearch-MCP\n",
|
|
"执行时间:0.1945秒, 使用颜色数:29\n",
|
|
"\n",
|
|
"使用算法: EoH-MCP\n",
|
|
"执行时间:67.5939秒, 使用颜色数:27\n",
|
|
"\n",
|
|
"使用算法: MEoH-MCP\n",
|
|
"执行时间:0.0318秒, 使用颜色数:31\n",
|
|
"\n",
|
|
"使用算法: AAE-MCP\n",
|
|
"执行时间:0.1373秒, 使用颜色数:27\n",
|
|
"\n",
|
|
"使用算法: Greedy\n",
|
|
"执行时间:0.0780秒, 使用颜色数:31\n",
|
|
"\n",
|
|
"使用算法: Welsh-Powell\n",
|
|
"执行时间:0.0838秒, 使用颜色数:29\n",
|
|
"\n",
|
|
"使用算法: DSATUR\n",
|
|
"执行时间:57.1171秒, 使用颜色数:27\n",
|
|
"\n",
|
|
"测试实例: DSJC0500.9.txt\n",
|
|
"\n",
|
|
"使用算法: FunSearch-MCP\n",
|
|
"执行时间:0.0266秒, 使用颜色数:171\n",
|
|
"\n",
|
|
"使用算法: EoH-MCP\n",
|
|
"执行时间:11.5300秒, 使用颜色数:170\n",
|
|
"\n",
|
|
"使用算法: MEoH-MCP\n",
|
|
"执行时间:0.1568秒, 使用颜色数:175\n",
|
|
"\n",
|
|
"使用算法: AAE-MCP\n",
|
|
"执行时间:0.1534秒, 使用颜色数:170\n",
|
|
"\n",
|
|
"使用算法: Greedy\n",
|
|
"执行时间:0.0220秒, 使用颜色数:175\n",
|
|
"\n",
|
|
"使用算法: Welsh-Powell\n",
|
|
"执行时间:0.0806秒, 使用颜色数:169\n",
|
|
"\n",
|
|
"使用算法: DSATUR\n",
|
|
"执行时间:7.5806秒, 使用颜色数:170\n",
|
|
"\n",
|
|
"测试实例: DSJC1000.5.txt\n",
|
|
"\n",
|
|
"使用算法: FunSearch-MCP\n",
|
|
"执行时间:0.1027秒, 使用颜色数:123\n",
|
|
"\n",
|
|
"使用算法: EoH-MCP\n",
|
|
"执行时间:86.2889秒, 使用颜色数:115\n",
|
|
"\n",
|
|
"使用算法: MEoH-MCP\n",
|
|
"执行时间:0.2535秒, 使用颜色数:127\n",
|
|
"\n",
|
|
"使用算法: AAE-MCP\n",
|
|
"执行时间:0.3925秒, 使用颜色数:115\n",
|
|
"\n",
|
|
"使用算法: Greedy\n",
|
|
"执行时间:0.0824秒, 使用颜色数:127\n",
|
|
"\n",
|
|
"使用算法: Welsh-Powell\n",
|
|
"执行时间:0.1860秒, 使用颜色数:121\n",
|
|
"\n",
|
|
"使用算法: DSATUR\n",
|
|
"执行时间:62.1337秒, 使用颜色数:115\n",
|
|
"\n",
|
|
"所有算法在各个实例上的表现:\n",
|
|
"\n",
|
|
"FunSearch-MCP:\n",
|
|
" DSJC0500.5.txt: 使用颜色数 = 68\n",
|
|
" DSJC1000.9.txt: 使用颜色数 = 316\n",
|
|
" DSJC0500.1.txt: 使用颜色数 = 18\n",
|
|
" DSJC0250.1.txt: 使用颜色数 = 12\n",
|
|
" DSJC0125.9.txt: 使用颜色数 = 53\n",
|
|
" DSJC0250.5.txt: 使用颜色数 = 40\n",
|
|
" DSJC0125.5.txt: 使用颜色数 = 24\n",
|
|
" DSJC0250.9.txt: 使用颜色数 = 92\n",
|
|
" DSJC0125.1.txt: 使用颜色数 = 7\n",
|
|
" DSJC1000.1.txt: 使用颜色数 = 29\n",
|
|
" DSJC0500.9.txt: 使用颜色数 = 171\n",
|
|
" DSJC1000.5.txt: 使用颜色数 = 123\n",
|
|
" FunSearch-MCP: 执行时间 = {'DSJC0500.5.txt': 0.057862043380737305, 'DSJC1000.9.txt': 0.21670818328857422, 'DSJC0500.1.txt': 0.027055978775024414, 'DSJC0250.1.txt': 0.005907773971557617, 'DSJC0125.9.txt': 0.0018310546875, 'DSJC0250.5.txt': 0.006178855895996094, 'DSJC0125.5.txt': 0.0016169548034667969, 'DSJC0250.9.txt': 0.006543159484863281, 'DSJC0125.1.txt': 0.0015578269958496094, 'DSJC1000.1.txt': 0.19445085525512695, 'DSJC0500.9.txt': 0.026648759841918945, 'DSJC1000.5.txt': 0.10271525382995605}\n",
|
|
" EoH-MCP: 执行时间 = {'DSJC0500.5.txt': 18.20269513130188, 'DSJC1000.9.txt': 122.60140109062195, 'DSJC0500.1.txt': 8.298484086990356, 'DSJC0250.1.txt': 0.9747259616851807, 'DSJC0125.9.txt': 0.17962121963500977, 'DSJC0250.5.txt': 1.2000939846038818, 'DSJC0125.5.txt': 0.15546917915344238, 'DSJC0250.9.txt': 1.4175689220428467, 'DSJC0125.1.txt': 0.2008528709411621, 'DSJC1000.1.txt': 67.5939428806305, 'DSJC0500.9.txt': 11.530013084411621, 'DSJC1000.5.txt': 86.28894186019897}\n",
|
|
" MEoH-MCP: 执行时间 = {'DSJC0500.5.txt': 0.09375882148742676, 'DSJC1000.9.txt': 1.1257750988006592, 'DSJC0500.1.txt': 0.005967140197753906, 'DSJC0250.1.txt': 0.0014951229095458984, 'DSJC0125.9.txt': 0.0046842098236083984, 'DSJC0250.5.txt': 0.008018016815185547, 'DSJC0125.5.txt': 0.0017600059509277344, 'DSJC0250.9.txt': 0.02807331085205078, 'DSJC0125.1.txt': 0.0006096363067626953, 'DSJC1000.1.txt': 0.03177499771118164, 'DSJC0500.9.txt': 0.15678906440734863, 'DSJC1000.5.txt': 0.25353002548217773}\n",
|
|
" AAE-MCP: 执行时间 = {'DSJC0500.5.txt': 0.27809929847717285, 'DSJC1000.9.txt': 0.6846380233764648, 'DSJC0500.1.txt': 0.03948807716369629, 'DSJC0250.1.txt': 0.008155107498168945, 'DSJC0125.9.txt': 0.008310079574584961, 'DSJC0250.5.txt': 0.02069091796875, 'DSJC0125.5.txt': 0.005082130432128906, 'DSJC0250.9.txt': 0.03608989715576172, 'DSJC0125.1.txt': 0.005899906158447266, 'DSJC1000.1.txt': 0.13730883598327637, 'DSJC0500.9.txt': 0.1533823013305664, 'DSJC1000.5.txt': 0.3924710750579834}\n",
|
|
" Greedy: 执行时间 = {'DSJC0500.5.txt': 0.04168081283569336, 'DSJC1000.9.txt': 0.08718514442443848, 'DSJC0500.1.txt': 0.02080392837524414, 'DSJC0250.1.txt': 0.004765987396240234, 'DSJC0125.9.txt': 0.0015120506286621094, 'DSJC0250.5.txt': 0.005215167999267578, 'DSJC0125.5.txt': 0.0014150142669677734, 'DSJC0250.9.txt': 0.005381107330322266, 'DSJC0125.1.txt': 0.0027589797973632812, 'DSJC1000.1.txt': 0.07802486419677734, 'DSJC0500.9.txt': 0.02198195457458496, 'DSJC1000.5.txt': 0.08238601684570312}\n",
|
|
" Welsh-Powell: 执行时间 = {'DSJC0500.5.txt': 0.0707998275756836, 'DSJC1000.9.txt': 0.491008996963501, 'DSJC0500.1.txt': 0.01932525634765625, 'DSJC0250.1.txt': 0.004117012023925781, 'DSJC0125.9.txt': 0.002706766128540039, 'DSJC0250.5.txt': 0.0064661502838134766, 'DSJC0125.5.txt': 0.0013499259948730469, 'DSJC0250.9.txt': 0.013007879257202148, 'DSJC0125.1.txt': 0.002179861068725586, 'DSJC1000.1.txt': 0.0838019847869873, 'DSJC0500.9.txt': 0.08063507080078125, 'DSJC1000.5.txt': 0.18603014945983887}\n",
|
|
" DSATUR: 执行时间 = {'DSJC0500.5.txt': 13.63444995880127, 'DSJC1000.9.txt': 61.64974927902222, 'DSJC0500.1.txt': 7.514086961746216, 'DSJC0250.1.txt': 0.8288030624389648, 'DSJC0125.9.txt': 0.12142586708068848, 'DSJC0250.5.txt': 0.9142141342163086, 'DSJC0125.5.txt': 0.13076090812683105, 'DSJC0250.9.txt': 0.9776561260223389, 'DSJC0125.1.txt': 0.20984697341918945, 'DSJC1000.1.txt': 57.11710214614868, 'DSJC0500.9.txt': 7.5806498527526855, 'DSJC1000.5.txt': 62.13368821144104}\n",
|
|
"\n",
|
|
"EoH-MCP:\n",
|
|
" DSJC0500.5.txt: 使用颜色数 = 65\n",
|
|
" DSJC1000.9.txt: 使用颜色数 = 299\n",
|
|
" DSJC0500.1.txt: 使用颜色数 = 16\n",
|
|
" DSJC0250.1.txt: 使用颜色数 = 10\n",
|
|
" DSJC0125.9.txt: 使用颜色数 = 51\n",
|
|
" DSJC0250.5.txt: 使用颜色数 = 37\n",
|
|
" DSJC0125.5.txt: 使用颜色数 = 22\n",
|
|
" DSJC0250.9.txt: 使用颜色数 = 92\n",
|
|
" DSJC0125.1.txt: 使用颜色数 = 6\n",
|
|
" DSJC1000.1.txt: 使用颜色数 = 27\n",
|
|
" DSJC0500.9.txt: 使用颜色数 = 170\n",
|
|
" DSJC1000.5.txt: 使用颜色数 = 115\n",
|
|
" FunSearch-MCP: 执行时间 = {'DSJC0500.5.txt': 0.057862043380737305, 'DSJC1000.9.txt': 0.21670818328857422, 'DSJC0500.1.txt': 0.027055978775024414, 'DSJC0250.1.txt': 0.005907773971557617, 'DSJC0125.9.txt': 0.0018310546875, 'DSJC0250.5.txt': 0.006178855895996094, 'DSJC0125.5.txt': 0.0016169548034667969, 'DSJC0250.9.txt': 0.006543159484863281, 'DSJC0125.1.txt': 0.0015578269958496094, 'DSJC1000.1.txt': 0.19445085525512695, 'DSJC0500.9.txt': 0.026648759841918945, 'DSJC1000.5.txt': 0.10271525382995605}\n",
|
|
" EoH-MCP: 执行时间 = {'DSJC0500.5.txt': 18.20269513130188, 'DSJC1000.9.txt': 122.60140109062195, 'DSJC0500.1.txt': 8.298484086990356, 'DSJC0250.1.txt': 0.9747259616851807, 'DSJC0125.9.txt': 0.17962121963500977, 'DSJC0250.5.txt': 1.2000939846038818, 'DSJC0125.5.txt': 0.15546917915344238, 'DSJC0250.9.txt': 1.4175689220428467, 'DSJC0125.1.txt': 0.2008528709411621, 'DSJC1000.1.txt': 67.5939428806305, 'DSJC0500.9.txt': 11.530013084411621, 'DSJC1000.5.txt': 86.28894186019897}\n",
|
|
" MEoH-MCP: 执行时间 = {'DSJC0500.5.txt': 0.09375882148742676, 'DSJC1000.9.txt': 1.1257750988006592, 'DSJC0500.1.txt': 0.005967140197753906, 'DSJC0250.1.txt': 0.0014951229095458984, 'DSJC0125.9.txt': 0.0046842098236083984, 'DSJC0250.5.txt': 0.008018016815185547, 'DSJC0125.5.txt': 0.0017600059509277344, 'DSJC0250.9.txt': 0.02807331085205078, 'DSJC0125.1.txt': 0.0006096363067626953, 'DSJC1000.1.txt': 0.03177499771118164, 'DSJC0500.9.txt': 0.15678906440734863, 'DSJC1000.5.txt': 0.25353002548217773}\n",
|
|
" AAE-MCP: 执行时间 = {'DSJC0500.5.txt': 0.27809929847717285, 'DSJC1000.9.txt': 0.6846380233764648, 'DSJC0500.1.txt': 0.03948807716369629, 'DSJC0250.1.txt': 0.008155107498168945, 'DSJC0125.9.txt': 0.008310079574584961, 'DSJC0250.5.txt': 0.02069091796875, 'DSJC0125.5.txt': 0.005082130432128906, 'DSJC0250.9.txt': 0.03608989715576172, 'DSJC0125.1.txt': 0.005899906158447266, 'DSJC1000.1.txt': 0.13730883598327637, 'DSJC0500.9.txt': 0.1533823013305664, 'DSJC1000.5.txt': 0.3924710750579834}\n",
|
|
" Greedy: 执行时间 = {'DSJC0500.5.txt': 0.04168081283569336, 'DSJC1000.9.txt': 0.08718514442443848, 'DSJC0500.1.txt': 0.02080392837524414, 'DSJC0250.1.txt': 0.004765987396240234, 'DSJC0125.9.txt': 0.0015120506286621094, 'DSJC0250.5.txt': 0.005215167999267578, 'DSJC0125.5.txt': 0.0014150142669677734, 'DSJC0250.9.txt': 0.005381107330322266, 'DSJC0125.1.txt': 0.0027589797973632812, 'DSJC1000.1.txt': 0.07802486419677734, 'DSJC0500.9.txt': 0.02198195457458496, 'DSJC1000.5.txt': 0.08238601684570312}\n",
|
|
" Welsh-Powell: 执行时间 = {'DSJC0500.5.txt': 0.0707998275756836, 'DSJC1000.9.txt': 0.491008996963501, 'DSJC0500.1.txt': 0.01932525634765625, 'DSJC0250.1.txt': 0.004117012023925781, 'DSJC0125.9.txt': 0.002706766128540039, 'DSJC0250.5.txt': 0.0064661502838134766, 'DSJC0125.5.txt': 0.0013499259948730469, 'DSJC0250.9.txt': 0.013007879257202148, 'DSJC0125.1.txt': 0.002179861068725586, 'DSJC1000.1.txt': 0.0838019847869873, 'DSJC0500.9.txt': 0.08063507080078125, 'DSJC1000.5.txt': 0.18603014945983887}\n",
|
|
" DSATUR: 执行时间 = {'DSJC0500.5.txt': 13.63444995880127, 'DSJC1000.9.txt': 61.64974927902222, 'DSJC0500.1.txt': 7.514086961746216, 'DSJC0250.1.txt': 0.8288030624389648, 'DSJC0125.9.txt': 0.12142586708068848, 'DSJC0250.5.txt': 0.9142141342163086, 'DSJC0125.5.txt': 0.13076090812683105, 'DSJC0250.9.txt': 0.9776561260223389, 'DSJC0125.1.txt': 0.20984697341918945, 'DSJC1000.1.txt': 57.11710214614868, 'DSJC0500.9.txt': 7.5806498527526855, 'DSJC1000.5.txt': 62.13368821144104}\n",
|
|
"\n",
|
|
"MEoH-MCP:\n",
|
|
" DSJC0500.5.txt: 使用颜色数 = 72\n",
|
|
" DSJC1000.9.txt: 使用颜色数 = 321\n",
|
|
" DSJC0500.1.txt: 使用颜色数 = 20\n",
|
|
" DSJC0250.1.txt: 使用颜色数 = 13\n",
|
|
" DSJC0125.9.txt: 使用颜色数 = 56\n",
|
|
" DSJC0250.5.txt: 使用颜色数 = 43\n",
|
|
" DSJC0125.5.txt: 使用颜色数 = 26\n",
|
|
" DSJC0250.9.txt: 使用颜色数 = 99\n",
|
|
" DSJC0125.1.txt: 使用颜色数 = 8\n",
|
|
" DSJC1000.1.txt: 使用颜色数 = 31\n",
|
|
" DSJC0500.9.txt: 使用颜色数 = 175\n",
|
|
" DSJC1000.5.txt: 使用颜色数 = 127\n",
|
|
" FunSearch-MCP: 执行时间 = {'DSJC0500.5.txt': 0.057862043380737305, 'DSJC1000.9.txt': 0.21670818328857422, 'DSJC0500.1.txt': 0.027055978775024414, 'DSJC0250.1.txt': 0.005907773971557617, 'DSJC0125.9.txt': 0.0018310546875, 'DSJC0250.5.txt': 0.006178855895996094, 'DSJC0125.5.txt': 0.0016169548034667969, 'DSJC0250.9.txt': 0.006543159484863281, 'DSJC0125.1.txt': 0.0015578269958496094, 'DSJC1000.1.txt': 0.19445085525512695, 'DSJC0500.9.txt': 0.026648759841918945, 'DSJC1000.5.txt': 0.10271525382995605}\n",
|
|
" EoH-MCP: 执行时间 = {'DSJC0500.5.txt': 18.20269513130188, 'DSJC1000.9.txt': 122.60140109062195, 'DSJC0500.1.txt': 8.298484086990356, 'DSJC0250.1.txt': 0.9747259616851807, 'DSJC0125.9.txt': 0.17962121963500977, 'DSJC0250.5.txt': 1.2000939846038818, 'DSJC0125.5.txt': 0.15546917915344238, 'DSJC0250.9.txt': 1.4175689220428467, 'DSJC0125.1.txt': 0.2008528709411621, 'DSJC1000.1.txt': 67.5939428806305, 'DSJC0500.9.txt': 11.530013084411621, 'DSJC1000.5.txt': 86.28894186019897}\n",
|
|
" MEoH-MCP: 执行时间 = {'DSJC0500.5.txt': 0.09375882148742676, 'DSJC1000.9.txt': 1.1257750988006592, 'DSJC0500.1.txt': 0.005967140197753906, 'DSJC0250.1.txt': 0.0014951229095458984, 'DSJC0125.9.txt': 0.0046842098236083984, 'DSJC0250.5.txt': 0.008018016815185547, 'DSJC0125.5.txt': 0.0017600059509277344, 'DSJC0250.9.txt': 0.02807331085205078, 'DSJC0125.1.txt': 0.0006096363067626953, 'DSJC1000.1.txt': 0.03177499771118164, 'DSJC0500.9.txt': 0.15678906440734863, 'DSJC1000.5.txt': 0.25353002548217773}\n",
|
|
" AAE-MCP: 执行时间 = {'DSJC0500.5.txt': 0.27809929847717285, 'DSJC1000.9.txt': 0.6846380233764648, 'DSJC0500.1.txt': 0.03948807716369629, 'DSJC0250.1.txt': 0.008155107498168945, 'DSJC0125.9.txt': 0.008310079574584961, 'DSJC0250.5.txt': 0.02069091796875, 'DSJC0125.5.txt': 0.005082130432128906, 'DSJC0250.9.txt': 0.03608989715576172, 'DSJC0125.1.txt': 0.005899906158447266, 'DSJC1000.1.txt': 0.13730883598327637, 'DSJC0500.9.txt': 0.1533823013305664, 'DSJC1000.5.txt': 0.3924710750579834}\n",
|
|
" Greedy: 执行时间 = {'DSJC0500.5.txt': 0.04168081283569336, 'DSJC1000.9.txt': 0.08718514442443848, 'DSJC0500.1.txt': 0.02080392837524414, 'DSJC0250.1.txt': 0.004765987396240234, 'DSJC0125.9.txt': 0.0015120506286621094, 'DSJC0250.5.txt': 0.005215167999267578, 'DSJC0125.5.txt': 0.0014150142669677734, 'DSJC0250.9.txt': 0.005381107330322266, 'DSJC0125.1.txt': 0.0027589797973632812, 'DSJC1000.1.txt': 0.07802486419677734, 'DSJC0500.9.txt': 0.02198195457458496, 'DSJC1000.5.txt': 0.08238601684570312}\n",
|
|
" Welsh-Powell: 执行时间 = {'DSJC0500.5.txt': 0.0707998275756836, 'DSJC1000.9.txt': 0.491008996963501, 'DSJC0500.1.txt': 0.01932525634765625, 'DSJC0250.1.txt': 0.004117012023925781, 'DSJC0125.9.txt': 0.002706766128540039, 'DSJC0250.5.txt': 0.0064661502838134766, 'DSJC0125.5.txt': 0.0013499259948730469, 'DSJC0250.9.txt': 0.013007879257202148, 'DSJC0125.1.txt': 0.002179861068725586, 'DSJC1000.1.txt': 0.0838019847869873, 'DSJC0500.9.txt': 0.08063507080078125, 'DSJC1000.5.txt': 0.18603014945983887}\n",
|
|
" DSATUR: 执行时间 = {'DSJC0500.5.txt': 13.63444995880127, 'DSJC1000.9.txt': 61.64974927902222, 'DSJC0500.1.txt': 7.514086961746216, 'DSJC0250.1.txt': 0.8288030624389648, 'DSJC0125.9.txt': 0.12142586708068848, 'DSJC0250.5.txt': 0.9142141342163086, 'DSJC0125.5.txt': 0.13076090812683105, 'DSJC0250.9.txt': 0.9776561260223389, 'DSJC0125.1.txt': 0.20984697341918945, 'DSJC1000.1.txt': 57.11710214614868, 'DSJC0500.9.txt': 7.5806498527526855, 'DSJC1000.5.txt': 62.13368821144104}\n",
|
|
"\n",
|
|
"AAE-MCP:\n",
|
|
" DSJC0500.5.txt: 使用颜色数 = 65\n",
|
|
" DSJC1000.9.txt: 使用颜色数 = 299\n",
|
|
" DSJC0500.1.txt: 使用颜色数 = 16\n",
|
|
" DSJC0250.1.txt: 使用颜色数 = 10\n",
|
|
" DSJC0125.9.txt: 使用颜色数 = 51\n",
|
|
" DSJC0250.5.txt: 使用颜色数 = 37\n",
|
|
" DSJC0125.5.txt: 使用颜色数 = 22\n",
|
|
" DSJC0250.9.txt: 使用颜色数 = 92\n",
|
|
" DSJC0125.1.txt: 使用颜色数 = 6\n",
|
|
" DSJC1000.1.txt: 使用颜色数 = 27\n",
|
|
" DSJC0500.9.txt: 使用颜色数 = 170\n",
|
|
" DSJC1000.5.txt: 使用颜色数 = 115\n",
|
|
" FunSearch-MCP: 执行时间 = {'DSJC0500.5.txt': 0.057862043380737305, 'DSJC1000.9.txt': 0.21670818328857422, 'DSJC0500.1.txt': 0.027055978775024414, 'DSJC0250.1.txt': 0.005907773971557617, 'DSJC0125.9.txt': 0.0018310546875, 'DSJC0250.5.txt': 0.006178855895996094, 'DSJC0125.5.txt': 0.0016169548034667969, 'DSJC0250.9.txt': 0.006543159484863281, 'DSJC0125.1.txt': 0.0015578269958496094, 'DSJC1000.1.txt': 0.19445085525512695, 'DSJC0500.9.txt': 0.026648759841918945, 'DSJC1000.5.txt': 0.10271525382995605}\n",
|
|
" EoH-MCP: 执行时间 = {'DSJC0500.5.txt': 18.20269513130188, 'DSJC1000.9.txt': 122.60140109062195, 'DSJC0500.1.txt': 8.298484086990356, 'DSJC0250.1.txt': 0.9747259616851807, 'DSJC0125.9.txt': 0.17962121963500977, 'DSJC0250.5.txt': 1.2000939846038818, 'DSJC0125.5.txt': 0.15546917915344238, 'DSJC0250.9.txt': 1.4175689220428467, 'DSJC0125.1.txt': 0.2008528709411621, 'DSJC1000.1.txt': 67.5939428806305, 'DSJC0500.9.txt': 11.530013084411621, 'DSJC1000.5.txt': 86.28894186019897}\n",
|
|
" MEoH-MCP: 执行时间 = {'DSJC0500.5.txt': 0.09375882148742676, 'DSJC1000.9.txt': 1.1257750988006592, 'DSJC0500.1.txt': 0.005967140197753906, 'DSJC0250.1.txt': 0.0014951229095458984, 'DSJC0125.9.txt': 0.0046842098236083984, 'DSJC0250.5.txt': 0.008018016815185547, 'DSJC0125.5.txt': 0.0017600059509277344, 'DSJC0250.9.txt': 0.02807331085205078, 'DSJC0125.1.txt': 0.0006096363067626953, 'DSJC1000.1.txt': 0.03177499771118164, 'DSJC0500.9.txt': 0.15678906440734863, 'DSJC1000.5.txt': 0.25353002548217773}\n",
|
|
" AAE-MCP: 执行时间 = {'DSJC0500.5.txt': 0.27809929847717285, 'DSJC1000.9.txt': 0.6846380233764648, 'DSJC0500.1.txt': 0.03948807716369629, 'DSJC0250.1.txt': 0.008155107498168945, 'DSJC0125.9.txt': 0.008310079574584961, 'DSJC0250.5.txt': 0.02069091796875, 'DSJC0125.5.txt': 0.005082130432128906, 'DSJC0250.9.txt': 0.03608989715576172, 'DSJC0125.1.txt': 0.005899906158447266, 'DSJC1000.1.txt': 0.13730883598327637, 'DSJC0500.9.txt': 0.1533823013305664, 'DSJC1000.5.txt': 0.3924710750579834}\n",
|
|
" Greedy: 执行时间 = {'DSJC0500.5.txt': 0.04168081283569336, 'DSJC1000.9.txt': 0.08718514442443848, 'DSJC0500.1.txt': 0.02080392837524414, 'DSJC0250.1.txt': 0.004765987396240234, 'DSJC0125.9.txt': 0.0015120506286621094, 'DSJC0250.5.txt': 0.005215167999267578, 'DSJC0125.5.txt': 0.0014150142669677734, 'DSJC0250.9.txt': 0.005381107330322266, 'DSJC0125.1.txt': 0.0027589797973632812, 'DSJC1000.1.txt': 0.07802486419677734, 'DSJC0500.9.txt': 0.02198195457458496, 'DSJC1000.5.txt': 0.08238601684570312}\n",
|
|
" Welsh-Powell: 执行时间 = {'DSJC0500.5.txt': 0.0707998275756836, 'DSJC1000.9.txt': 0.491008996963501, 'DSJC0500.1.txt': 0.01932525634765625, 'DSJC0250.1.txt': 0.004117012023925781, 'DSJC0125.9.txt': 0.002706766128540039, 'DSJC0250.5.txt': 0.0064661502838134766, 'DSJC0125.5.txt': 0.0013499259948730469, 'DSJC0250.9.txt': 0.013007879257202148, 'DSJC0125.1.txt': 0.002179861068725586, 'DSJC1000.1.txt': 0.0838019847869873, 'DSJC0500.9.txt': 0.08063507080078125, 'DSJC1000.5.txt': 0.18603014945983887}\n",
|
|
" DSATUR: 执行时间 = {'DSJC0500.5.txt': 13.63444995880127, 'DSJC1000.9.txt': 61.64974927902222, 'DSJC0500.1.txt': 7.514086961746216, 'DSJC0250.1.txt': 0.8288030624389648, 'DSJC0125.9.txt': 0.12142586708068848, 'DSJC0250.5.txt': 0.9142141342163086, 'DSJC0125.5.txt': 0.13076090812683105, 'DSJC0250.9.txt': 0.9776561260223389, 'DSJC0125.1.txt': 0.20984697341918945, 'DSJC1000.1.txt': 57.11710214614868, 'DSJC0500.9.txt': 7.5806498527526855, 'DSJC1000.5.txt': 62.13368821144104}\n",
|
|
"\n",
|
|
"Greedy:\n",
|
|
" DSJC0500.5.txt: 使用颜色数 = 72\n",
|
|
" DSJC1000.9.txt: 使用颜色数 = 321\n",
|
|
" DSJC0500.1.txt: 使用颜色数 = 20\n",
|
|
" DSJC0250.1.txt: 使用颜色数 = 13\n",
|
|
" DSJC0125.9.txt: 使用颜色数 = 56\n",
|
|
" DSJC0250.5.txt: 使用颜色数 = 43\n",
|
|
" DSJC0125.5.txt: 使用颜色数 = 26\n",
|
|
" DSJC0250.9.txt: 使用颜色数 = 99\n",
|
|
" DSJC0125.1.txt: 使用颜色数 = 8\n",
|
|
" DSJC1000.1.txt: 使用颜色数 = 31\n",
|
|
" DSJC0500.9.txt: 使用颜色数 = 175\n",
|
|
" DSJC1000.5.txt: 使用颜色数 = 127\n",
|
|
" FunSearch-MCP: 执行时间 = {'DSJC0500.5.txt': 0.057862043380737305, 'DSJC1000.9.txt': 0.21670818328857422, 'DSJC0500.1.txt': 0.027055978775024414, 'DSJC0250.1.txt': 0.005907773971557617, 'DSJC0125.9.txt': 0.0018310546875, 'DSJC0250.5.txt': 0.006178855895996094, 'DSJC0125.5.txt': 0.0016169548034667969, 'DSJC0250.9.txt': 0.006543159484863281, 'DSJC0125.1.txt': 0.0015578269958496094, 'DSJC1000.1.txt': 0.19445085525512695, 'DSJC0500.9.txt': 0.026648759841918945, 'DSJC1000.5.txt': 0.10271525382995605}\n",
|
|
" EoH-MCP: 执行时间 = {'DSJC0500.5.txt': 18.20269513130188, 'DSJC1000.9.txt': 122.60140109062195, 'DSJC0500.1.txt': 8.298484086990356, 'DSJC0250.1.txt': 0.9747259616851807, 'DSJC0125.9.txt': 0.17962121963500977, 'DSJC0250.5.txt': 1.2000939846038818, 'DSJC0125.5.txt': 0.15546917915344238, 'DSJC0250.9.txt': 1.4175689220428467, 'DSJC0125.1.txt': 0.2008528709411621, 'DSJC1000.1.txt': 67.5939428806305, 'DSJC0500.9.txt': 11.530013084411621, 'DSJC1000.5.txt': 86.28894186019897}\n",
|
|
" MEoH-MCP: 执行时间 = {'DSJC0500.5.txt': 0.09375882148742676, 'DSJC1000.9.txt': 1.1257750988006592, 'DSJC0500.1.txt': 0.005967140197753906, 'DSJC0250.1.txt': 0.0014951229095458984, 'DSJC0125.9.txt': 0.0046842098236083984, 'DSJC0250.5.txt': 0.008018016815185547, 'DSJC0125.5.txt': 0.0017600059509277344, 'DSJC0250.9.txt': 0.02807331085205078, 'DSJC0125.1.txt': 0.0006096363067626953, 'DSJC1000.1.txt': 0.03177499771118164, 'DSJC0500.9.txt': 0.15678906440734863, 'DSJC1000.5.txt': 0.25353002548217773}\n",
|
|
" AAE-MCP: 执行时间 = {'DSJC0500.5.txt': 0.27809929847717285, 'DSJC1000.9.txt': 0.6846380233764648, 'DSJC0500.1.txt': 0.03948807716369629, 'DSJC0250.1.txt': 0.008155107498168945, 'DSJC0125.9.txt': 0.008310079574584961, 'DSJC0250.5.txt': 0.02069091796875, 'DSJC0125.5.txt': 0.005082130432128906, 'DSJC0250.9.txt': 0.03608989715576172, 'DSJC0125.1.txt': 0.005899906158447266, 'DSJC1000.1.txt': 0.13730883598327637, 'DSJC0500.9.txt': 0.1533823013305664, 'DSJC1000.5.txt': 0.3924710750579834}\n",
|
|
" Greedy: 执行时间 = {'DSJC0500.5.txt': 0.04168081283569336, 'DSJC1000.9.txt': 0.08718514442443848, 'DSJC0500.1.txt': 0.02080392837524414, 'DSJC0250.1.txt': 0.004765987396240234, 'DSJC0125.9.txt': 0.0015120506286621094, 'DSJC0250.5.txt': 0.005215167999267578, 'DSJC0125.5.txt': 0.0014150142669677734, 'DSJC0250.9.txt': 0.005381107330322266, 'DSJC0125.1.txt': 0.0027589797973632812, 'DSJC1000.1.txt': 0.07802486419677734, 'DSJC0500.9.txt': 0.02198195457458496, 'DSJC1000.5.txt': 0.08238601684570312}\n",
|
|
" Welsh-Powell: 执行时间 = {'DSJC0500.5.txt': 0.0707998275756836, 'DSJC1000.9.txt': 0.491008996963501, 'DSJC0500.1.txt': 0.01932525634765625, 'DSJC0250.1.txt': 0.004117012023925781, 'DSJC0125.9.txt': 0.002706766128540039, 'DSJC0250.5.txt': 0.0064661502838134766, 'DSJC0125.5.txt': 0.0013499259948730469, 'DSJC0250.9.txt': 0.013007879257202148, 'DSJC0125.1.txt': 0.002179861068725586, 'DSJC1000.1.txt': 0.0838019847869873, 'DSJC0500.9.txt': 0.08063507080078125, 'DSJC1000.5.txt': 0.18603014945983887}\n",
|
|
" DSATUR: 执行时间 = {'DSJC0500.5.txt': 13.63444995880127, 'DSJC1000.9.txt': 61.64974927902222, 'DSJC0500.1.txt': 7.514086961746216, 'DSJC0250.1.txt': 0.8288030624389648, 'DSJC0125.9.txt': 0.12142586708068848, 'DSJC0250.5.txt': 0.9142141342163086, 'DSJC0125.5.txt': 0.13076090812683105, 'DSJC0250.9.txt': 0.9776561260223389, 'DSJC0125.1.txt': 0.20984697341918945, 'DSJC1000.1.txt': 57.11710214614868, 'DSJC0500.9.txt': 7.5806498527526855, 'DSJC1000.5.txt': 62.13368821144104}\n",
|
|
"\n",
|
|
"Welsh-Powell:\n",
|
|
" DSJC0500.5.txt: 使用颜色数 = 71\n",
|
|
" DSJC1000.9.txt: 使用颜色数 = 313\n",
|
|
" DSJC0500.1.txt: 使用颜色数 = 18\n",
|
|
" DSJC0250.1.txt: 使用颜色数 = 11\n",
|
|
" DSJC0125.9.txt: 使用颜色数 = 53\n",
|
|
" DSJC0250.5.txt: 使用颜色数 = 41\n",
|
|
" DSJC0125.5.txt: 使用颜色数 = 23\n",
|
|
" DSJC0250.9.txt: 使用颜色数 = 93\n",
|
|
" DSJC0125.1.txt: 使用颜色数 = 7\n",
|
|
" DSJC1000.1.txt: 使用颜色数 = 29\n",
|
|
" DSJC0500.9.txt: 使用颜色数 = 169\n",
|
|
" DSJC1000.5.txt: 使用颜色数 = 121\n",
|
|
" FunSearch-MCP: 执行时间 = {'DSJC0500.5.txt': 0.057862043380737305, 'DSJC1000.9.txt': 0.21670818328857422, 'DSJC0500.1.txt': 0.027055978775024414, 'DSJC0250.1.txt': 0.005907773971557617, 'DSJC0125.9.txt': 0.0018310546875, 'DSJC0250.5.txt': 0.006178855895996094, 'DSJC0125.5.txt': 0.0016169548034667969, 'DSJC0250.9.txt': 0.006543159484863281, 'DSJC0125.1.txt': 0.0015578269958496094, 'DSJC1000.1.txt': 0.19445085525512695, 'DSJC0500.9.txt': 0.026648759841918945, 'DSJC1000.5.txt': 0.10271525382995605}\n",
|
|
" EoH-MCP: 执行时间 = {'DSJC0500.5.txt': 18.20269513130188, 'DSJC1000.9.txt': 122.60140109062195, 'DSJC0500.1.txt': 8.298484086990356, 'DSJC0250.1.txt': 0.9747259616851807, 'DSJC0125.9.txt': 0.17962121963500977, 'DSJC0250.5.txt': 1.2000939846038818, 'DSJC0125.5.txt': 0.15546917915344238, 'DSJC0250.9.txt': 1.4175689220428467, 'DSJC0125.1.txt': 0.2008528709411621, 'DSJC1000.1.txt': 67.5939428806305, 'DSJC0500.9.txt': 11.530013084411621, 'DSJC1000.5.txt': 86.28894186019897}\n",
|
|
" MEoH-MCP: 执行时间 = {'DSJC0500.5.txt': 0.09375882148742676, 'DSJC1000.9.txt': 1.1257750988006592, 'DSJC0500.1.txt': 0.005967140197753906, 'DSJC0250.1.txt': 0.0014951229095458984, 'DSJC0125.9.txt': 0.0046842098236083984, 'DSJC0250.5.txt': 0.008018016815185547, 'DSJC0125.5.txt': 0.0017600059509277344, 'DSJC0250.9.txt': 0.02807331085205078, 'DSJC0125.1.txt': 0.0006096363067626953, 'DSJC1000.1.txt': 0.03177499771118164, 'DSJC0500.9.txt': 0.15678906440734863, 'DSJC1000.5.txt': 0.25353002548217773}\n",
|
|
" AAE-MCP: 执行时间 = {'DSJC0500.5.txt': 0.27809929847717285, 'DSJC1000.9.txt': 0.6846380233764648, 'DSJC0500.1.txt': 0.03948807716369629, 'DSJC0250.1.txt': 0.008155107498168945, 'DSJC0125.9.txt': 0.008310079574584961, 'DSJC0250.5.txt': 0.02069091796875, 'DSJC0125.5.txt': 0.005082130432128906, 'DSJC0250.9.txt': 0.03608989715576172, 'DSJC0125.1.txt': 0.005899906158447266, 'DSJC1000.1.txt': 0.13730883598327637, 'DSJC0500.9.txt': 0.1533823013305664, 'DSJC1000.5.txt': 0.3924710750579834}\n",
|
|
" Greedy: 执行时间 = {'DSJC0500.5.txt': 0.04168081283569336, 'DSJC1000.9.txt': 0.08718514442443848, 'DSJC0500.1.txt': 0.02080392837524414, 'DSJC0250.1.txt': 0.004765987396240234, 'DSJC0125.9.txt': 0.0015120506286621094, 'DSJC0250.5.txt': 0.005215167999267578, 'DSJC0125.5.txt': 0.0014150142669677734, 'DSJC0250.9.txt': 0.005381107330322266, 'DSJC0125.1.txt': 0.0027589797973632812, 'DSJC1000.1.txt': 0.07802486419677734, 'DSJC0500.9.txt': 0.02198195457458496, 'DSJC1000.5.txt': 0.08238601684570312}\n",
|
|
" Welsh-Powell: 执行时间 = {'DSJC0500.5.txt': 0.0707998275756836, 'DSJC1000.9.txt': 0.491008996963501, 'DSJC0500.1.txt': 0.01932525634765625, 'DSJC0250.1.txt': 0.004117012023925781, 'DSJC0125.9.txt': 0.002706766128540039, 'DSJC0250.5.txt': 0.0064661502838134766, 'DSJC0125.5.txt': 0.0013499259948730469, 'DSJC0250.9.txt': 0.013007879257202148, 'DSJC0125.1.txt': 0.002179861068725586, 'DSJC1000.1.txt': 0.0838019847869873, 'DSJC0500.9.txt': 0.08063507080078125, 'DSJC1000.5.txt': 0.18603014945983887}\n",
|
|
" DSATUR: 执行时间 = {'DSJC0500.5.txt': 13.63444995880127, 'DSJC1000.9.txt': 61.64974927902222, 'DSJC0500.1.txt': 7.514086961746216, 'DSJC0250.1.txt': 0.8288030624389648, 'DSJC0125.9.txt': 0.12142586708068848, 'DSJC0250.5.txt': 0.9142141342163086, 'DSJC0125.5.txt': 0.13076090812683105, 'DSJC0250.9.txt': 0.9776561260223389, 'DSJC0125.1.txt': 0.20984697341918945, 'DSJC1000.1.txt': 57.11710214614868, 'DSJC0500.9.txt': 7.5806498527526855, 'DSJC1000.5.txt': 62.13368821144104}\n",
|
|
"\n",
|
|
"DSATUR:\n",
|
|
" DSJC0500.5.txt: 使用颜色数 = 65\n",
|
|
" DSJC1000.9.txt: 使用颜色数 = 299\n",
|
|
" DSJC0500.1.txt: 使用颜色数 = 16\n",
|
|
" DSJC0250.1.txt: 使用颜色数 = 10\n",
|
|
" DSJC0125.9.txt: 使用颜色数 = 51\n",
|
|
" DSJC0250.5.txt: 使用颜色数 = 37\n",
|
|
" DSJC0125.5.txt: 使用颜色数 = 22\n",
|
|
" DSJC0250.9.txt: 使用颜色数 = 92\n",
|
|
" DSJC0125.1.txt: 使用颜色数 = 6\n",
|
|
" DSJC1000.1.txt: 使用颜色数 = 27\n",
|
|
" DSJC0500.9.txt: 使用颜色数 = 170\n",
|
|
" DSJC1000.5.txt: 使用颜色数 = 115\n",
|
|
" FunSearch-MCP: 执行时间 = {'DSJC0500.5.txt': 0.057862043380737305, 'DSJC1000.9.txt': 0.21670818328857422, 'DSJC0500.1.txt': 0.027055978775024414, 'DSJC0250.1.txt': 0.005907773971557617, 'DSJC0125.9.txt': 0.0018310546875, 'DSJC0250.5.txt': 0.006178855895996094, 'DSJC0125.5.txt': 0.0016169548034667969, 'DSJC0250.9.txt': 0.006543159484863281, 'DSJC0125.1.txt': 0.0015578269958496094, 'DSJC1000.1.txt': 0.19445085525512695, 'DSJC0500.9.txt': 0.026648759841918945, 'DSJC1000.5.txt': 0.10271525382995605}\n",
|
|
" EoH-MCP: 执行时间 = {'DSJC0500.5.txt': 18.20269513130188, 'DSJC1000.9.txt': 122.60140109062195, 'DSJC0500.1.txt': 8.298484086990356, 'DSJC0250.1.txt': 0.9747259616851807, 'DSJC0125.9.txt': 0.17962121963500977, 'DSJC0250.5.txt': 1.2000939846038818, 'DSJC0125.5.txt': 0.15546917915344238, 'DSJC0250.9.txt': 1.4175689220428467, 'DSJC0125.1.txt': 0.2008528709411621, 'DSJC1000.1.txt': 67.5939428806305, 'DSJC0500.9.txt': 11.530013084411621, 'DSJC1000.5.txt': 86.28894186019897}\n",
|
|
" MEoH-MCP: 执行时间 = {'DSJC0500.5.txt': 0.09375882148742676, 'DSJC1000.9.txt': 1.1257750988006592, 'DSJC0500.1.txt': 0.005967140197753906, 'DSJC0250.1.txt': 0.0014951229095458984, 'DSJC0125.9.txt': 0.0046842098236083984, 'DSJC0250.5.txt': 0.008018016815185547, 'DSJC0125.5.txt': 0.0017600059509277344, 'DSJC0250.9.txt': 0.02807331085205078, 'DSJC0125.1.txt': 0.0006096363067626953, 'DSJC1000.1.txt': 0.03177499771118164, 'DSJC0500.9.txt': 0.15678906440734863, 'DSJC1000.5.txt': 0.25353002548217773}\n",
|
|
" AAE-MCP: 执行时间 = {'DSJC0500.5.txt': 0.27809929847717285, 'DSJC1000.9.txt': 0.6846380233764648, 'DSJC0500.1.txt': 0.03948807716369629, 'DSJC0250.1.txt': 0.008155107498168945, 'DSJC0125.9.txt': 0.008310079574584961, 'DSJC0250.5.txt': 0.02069091796875, 'DSJC0125.5.txt': 0.005082130432128906, 'DSJC0250.9.txt': 0.03608989715576172, 'DSJC0125.1.txt': 0.005899906158447266, 'DSJC1000.1.txt': 0.13730883598327637, 'DSJC0500.9.txt': 0.1533823013305664, 'DSJC1000.5.txt': 0.3924710750579834}\n",
|
|
" Greedy: 执行时间 = {'DSJC0500.5.txt': 0.04168081283569336, 'DSJC1000.9.txt': 0.08718514442443848, 'DSJC0500.1.txt': 0.02080392837524414, 'DSJC0250.1.txt': 0.004765987396240234, 'DSJC0125.9.txt': 0.0015120506286621094, 'DSJC0250.5.txt': 0.005215167999267578, 'DSJC0125.5.txt': 0.0014150142669677734, 'DSJC0250.9.txt': 0.005381107330322266, 'DSJC0125.1.txt': 0.0027589797973632812, 'DSJC1000.1.txt': 0.07802486419677734, 'DSJC0500.9.txt': 0.02198195457458496, 'DSJC1000.5.txt': 0.08238601684570312}\n",
|
|
" Welsh-Powell: 执行时间 = {'DSJC0500.5.txt': 0.0707998275756836, 'DSJC1000.9.txt': 0.491008996963501, 'DSJC0500.1.txt': 0.01932525634765625, 'DSJC0250.1.txt': 0.004117012023925781, 'DSJC0125.9.txt': 0.002706766128540039, 'DSJC0250.5.txt': 0.0064661502838134766, 'DSJC0125.5.txt': 0.0013499259948730469, 'DSJC0250.9.txt': 0.013007879257202148, 'DSJC0125.1.txt': 0.002179861068725586, 'DSJC1000.1.txt': 0.0838019847869873, 'DSJC0500.9.txt': 0.08063507080078125, 'DSJC1000.5.txt': 0.18603014945983887}\n",
|
|
" DSATUR: 执行时间 = {'DSJC0500.5.txt': 13.63444995880127, 'DSJC1000.9.txt': 61.64974927902222, 'DSJC0500.1.txt': 7.514086961746216, 'DSJC0250.1.txt': 0.8288030624389648, 'DSJC0125.9.txt': 0.12142586708068848, 'DSJC0250.5.txt': 0.9142141342163086, 'DSJC0125.5.txt': 0.13076090812683105, 'DSJC0250.9.txt': 0.9776561260223389, 'DSJC0125.1.txt': 0.20984697341918945, 'DSJC1000.1.txt': 57.11710214614868, 'DSJC0500.9.txt': 7.5806498527526855, 'DSJC1000.5.txt': 62.13368821144104}\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# 用于存储每个算法在每个实例上的结果 \n",
|
|
"results = {}\n",
|
|
"results_time = {}\n",
|
|
"\n",
|
|
"# 遍历每个测试实例\n",
|
|
"for test_file in test_files:\n",
|
|
" print(f\"\\n测试实例: {test_file}\")\n",
|
|
" \n",
|
|
" # 加载数据\n",
|
|
" adj_matrix = load_graph_data(test_file)\n",
|
|
" if adj_matrix is None:\n",
|
|
" continue\n",
|
|
" \n",
|
|
" # 这里可以添加多个待评估的图着色算法\n",
|
|
" algorithms = {\n",
|
|
" \"FunSearch-MCP\": graph_coloring_v1,\n",
|
|
" \"EoH-MCP\": graph_coloring_v2, \n",
|
|
" # \"MCP-03\": graph_coloring_v3,\n",
|
|
" \"MEoH-MCP\": graph_coloring_meoh,\n",
|
|
" \"AAE-MCP\": graph_coloring_v5,\n",
|
|
" \"Greedy\": greedy_coloring,\n",
|
|
" \"Welsh-Powell\": welsh_powell_coloring,\n",
|
|
" \"DSATUR\": dsatur_coloring,\n",
|
|
" }\n",
|
|
" \n",
|
|
" # 评估每个算法\n",
|
|
" for alg_name, alg_func in algorithms.items():\n",
|
|
" print(f\"\\n使用算法: {alg_name}\")\n",
|
|
" score,etime = evaluate_coloring(alg_func, adj_matrix)\n",
|
|
" \n",
|
|
" if alg_name not in results:\n",
|
|
" results[alg_name] = {}\n",
|
|
" if alg_name not in results_time:\n",
|
|
" results_time[alg_name] = {}\n",
|
|
" results[alg_name][test_file] = score\n",
|
|
" results_time[alg_name][test_file] = etime\n",
|
|
"\n",
|
|
"# 打印总结果\n",
|
|
"print(\"\\n所有算法在各个实例上的表现:\")\n",
|
|
"for alg_name, scores in results.items():\n",
|
|
" print(f\"\\n{alg_name}:\")\n",
|
|
" for test_file, score in scores.items():\n",
|
|
" print(f\" {test_file}: 使用颜色数 = {score}\")\n",
|
|
" for test_file, etime in results_time.items():\n",
|
|
" print(f\" {test_file}: 执行时间 = {etime}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
"各算法在不同实例上的着色数量:\n",
|
|
" FunSearch-MCP EoH-MCP MEoH-MCP AAE-MCP Greedy Welsh-Powell \\\n",
|
|
"MCP0500.5 68 65 72 65 72 71 \n",
|
|
"MCP1000.9 316 299 321 299 321 313 \n",
|
|
"MCP0500.1 18 16 20 16 20 18 \n",
|
|
"MCP0250.1 12 10 13 10 13 11 \n",
|
|
"MCP0125.9 53 51 56 51 56 53 \n",
|
|
"MCP0250.5 40 37 43 37 43 41 \n",
|
|
"MCP0125.5 24 22 26 22 26 23 \n",
|
|
"MCP0250.9 92 92 99 92 99 93 \n",
|
|
"MCP0125.1 7 6 8 6 8 7 \n",
|
|
"MCP1000.1 29 27 31 27 31 29 \n",
|
|
"MCP0500.9 171 170 175 170 175 169 \n",
|
|
"MCP1000.5 123 115 127 115 127 121 \n",
|
|
"\n",
|
|
" DSATUR \n",
|
|
"MCP0500.5 65 \n",
|
|
"MCP1000.9 299 \n",
|
|
"MCP0500.1 16 \n",
|
|
"MCP0250.1 10 \n",
|
|
"MCP0125.9 51 \n",
|
|
"MCP0250.5 37 \n",
|
|
"MCP0125.5 22 \n",
|
|
"MCP0250.9 92 \n",
|
|
"MCP0125.1 6 \n",
|
|
"MCP1000.1 27 \n",
|
|
"MCP0500.9 170 \n",
|
|
"MCP1000.5 115 \n",
|
|
"\n",
|
|
"各算法在不同实例上的运行时间(秒):\n",
|
|
" FunSearch-MCP EoH-MCP MEoH-MCP AAE-MCP Greedy Welsh-Powell \\\n",
|
|
"MCP0500.5 0.0579 18.2027 0.0938 0.2781 0.0417 0.0708 \n",
|
|
"MCP1000.9 0.2167 122.6014 1.1258 0.6846 0.0872 0.4910 \n",
|
|
"MCP0500.1 0.0271 8.2985 0.0060 0.0395 0.0208 0.0193 \n",
|
|
"MCP0250.1 0.0059 0.9747 0.0015 0.0082 0.0048 0.0041 \n",
|
|
"MCP0125.9 0.0018 0.1796 0.0047 0.0083 0.0015 0.0027 \n",
|
|
"MCP0250.5 0.0062 1.2001 0.0080 0.0207 0.0052 0.0065 \n",
|
|
"MCP0125.5 0.0016 0.1555 0.0018 0.0051 0.0014 0.0013 \n",
|
|
"MCP0250.9 0.0065 1.4176 0.0281 0.0361 0.0054 0.0130 \n",
|
|
"MCP0125.1 0.0016 0.2009 0.0006 0.0059 0.0028 0.0022 \n",
|
|
"MCP1000.1 0.1945 67.5939 0.0318 0.1373 0.0780 0.0838 \n",
|
|
"MCP0500.9 0.0266 11.5300 0.1568 0.1534 0.0220 0.0806 \n",
|
|
"MCP1000.5 0.1027 86.2889 0.2535 0.3925 0.0824 0.1860 \n",
|
|
"\n",
|
|
" DSATUR \n",
|
|
"MCP0500.5 13.6344 \n",
|
|
"MCP1000.9 61.6497 \n",
|
|
"MCP0500.1 7.5141 \n",
|
|
"MCP0250.1 0.8288 \n",
|
|
"MCP0125.9 0.1214 \n",
|
|
"MCP0250.5 0.9142 \n",
|
|
"MCP0125.5 0.1308 \n",
|
|
"MCP0250.9 0.9777 \n",
|
|
"MCP0125.1 0.2098 \n",
|
|
"MCP1000.1 57.1171 \n",
|
|
"MCP0500.9 7.5806 \n",
|
|
"MCP1000.5 62.1337 \n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# 将结果整理成表格\n",
|
|
"import pandas as pd\n",
|
|
"\n",
|
|
"# 准备性能数据\n",
|
|
"data_colors = {}\n",
|
|
"for test_file in test_files:\n",
|
|
" # 去掉.txt后缀,将DSJC替换为MCP\n",
|
|
" instance_name = test_file.replace('.txt', '').replace('DSJC', 'MCP')\n",
|
|
" data_colors[instance_name] = {}\n",
|
|
" for alg_name in results:\n",
|
|
" if test_file in results[alg_name]:\n",
|
|
" data_colors[instance_name][alg_name] = results[alg_name][test_file]\n",
|
|
"\n",
|
|
"# 准备运行时间数据 \n",
|
|
"data_time = {}\n",
|
|
"for test_file in test_files:\n",
|
|
" instance_name = test_file.replace('.txt', '').replace('DSJC', 'MCP')\n",
|
|
" data_time[instance_name] = {}\n",
|
|
" for alg_name in results_time:\n",
|
|
" if test_file in results_time[alg_name]:\n",
|
|
" data_time[instance_name][alg_name] = round(results_time[alg_name][test_file], 4)\n",
|
|
"\n",
|
|
"# 转换为DataFrame\n",
|
|
"df_colors = pd.DataFrame(data_colors).T\n",
|
|
"df_time = pd.DataFrame(data_time).T\n",
|
|
"\n",
|
|
"# 打印结果表格\n",
|
|
"print(\"\\n各算法在不同实例上的着色数量:\")\n",
|
|
"print(df_colors)\n",
|
|
"print(\"\\n各算法在不同实例上的运行时间(秒):\")\n",
|
|
"print(df_time)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n",
|
|
"findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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yIzt26FtW4iNTXns6Z+P8BiPxcamlNu+PXvizKCQkBA0TTOZeBgfpQoICEh13DivIDo6mmHDhlG0aFGcnZ2pXr06a9asSVX2/v37XL58mapVq6ZJKiBlf4WWLVuafCxr7969tG/fnnz58uHs7Ey5cuUYPXo0Mf9I6BISEpgzZw4tW7akePHiODs7U6BAAd58803+/PPPNO0uXrwYTdNYvHgxmzdvpkmTJnh6eqaaK5GQkMDs2bOpV68enp6eeHh4ULlyZYYNG8ajR4/StJmR9+J5IyMWQgghhBDWevw4ZaRCKTAY0i9rMICdXUr5mzdzzGNRtpKYmMgbb7xBWFgYb775JjExMaxcuZKuXbuybds23njjDQC8vb2xt7fnzp07REdH4+7unqH2v/vuO9577z18fX1p3749+fPn548//mDy5MkEBwcTHByMk5MTAGFhYXz00Uc0adKENm3a4Ovry5UrV9i4cSNbt25l79691K1bN00fP//8Mzt27KBdu3a89957REZGAhAXF0fLli3Zu3cv5cqVo3///jg7O3Px4kW+++47+vbti6+vr8XvxfNGEgshhBBCCGstWZLy+FNGJxobDCnlf/wRPvwwa2NLx6VLl0yOSLRq1crqNm/fvk3dunVT3eD37NmT1157jRkzZug3087OzrRv354NGzbQuHFjBg4cSMOGDalcuTKOjo4m2z579iyDBw+mZs2a7Nq1izx58ujnpk6dysiRI5kzZw7//ve/AfD19eXvv/+maNGiqdo5c+YMDRo0YNSoUezcuTNNP1u3bmXHjh289tprqY6PHTuWvXv30qdPHxYtWpTqMa3w8PA0j21l9L147ijxVOHh4QpQ4eHh2R2KEEIIIawQGxurzp49q2JjY23XqMGgVJkySmma8WGnjL00LaWewWC7WDLo6tWrCjD7mjlzpgoODlaACgoKMlu/X79+qY77+fkpQF25ciVNHT8/P5UnT55Uxx48eKDatm2bqm8nJyfVsGFDNXv2bBUTE5Oq/IcffqgAtW/fvjTtJycnq/z586vatWtn6D1o3769cnJyUgkJCfqxRYsWKUB17tw5TfmkpCTl5eWlvL29VVhY2FPbt/S9yC4Z/Z2w5D5YRiyEEEIIIazx8GHq1Z8ySqmUemFhkDev7ePKgJYtW7Jt2zaT50JCQqxq08fHh1KlSqU5XqxYMQ4c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PLF0OCUqNDRUHieCipZSqURAQAAWLlyIV1991dLhEBERlWplro2FJbCNBRERERGVR8ZcBxfJE4snT54gPDwcUVFRSE9PZ+NGIiIiIqJyxqwnFrm5uZg1axb++9//Ijs7W56el5cn/5yQkIDq1asjPT0dkZGRqFSpknkRWwCfWBARERFReVRivUKFhIRg+fLlyM7ORv369WFjo/kAxMPDAyNGjEB2djZ2795tzuqIiIiIiKiUMjmx2Lp1K3bv3g0fHx9cuHABV69ehaenp9ayISEhAIDffvvN1NUREREREVEpZnJiERoaCkmSsGTJkkJ7WgoODoYkSfjrr79MXR0REREREZViJicWly5dAgAMGjSo0LIODg5wc3NDXFycqasjIiIiIqJSzOTEIikpCW5ubnBwcDCovFKpNHVVRERERERUypmcWHh4eCApKQmZmZmFlo2JiUFycjJ8fHxMXR0REREREZViJicWjRs3BgAcPXq00LIrV64EALRs2dLU1RERERERUSlmcmIxfPhwCCEwZ84cpKen6ywXFhaGxYsXQ5IkjB492tTVERERERFRKWbyyNtjxozB999/j/Pnz6N169aYOnUqcnJyAEDufnbLli04dOgQhBDo0qUL+vTpU2SBExERERFR6WHWyNuPHz9Gnz59cOHCBUiSpLWMEAItW7bEnj17dI5zUdpx5G0iIiIiKo9KbORtHx8fnDx5Et988w0aNWoESZIghJA/devWxfLly3H06NEym1QQEREREVHhzHpi8azU1FTExsYiLy8Pvr6+cHd3L6pFWxSfWBARERFReWTMdbDJbSy0cXZ2Ro0aNYpykUREREREVAaY9SoUERERERERYMYTi/v37xtV3t7eHu7u7lAoFKaukoiIiIiISimTE4uqVauaVK9atWp46aWX8Prrr/O1KSIiIiKi54TJr0IV7P3JmM+dO3fw7bffonHjxvj555+LcluIiIiIiMhCTE4sIiMjERYWBg8PD3h7e2POnDk4dOgQbt68ib///huHDh3CnDlzUKFCBXh6emLbtm24dOkSVq5cibp16yIjIwNjxozB7du3i3J7iIiIiIjIAkzubvbOnTto3rw5qlatij/++ANeXl5ay8XHx6Nbt264f/8+Ll68iMDAQGRlZaFTp044e/Ys/vOf/+Cbb74xayOKG7ubJSIiIqLyqEQGyPvk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veXlent7C19fX/kzcOBAuWzBY/RZBb+XH374QVhZWQlJkjSOoffee08IIcTcuXPl7+fZMt99953OeOfOnSskSZLLOjo6CoVCIf+/UqVK4tKlSwZvv4pSqRReXl4CgNi8ebPOchMmTFCL1dnZWTg6OqpN0/b7debMGeHr6yuXsba2Vvt9lSRJfPrpp1rXmZaWJkJCQtTW4eLiIuzs7OT/N27cWKPekSNH1I59R0dH4eTkJP/fw8NDHD9+XKNeZGSkXOa3334TPj4+cv2C63R1dRWXL1/WGvPFixeFh4eHzvPR1q1bde6vAwcOqK2n4LGu+mj7HVOpXr26ACD++9//6ixDZAlMLIhKoY0bNwoAokaNGmrT27VrJwCIJUuWaNR56aWXBAAxdOhQncudOHGiACDat2+vNj0rK0u0aNFCABAvvPCC2LNnj0hLSxNCCJGamip+/PFH+Q/vm2++qbFc1cWes7OzqFixotixY4fIzs4WQggRHR0tL+vMmTNixIgRYs+ePSI2NlYolUohhBDx8fHiq6++ki9uv/rqK411JCQkiEqVKgkAolq1auLw4cNy/XPnzonGjRur/ZF/9g+5udtYGEP3QVElFh4eHkKhUIhly5aJpKQkIYQQT548EZMmTZL3waFDhzTqqxIDDw8P4ebmJtatWyfS09PlOPv27StfDEdEROisry+x8PDwEH5+fmLXrl3yPrh586Zo1aqVvI8SExM16vfs2VO+QFuzZo3IzMwUQghx//59MXToUKFQKOQLXGMSCyHULyS1XRSrGJJYqC70X3/9dfH48WMhRP4xrPpurKysxOLFi4W1tbVYuHChvK0PHjyQt9HJyUnrPvjyyy/li+rPPvtMPHz4UAghRG5urrhw4YLo3LmzACCqVKkiUlJSjNoH165dk7ftzp07WsscP35cbRvi4+PleU+ePBH79+8XY8eOFf/++69avcjISPnCePDgweLixYsiJydHCJGfMM6ZM0fY2NgIAGLnzp0a6x0yZIi83lmzZono6GghRH4yFBMTIzZt2iSmTJmiVuf+/fvyOuvVqydOnDghzzt27JioXbu2ACA8PT1FTEyMRrwFk482bdqI8+fPCyGEyMnJEX/88Yd8vmnXrp1GvMnJySIgIEAAEAEBAeLAgQPy+ej06dOifv36aonCs8dcjRo1BADRvXt38ddff8nTMzIy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",
|
|
"text/plain": [
|
|
"<Figure size 800x600 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"图片尺寸: 2400 x 1800 像素\n",
|
|
"FunSearch: (0.05, 79.42)\n",
|
|
"EoH: (26.55, 75.83)\n",
|
|
"MEoH: (0.14, 82.58)\n",
|
|
"AAE: (0.15, 75.83)\n",
|
|
"Greedy: (0.03, 82.58)\n",
|
|
"Welsh-Powell: (0.08, 79.08)\n",
|
|
"DSATUR: (17.73, 75.83)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# 计算每个算法的平均性能和平均时间\n",
|
|
"avg_colors = df_colors.mean()\n",
|
|
"avg_times = df_time.mean()\n",
|
|
"\n",
|
|
"# # 中文显示\n",
|
|
"# plt.rcParams['font.sans-serif'] = ['SimHei']\n",
|
|
"# plt.rcParams['axes.unicode_minus'] = False\n",
|
|
"\n",
|
|
"# 创建散点图\n",
|
|
"plt.figure(figsize=(8, 6))\n",
|
|
"\n",
|
|
"# 设置坐标轴范围\n",
|
|
"x_max = max(avg_times) * 1.05 # 扩大20%\n",
|
|
"y_max = max(avg_colors) * 1.05\n",
|
|
"x_min = min(avg_times) * 0.99\n",
|
|
"y_min = min(avg_colors) * 0.99\n",
|
|
"plt.xlim(-5, 45)\n",
|
|
"plt.ylim(y_min, 84)\n",
|
|
"\n",
|
|
"# 定义不同算法的颜色和标记,确保数量足够\n",
|
|
"colors = ['red', 'blue', 'green', 'purple', 'orange', 'brown', 'pink', 'gray', 'olive', 'cyan']\n",
|
|
"markers = ['o', 's', '^', 'D', 'v', '<', '>', 'p', 'h', '8']\n",
|
|
"\n",
|
|
"# 绘制散点和标注\n",
|
|
"for i, alg in enumerate(avg_colors.index):\n",
|
|
" x = avg_times[alg]\n",
|
|
" y = avg_colors[alg]\n",
|
|
" # 替换算法名称\n",
|
|
" display_name = alg.replace('EoH-MCP', 'EoH').replace('FunSearch-MCP', 'FunSearch').replace('AAE-MCP', 'AAE').replace('MEoH-MCP', 'MEoH')\n",
|
|
" plt.scatter(x, y,\n",
|
|
" color=colors[i % len(colors)], # 使用取模确保不会越界\n",
|
|
" marker=markers[i % len(markers)],\n",
|
|
" s=100,\n",
|
|
" label=display_name)\n",
|
|
" # 为DA和EOH设置不同的标注位置\n",
|
|
" if alg in ['DSATUR']:\n",
|
|
" xytext = (-90, 20) # 左上方偏移\n",
|
|
" elif alg in ['EoH-MCP']:\n",
|
|
" xytext = (20, 20)\n",
|
|
" elif alg in ['Greedy']:\n",
|
|
" xytext = (0, -20)\n",
|
|
" elif alg in ['MEoH-MCP']:\n",
|
|
" xytext = (0, 20)\n",
|
|
" elif alg in ['FunSearch-MCP']:\n",
|
|
" xytext = (-40, 20)\n",
|
|
" else:\n",
|
|
" xytext = (20, -5) # 右上方偏移\n",
|
|
" \n",
|
|
" plt.annotate(f'({x:.2f}, {y:.2f})',\n",
|
|
" xy=(x, y),\n",
|
|
" xytext=xytext,\n",
|
|
" textcoords='offset points',\n",
|
|
" fontsize=18,\n",
|
|
" bbox=dict(facecolor='white', edgecolor='none', alpha=0.7))\n",
|
|
"\n",
|
|
"plt.xlabel('Average running time (seconds)', fontsize=18)\n",
|
|
"plt.ylabel('Average color number', fontsize=18)\n",
|
|
"\n",
|
|
"# 设置刻度字体大小\n",
|
|
"plt.xticks(fontsize=14)\n",
|
|
"plt.yticks(fontsize=14)\n",
|
|
"\n",
|
|
"# 添加图例\n",
|
|
"plt.legend(fontsize=14, loc='upper right')\n",
|
|
"\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.savefig('mcppareto.png',dpi=300)\n",
|
|
"plt.show()\n",
|
|
"\n",
|
|
"# 输出这张图片的精准大小\n",
|
|
"import os\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"from PIL import Image\n",
|
|
"# 打开图片\n",
|
|
"image_path = 'mcppareto.png'\n",
|
|
"image = Image.open(image_path)\n",
|
|
"# 获取图片的尺寸\n",
|
|
"width, height = image.size\n",
|
|
"# 输出图片的尺寸\n",
|
|
"print(f\"图片尺寸: {width} x {height} 像素\")\n",
|
|
"# 关闭图片\n",
|
|
"image.close()\n",
|
|
"\n",
|
|
"# 输出上面绘图中每个散点的名称以及两个分别的指标值\n",
|
|
"for i, alg in enumerate(avg_colors.index):\n",
|
|
" x = avg_times[alg]\n",
|
|
" y = avg_colors[alg]\n",
|
|
" # 替换算法名称\n",
|
|
" display_name = alg.replace('EoH-MCP', 'EoH').replace('FunSearch-MCP', 'FunSearch').replace('AAE-MCP', 'AAE').replace('MEoH-MCP', 'MEoH')\n",
|
|
" print(f\"{display_name}: ({x:.2f}, {y:.2f})\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
"每个实例的基本信息:\n",
|
|
" 测试实例 顶点数 边数 密度 平均度数\n",
|
|
"0 DSJC0125.1.txt 125 736 0.094968 11.776\n",
|
|
"1 DSJC0125.5.txt 125 3891 0.502065 62.256\n",
|
|
"2 DSJC0125.9.txt 125 6961 0.898194 111.376\n",
|
|
"3 DSJC0250.1.txt 250 3218 0.103390 25.744\n",
|
|
"4 DSJC0250.5.txt 250 15668 0.503390 125.344\n",
|
|
"5 DSJC0250.9.txt 250 27897 0.896289 223.176\n",
|
|
"6 DSJC0500.1.txt 500 12458 0.099864 49.832\n",
|
|
"7 DSJC0500.5.txt 500 62624 0.501996 250.496\n",
|
|
"8 DSJC0500.9.txt 500 112437 0.901299 449.748\n",
|
|
"9 DSJC1000.1.txt 1000 49629 0.099357 99.258\n",
|
|
"10 DSJC1000.5.txt 1000 249826 0.500152 499.652\n",
|
|
"11 DSJC1000.9.txt 1000 449449 0.899798 898.898\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# 统计每个实例的基本信息\n",
|
|
"instance_info = []\n",
|
|
"\n",
|
|
"for test_file in test_files:\n",
|
|
" adj_matrix = load_graph_data(test_file)\n",
|
|
" if adj_matrix is None:\n",
|
|
" continue\n",
|
|
" \n",
|
|
" n_vertices = adj_matrix.shape[0]\n",
|
|
" n_edges = np.sum(adj_matrix) // 2 # 无向图的边数\n",
|
|
" density = n_edges / (n_vertices * (n_vertices - 1) / 2) # 图的密度\n",
|
|
" avg_degree = np.sum(adj_matrix) / n_vertices # 平均度数\n",
|
|
" \n",
|
|
" instance_info.append({\n",
|
|
" '测试实例': test_file,\n",
|
|
" '顶点数': n_vertices,\n",
|
|
" '边数': n_edges,\n",
|
|
" '密度': density,\n",
|
|
" '平均度数': avg_degree\n",
|
|
" })\n",
|
|
"\n",
|
|
"# 将统计信息转换为DataFrame并打印\n",
|
|
"df_info = pd.DataFrame(instance_info)\n",
|
|
"print(\"\\n每个实例的基本信息:\")\n",
|
|
"print(df_info)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 800x600 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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AABQJBcmAwAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAARRIzAABAkcQMAABQJDEDAAAUScwAAABFEjMAAECRxAwAAFAkMQMAABRJzAAAAEUSMwAAQJHEDAAAUCQxAwAAFEnMAAAAUaL/DzNA2fo2fTFIAAAAAElFTkSuQmCC",
|
|
"text/plain": [
|
|
"<Figure size 800x600 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import networkx as nx\n",
|
|
"import matplotlib.font_manager as fm\n",
|
|
"\n",
|
|
"# 设置中文字体\n",
|
|
"plt.rcParams['font.sans-serif'] = ['SimHei']\n",
|
|
"plt.rcParams['axes.unicode_minus'] = False\n",
|
|
"\n",
|
|
"# 定义节点位置和边\n",
|
|
"positions = [(0,0), (1,0), (0,1), (2,0), (1,1)] # 5个节点的位置\n",
|
|
"edges = [(0,1), (0,2), (1,2), (1,3), (2,4), (3,4)] # 节点间的连接\n",
|
|
"\n",
|
|
"# 创建图对象\n",
|
|
"G = nx.Graph()\n",
|
|
"G.add_nodes_from(range(len(positions)))\n",
|
|
"G.add_edges_from(edges)\n",
|
|
"pos = {i: positions[i] for i in range(len(positions))}\n",
|
|
"\n",
|
|
"# 绘制第一个图\n",
|
|
"plt.figure(figsize=(8, 6))\n",
|
|
"colors = ['red', 'green', 'blue', 'yellow', 'purple']\n",
|
|
"nx.draw(G, pos,\n",
|
|
" node_color=colors,\n",
|
|
" node_size=1000,\n",
|
|
" with_labels=True,\n",
|
|
" font_size=12,\n",
|
|
" font_weight='bold',\n",
|
|
" edge_color='gray',\n",
|
|
" width=1)\n",
|
|
"\n",
|
|
"# plt.title('5色着色方案', fontsize=18, fontweight='bold')\n",
|
|
"plt.axis('equal')\n",
|
|
"plt.savefig('./plot/5color.png',dpi=300)\n",
|
|
"plt.show()\n",
|
|
"\n",
|
|
"# 绘制第二个图\n",
|
|
"plt.figure(figsize=(8, 6))\n",
|
|
"colors2 = ['red', 'green', 'blue', 'blue', 'red']\n",
|
|
"nx.draw(G, pos,\n",
|
|
" node_color=colors2,\n",
|
|
" node_size=1000,\n",
|
|
" with_labels=True,\n",
|
|
" font_size=12,\n",
|
|
" font_weight='bold',\n",
|
|
" edge_color='gray',\n",
|
|
" width=1)\n",
|
|
"\n",
|
|
"# plt.title('3色着色方案', fontsize=18, fontweight='bold')\n",
|
|
"plt.axis('equal')\n",
|
|
"plt.savefig('./plot/3color.png',dpi=300)\n",
|
|
"plt.show()\n"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "lead",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.11.11"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|