lead/gcdata/mctest.ipynb

832 lines
138 KiB
Plaintext
Raw Normal View History

2025-03-17 16:40:01 +08:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"sys.path.append(\"C:/Users/Lenovo/Desktop/LEAD/\")\n",
"from gcdata.gc import *\n",
"from gcdata.gc1 import *"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['DSJC0125.1.txt', 'DSJC0125.5.txt', 'DSJC0125.9.txt', 'DSJC0250.1.txt', 'DSJC0250.5.txt', 'DSJC0250.9.txt', 'DSJC0500.1.txt', 'DSJC0500.5.txt', 'DSJC0500.9.txt', 'DSJC1000.1.txt', 'DSJC1000.5.txt', 'DSJC1000.9.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 = \"C:/Users/Lenovo/Desktop/LEAD/\"\n",
"data_dir2 = \"C:/Users/Lenovo/Desktop/LEAD/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",
"测试实例: DSJC0125.1.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.0040秒, 使用颜色数:7\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:0.2838秒, 使用颜色数:6\n",
"\n",
"使用算法: AAD-MCP\n",
"执行时间:0.0055秒, 使用颜色数:6\n",
"\n",
"使用算法: 贪心\n",
"执行时间:0.0015秒, 使用颜色数:8\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.0026秒, 使用颜色数:7\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:0.2019秒, 使用颜色数:6\n",
"\n",
"测试实例: DSJC0125.5.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.0030秒, 使用颜色数:24\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:0.3657秒, 使用颜色数:22\n",
"\n",
"使用算法: AAD-MCP\n",
"执行时间:0.0130秒, 使用颜色数:22\n",
"\n",
"使用算法: 贪心\n",
"执行时间:0.0030秒, 使用颜色数:26\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.0030秒, 使用颜色数:23\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:0.2198秒, 使用颜色数:22\n",
"\n",
"测试实例: DSJC0125.9.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.0040秒, 使用颜色数:53\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:0.4484秒, 使用颜色数:51\n",
"\n",
"使用算法: AAD-MCP\n",
"执行时间:0.0180秒, 使用颜色数:51\n",
"\n",
"使用算法: 贪心\n",
"执行时间:0.0026秒, 使用颜色数:56\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.0060秒, 使用颜色数:53\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:0.2416秒, 使用颜色数:51\n",
"\n",
"测试实例: DSJC0250.1.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.0134秒, 使用颜色数:12\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:2.0049秒, 使用颜色数:10\n",
"\n",
"使用算法: AAD-MCP\n",
"执行时间:0.0175秒, 使用颜色数:10\n",
"\n",
"使用算法: 贪心\n",
"执行时间:0.0090秒, 使用颜色数:13\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.0111秒, 使用颜色数:11\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:1.5718秒, 使用颜色数:10\n",
"\n",
"测试实例: DSJC0250.5.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.0148秒, 使用颜色数:40\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:2.3929秒, 使用颜色数:37\n",
"\n",
"使用算法: AAD-MCP\n",
"执行时间:0.0468秒, 使用颜色数:37\n",
"\n",
"使用算法: 贪心\n",
"执行时间:0.0102秒, 使用颜色数:43\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.0141秒, 使用颜色数:41\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:1.7725秒, 使用颜色数:37\n",
"\n",
"测试实例: DSJC0250.9.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.0145秒, 使用颜色数:92\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:2.8686秒, 使用颜色数:92\n",
"\n",
"使用算法: AAD-MCP\n",
"执行时间:0.0802秒, 使用颜色数:92\n",
"\n",
"使用算法: 贪心\n",
"执行时间:0.0100秒, 使用颜色数:99\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.0327秒, 使用颜色数:93\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:1.8326秒, 使用颜色数:92\n",
"\n",
"测试实例: DSJC0500.1.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.0502秒, 使用颜色数:18\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:15.5259秒, 使用颜色数:16\n",
"\n",
"使用算法: AAD-MCP\n",
"执行时间:0.1433秒, 使用颜色数:16\n",
"\n",
"使用算法: 贪心\n",
"执行时间:0.0643秒, 使用颜色数:20\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.0521秒, 使用颜色数:18\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:14.7507秒, 使用颜色数:16\n",
"\n",
"测试实例: DSJC0500.5.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.0700秒, 使用颜色数:68\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:18.4253秒, 使用颜色数:65\n",
"\n",
"使用算法: AAD-MCP\n",
"执行时间:0.2133秒, 使用颜色数:65\n",
"\n",
"使用算法: 贪心\n",
"执行时间:0.0514秒, 使用颜色数:72\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.0777秒, 使用颜色数:71\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:13.2264秒, 使用颜色数:65\n",
"\n",
"测试实例: DSJC0500.9.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.0549秒, 使用颜色数:171\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:20.7131秒, 使用颜色数:170\n",
"\n",
"使用算法: AAD-MCP\n",
"执行时间:0.3302秒, 使用颜色数:170\n",
"\n",
"使用算法: 贪心\n",
"执行时间:0.0437秒, 使用颜色数:175\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.1895秒, 使用颜色数:169\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:14.3884秒, 使用颜色数:170\n",
"\n",
"测试实例: DSJC1000.1.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.2133秒, 使用颜色数:29\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:116.7540秒, 使用颜色数:27\n",
"\n",
"使用算法: AAD-MCP\n",
"执行时间:0.2894秒, 使用颜色数:27\n",
"\n",
"使用算法: 贪心\n",
"执行时间:0.1473秒, 使用颜色数:31\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.1852秒, 使用颜色数:29\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:98.2297秒, 使用颜色数:27\n",
"\n",
"测试实例: DSJC1000.5.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.2238秒, 使用颜色数:123\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:145.9148秒, 使用颜色数:115\n",
"\n",
"使用算法: AAD-MCP\n",
"执行时间:0.8791秒, 使用颜色数:115\n",
"\n",
"使用算法: 贪心\n",
"执行时间:0.1677秒, 使用颜色数:127\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:0.4773秒, 使用颜色数:121\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:109.2028秒, 使用颜色数:115\n",
"\n",
"测试实例: DSJC1000.9.txt\n",
"\n",
"使用算法: FunSearch-MCP\n",
"执行时间:0.2306秒, 使用颜色数:316\n",
"\n",
"使用算法: EoH-MCP\n",
"执行时间:171.2065秒, 使用颜色数:299\n",
"\n",
"使用算法: AAD-MCP\n",
"执行时间:1.2328秒, 使用颜色数:299\n",
"\n",
"使用算法: 贪心\n",
"执行时间:0.1777秒, 使用颜色数:321\n",
"\n",
"使用算法: Welsh-Powell\n",
"执行时间:1.2785秒, 使用颜色数:313\n",
"\n",
"使用算法: DSATUR\n",
"执行时间:109.2663秒, 使用颜色数:299\n",
"\n",
"所有算法在各个实例上的表现:\n",
"\n",
"FunSearch-MCP:\n",
" DSJC0125.1.txt: 使用颜色数 = 7\n",
" DSJC0125.5.txt: 使用颜色数 = 24\n",
" DSJC0125.9.txt: 使用颜色数 = 53\n",
" DSJC0250.1.txt: 使用颜色数 = 12\n",
" DSJC0250.5.txt: 使用颜色数 = 40\n",
" DSJC0250.9.txt: 使用颜色数 = 92\n",
" DSJC0500.1.txt: 使用颜色数 = 18\n",
" DSJC0500.5.txt: 使用颜色数 = 68\n",
" DSJC0500.9.txt: 使用颜色数 = 171\n",
" DSJC1000.1.txt: 使用颜色数 = 29\n",
" DSJC1000.5.txt: 使用颜色数 = 123\n",
" DSJC1000.9.txt: 使用颜色数 = 316\n",
" FunSearch-MCP: 执行时间 = {'DSJC0125.1.txt': 0.004013776779174805, 'DSJC0125.5.txt': 0.003008127212524414, 'DSJC0125.9.txt': 0.0039904117584228516, 'DSJC0250.1.txt': 0.01337122917175293, 'DSJC0250.5.txt': 0.014790773391723633, 'DSJC0250.9.txt': 0.014544010162353516, 'DSJC0500.1.txt': 0.05017399787902832, 'DSJC0500.5.txt': 0.07002043724060059, 'DSJC0500.9.txt': 0.05488133430480957, 'DSJC1000.1.txt': 0.2132706642150879, 'DSJC1000.5.txt': 0.2238328456878662, 'DSJC1000.9.txt': 0.23056554794311523}\n",
" EoH-MCP: 执行时间 = {'DSJC0125.1.txt': 0.2837517261505127, 'DSJC0125.5.txt': 0.36574745178222656, 'DSJC0125.9.txt': 0.44835567474365234, 'DSJC0250.1.txt': 2.0048983097076416, 'DSJC0250.5.txt': 2.3928611278533936, 'DSJC0250.9.txt': 2.868635416030884, 'DSJC0500.1.txt': 15.525936365127563, 'DSJC0500.5.txt': 18.42532467842102, 'DSJC0500.9.txt': 20.713070392608643, 'DSJC1000.1.txt': 116.75400495529175, 'DSJC1000.5.txt': 145.9148268699646, 'DSJC1000.9.txt': 171.20650029182434}\n",
" AAD-MCP: 执行时间 = {'DSJC0125.1.txt': 0.0055429935455322266, 'DSJC0125.5.txt': 0.013042688369750977, 'DSJC0125.9.txt': 0.017969846725463867, 'DSJC0250.1.txt': 0.01753830909729004, 'DSJC0250.5.txt': 0.04675650596618652, 'DSJC0250.9.txt': 0.08019351959228516, 'DSJC0500.1.txt': 0.1433091163635254, 'DSJC0500.5.txt': 0.2132573127746582, 'DSJC0500.9.txt': 0.33021020889282227, 'DSJC1000.1.txt': 0.28937268257141113, 'DSJC1000.5.txt': 0.8791167736053467, 'DSJC1000.9.txt': 1.2328133583068848}\n",
" 贪心: 执行时间 = {'DSJC0125.1.txt': 0.0015063285827636719, 'DSJC0125.5.txt': 0.003003358840942383, 'DSJC0125.9.txt': 0.002640247344970703, 'DSJC0250.1.txt': 0.008993864059448242, 'DSJC0250.5.txt': 0.010194540023803711, 'DSJC0250.9.txt': 0.010005474090576172, 'DSJC0500.1.txt': 0.06428956985473633, 'DSJC0500.5.txt': 0.051430463790893555, 'DSJC0500.9.txt': 0.043711185455322266, 'DSJC1000.1.txt': 0.14725852012634277, 'DSJC1000.5.txt': 0.16768312454223633, 'DSJC1000.9.txt': 0.17772769927978516}\n",
" Welsh-Powell: 执行时间 = {'DSJC0125.1.txt': 0.002586841583251953, 'DSJC0125.5.txt': 0.003000497817993164, 'DSJC0125.9.txt': 0.006002187728881836, 'DSJC0250.1.txt': 0.011120796203613281, 'DSJC0250.5.txt': 0.014127492904663086, 'DSJC0250.9.txt': 0.03272223472595215, 'DSJC0500.1.txt': 0.05209708213806152, 'DSJC0500.5.txt': 0.0777275562286377, 'DSJC0500.9.txt': 0.18945813179016113, 'DSJC1000.1.txt': 0.18522953987121582, 'DSJC1000.5.txt': 0.4772758483886719, 'DSJC1000.9.txt': 1.2784678936004639}\n",
" DSATUR: 执行时间 = {'DSJC0125.1.txt': 0.2019205093383789, 'DSJC0125.5.txt': 0.2197577953338623, 'DSJC0125.9.txt': 0.24163603782653809, 'DSJC0250.1.txt': 1.571821928024292, 'DSJC0250.5.txt': 1.772461175918579, 'DSJC0250.9.txt': 1.8325576782226562, 'DSJC0500.1.txt': 14.750667810440063, 'DSJC0500.5.txt': 13.226407051086426, 'DSJC0500.9.txt': 14.38843822479248, 'DSJC1000.1.txt': 98.22970223426819, 'DSJC1000.5.txt': 109.20279622077942, 'DSJC1000.9.txt': 109.26631116867065}\n",
"\n",
"EoH-MCP:\n",
" DSJC0125.1.txt: 使用颜色数 = 6\n",
" DSJC0125.5.txt: 使用颜色数 = 22\n",
" DSJC0125.9.txt: 使用颜色数 = 51\n",
" DSJC0250.1.txt: 使用颜色数 = 10\n",
" DSJC0250.5.txt: 使用颜色数 = 37\n",
" DSJC0250.9.txt: 使用颜色数 = 92\n",
" DSJC0500.1.txt: 使用颜色数 = 16\n",
" DSJC0500.5.txt: 使用颜色数 = 65\n",
" DSJC0500.9.txt: 使用颜色数 = 170\n",
" DSJC1000.1.txt: 使用颜色数 = 27\n",
" DSJC1000.5.txt: 使用颜色数 = 115\n",
" DSJC1000.9.txt: 使用颜色数 = 299\n",
" FunSearch-MCP: 执行时间 = {'DSJC0125.1.txt': 0.004013776779174805, 'DSJC0125.5.txt': 0.003008127212524414, 'DSJC0125.9.txt': 0.0039904117584228516, 'DSJC0250.1.txt': 0.01337122917175293, 'DSJC0250.5.txt': 0.014790773391723633, 'DSJC0250.9.txt': 0.014544010162353516, 'DSJC0500.1.txt': 0.05017399787902832, 'DSJC0500.5.txt': 0.07002043724060059, 'DSJC0500.9.txt': 0.05488133430480957, 'DSJC1000.1.txt': 0.2132706642150879, 'DSJC1000.5.txt': 0.2238328456878662, 'DSJC1000.9.txt': 0.23056554794311523}\n",
" EoH-MCP: 执行时间 = {'DSJC0125.1.txt': 0.2837517261505127, 'DSJC0125.5.txt': 0.36574745178222656, 'DSJC0125.9.txt': 0.44835567474365234, 'DSJC0250.1.txt': 2.0048983097076416, 'DSJC0250.5.txt': 2.3928611278533936, 'DSJC0250.9.txt': 2.868635416030884, 'DSJC0500.1.txt': 15.525936365127563, 'DSJC0500.5.txt': 18.42532467842102, 'DSJC0500.9.txt': 20.713070392608643, 'DSJC1000.1.txt': 116.75400495529175, 'DSJC1000.5.txt': 145.9148268699646, 'DSJC1000.9.txt': 171.20650029182434}\n",
" AAD-MCP: 执行时间 = {'DSJC0125.1.txt': 0.0055429935455322266, 'DSJC0125.5.txt': 0.013042688369750977, 'DSJC0125.9.txt': 0.017969846725463867, 'DSJC0250.1.txt': 0.01753830909729004, 'DSJC0250.5.txt': 0.04675650596618652, 'DSJC0250.9.txt': 0.08019351959228516, 'DSJC0500.1.txt': 0.1433091163635254, 'DSJC0500.5.txt': 0.2132573127746582, 'DSJC0500.9.txt': 0.33021020889282227, 'DSJC1000.1.txt': 0.28937268257141113, 'DSJC1000.5.txt': 0.8791167736053467, 'DSJC1000.9.txt': 1.2328133583068848}\n",
" 贪心: 执行时间 = {'DSJC0125.1.txt': 0.0015063285827636719, 'DSJC0125.5.txt': 0.003003358840942383, 'DSJC0125.9.txt': 0.002640247344970703, 'DSJC0250.1.txt': 0.008993864059448242, 'DSJC0250.5.txt': 0.010194540023803711, 'DSJC0250.9.txt': 0.010005474090576172, 'DSJC0500.1.txt': 0.06428956985473633, 'DSJC0500.5.txt': 0.051430463790893555, 'DSJC0500.9.txt': 0.043711185455322266, 'DSJC1000.1.txt': 0.14725852012634277, 'DSJC1000.5.txt': 0.16768312454223633, 'DSJC1000.9.txt': 0.17772769927978516}\n",
" Welsh-Powell: 执行时间 = {'DSJC0125.1.txt': 0.002586841583251953, 'DSJC0125.5.txt': 0.003000497817993164, 'DSJC0125.9.txt': 0.006002187728881836, 'DSJC0250.1.txt': 0.011120796203613281, 'DSJC0250.5.txt': 0.014127492904663086, 'DSJC0250.9.txt': 0.03272223472595215, 'DSJC0500.1.txt': 0.05209708213806152, 'DSJC0500.5.txt': 0.0777275562286377, 'DSJC0500.9.txt': 0.18945813179016113, 'DSJC1000.1.txt': 0.18522953987121582, 'DSJC1000.5.txt': 0.4772758483886719, 'DSJC1000.9.txt': 1.2784678936004639}\n",
" DSATUR: 执行时间 = {'DSJC0125.1.txt': 0.2019205093383789, 'DSJC0125.5.txt': 0.2197577953338623, 'DSJC0125.9.txt': 0.24163603782653809, 'DSJC0250.1.txt': 1.571821928024292, 'DSJC0250.5.txt': 1.772461175918579, 'DSJC0250.9.txt': 1.8325576782226562, 'DSJC0500.1.txt': 14.750667810440063, 'DSJC0500.5.txt': 13.226407051086426, 'DSJC0500.9.txt': 14.38843822479248, 'DSJC1000.1.txt': 98.22970223426819, 'DSJC1000.5.txt': 109.20279622077942, 'DSJC1000.9.txt': 109.26631116867065}\n",
"\n",
"AAD-MCP:\n",
" DSJC0125.1.txt: 使用颜色数 = 6\n",
" DSJC0125.5.txt: 使用颜色数 = 22\n",
" DSJC0125.9.txt: 使用颜色数 = 51\n",
" DSJC0250.1.txt: 使用颜色数 = 10\n",
" DSJC0250.5.txt: 使用颜色数 = 37\n",
" DSJC0250.9.txt: 使用颜色数 = 92\n",
" DSJC0500.1.txt: 使用颜色数 = 16\n",
" DSJC0500.5.txt: 使用颜色数 = 65\n",
" DSJC0500.9.txt: 使用颜色数 = 170\n",
" DSJC1000.1.txt: 使用颜色数 = 27\n",
" DSJC1000.5.txt: 使用颜色数 = 115\n",
" DSJC1000.9.txt: 使用颜色数 = 299\n",
" FunSearch-MCP: 执行时间 = {'DSJC0125.1.txt': 0.004013776779174805, 'DSJC0125.5.txt': 0.003008127212524414, 'DSJC0125.9.txt': 0.0039904117584228516, 'DSJC0250.1.txt': 0.01337122917175293, 'DSJC0250.5.txt': 0.014790773391723633, 'DSJC0250.9.txt': 0.014544010162353516, 'DSJC0500.1.txt': 0.05017399787902832, 'DSJC0500.5.txt': 0.07002043724060059, 'DSJC0500.9.txt': 0.05488133430480957, 'DSJC1000.1.txt': 0.2132706642150879, 'DSJC1000.5.txt': 0.2238328456878662, 'DSJC1000.9.txt': 0.23056554794311523}\n",
" EoH-MCP: 执行时间 = {'DSJC0125.1.txt': 0.2837517261505127, 'DSJC0125.5.txt': 0.36574745178222656, 'DSJC0125.9.txt': 0.44835567474365234, 'DSJC0250.1.txt': 2.0048983097076416, 'DSJC0250.5.txt': 2.3928611278533936, 'DSJC0250.9.txt': 2.868635416030884, 'DSJC0500.1.txt': 15.525936365127563, 'DSJC0500.5.txt': 18.42532467842102, 'DSJC0500.9.txt': 20.713070392608643, 'DSJC1000.1.txt': 116.75400495529175, 'DSJC1000.5.txt': 145.9148268699646, 'DSJC1000.9.txt': 171.20650029182434}\n",
" AAD-MCP: 执行时间 = {'DSJC0125.1.txt': 0.0055429935455322266, 'DSJC0125.5.txt': 0.013042688369750977, 'DSJC0125.9.txt': 0.017969846725463867, 'DSJC0250.1.txt': 0.01753830909729004, 'DSJC0250.5.txt': 0.04675650596618652, 'DSJC0250.9.txt': 0.08019351959228516, 'DSJC0500.1.txt': 0.1433091163635254, 'DSJC0500.5.txt': 0.2132573127746582, 'DSJC0500.9.txt': 0.33021020889282227, 'DSJC1000.1.txt': 0.28937268257141113, 'DSJC1000.5.txt': 0.8791167736053467, 'DSJC1000.9.txt': 1.2328133583068848}\n",
" 贪心: 执行时间 = {'DSJC0125.1.txt': 0.0015063285827636719, 'DSJC0125.5.txt': 0.003003358840942383, 'DSJC0125.9.txt': 0.002640247344970703, 'DSJC0250.1.txt': 0.008993864059448242, 'DSJC0250.5.txt': 0.010194540023803711, 'DSJC0250.9.txt': 0.010005474090576172, 'DSJC0500.1.txt': 0.06428956985473633, 'DSJC0500.5.txt': 0.051430463790893555, 'DSJC0500.9.txt': 0.043711185455322266, 'DSJC1000.1.txt': 0.14725852012634277, 'DSJC1000.5.txt': 0.16768312454223633, 'DSJC1000.9.txt': 0.17772769927978516}\n",
" Welsh-Powell: 执行时间 = {'DSJC0125.1.txt': 0.002586841583251953, 'DSJC0125.5.txt': 0.003000497817993164, 'DSJC0125.9.txt': 0.006002187728881836, 'DSJC0250.1.txt': 0.011120796203613281, 'DSJC0250.5.txt': 0.014127492904663086, 'DSJC0250.9.txt': 0.03272223472595215, 'DSJC0500.1.txt': 0.05209708213806152, 'DSJC0500.5.txt': 0.0777275562286377, 'DSJC0500.9.txt': 0.18945813179016113, 'DSJC1000.1.txt': 0.18522953987121582, 'DSJC1000.5.txt': 0.4772758483886719, 'DSJC1000.9.txt': 1.2784678936004639}\n",
" DSATUR: 执行时间 = {'DSJC0125.1.txt': 0.2019205093383789, 'DSJC0125.5.txt': 0.2197577953338623, 'DSJC0125.9.txt': 0.24163603782653809, 'DSJC0250.1.txt': 1.571821928024292, 'DSJC0250.5.txt': 1.772461175918579, 'DSJC0250.9.txt': 1.8325576782226562, 'DSJC0500.1.txt': 14.750667810440063, 'DSJC0500.5.txt': 13.226407051086426, 'DSJC0500.9.txt': 14.38843822479248, 'DSJC1000.1.txt': 98.22970223426819, 'DSJC1000.5.txt': 109.20279622077942, 'DSJC1000.9.txt': 109.26631116867065}\n",
"\n",
"贪心:\n",
" DSJC0125.1.txt: 使用颜色数 = 8\n",
" DSJC0125.5.txt: 使用颜色数 = 26\n",
" DSJC0125.9.txt: 使用颜色数 = 56\n",
" DSJC0250.1.txt: 使用颜色数 = 13\n",
" DSJC0250.5.txt: 使用颜色数 = 43\n",
" DSJC0250.9.txt: 使用颜色数 = 99\n",
" DSJC0500.1.txt: 使用颜色数 = 20\n",
" DSJC0500.5.txt: 使用颜色数 = 72\n",
" DSJC0500.9.txt: 使用颜色数 = 175\n",
" DSJC1000.1.txt: 使用颜色数 = 31\n",
" DSJC1000.5.txt: 使用颜色数 = 127\n",
" DSJC1000.9.txt: 使用颜色数 = 321\n",
" FunSearch-MCP: 执行时间 = {'DSJC0125.1.txt': 0.004013776779174805, 'DSJC0125.5.txt': 0.003008127212524414, 'DSJC0125.9.txt': 0.0039904117584228516, 'DSJC0250.1.txt': 0.01337122917175293, 'DSJC0250.5.txt': 0.014790773391723633, 'DSJC0250.9.txt': 0.014544010162353516, 'DSJC0500.1.txt': 0.05017399787902832, 'DSJC0500.5.txt': 0.07002043724060059, 'DSJC0500.9.txt': 0.05488133430480957, 'DSJC1000.1.txt': 0.2132706642150879, 'DSJC1000.5.txt': 0.2238328456878662, 'DSJC1000.9.txt': 0.23056554794311523}\n",
" EoH-MCP: 执行时间 = {'DSJC0125.1.txt': 0.2837517261505127, 'DSJC0125.5.txt': 0.36574745178222656, 'DSJC0125.9.txt': 0.44835567474365234, 'DSJC0250.1.txt': 2.0048983097076416, 'DSJC0250.5.txt': 2.3928611278533936, 'DSJC0250.9.txt': 2.868635416030884, 'DSJC0500.1.txt': 15.525936365127563, 'DSJC0500.5.txt': 18.42532467842102, 'DSJC0500.9.txt': 20.713070392608643, 'DSJC1000.1.txt': 116.75400495529175, 'DSJC1000.5.txt': 145.9148268699646, 'DSJC1000.9.txt': 171.20650029182434}\n",
" AAD-MCP: 执行时间 = {'DSJC0125.1.txt': 0.0055429935455322266, 'DSJC0125.5.txt': 0.013042688369750977, 'DSJC0125.9.txt': 0.017969846725463867, 'DSJC0250.1.txt': 0.01753830909729004, 'DSJC0250.5.txt': 0.04675650596618652, 'DSJC0250.9.txt': 0.08019351959228516, 'DSJC0500.1.txt': 0.1433091163635254, 'DSJC0500.5.txt': 0.2132573127746582, 'DSJC0500.9.txt': 0.33021020889282227, 'DSJC1000.1.txt': 0.28937268257141113, 'DSJC1000.5.txt': 0.8791167736053467, 'DSJC1000.9.txt': 1.2328133583068848}\n",
" 贪心: 执行时间 = {'DSJC0125.1.txt': 0.0015063285827636719, 'DSJC0125.5.txt': 0.003003358840942383, 'DSJC0125.9.txt': 0.002640247344970703, 'DSJC0250.1.txt': 0.008993864059448242, 'DSJC0250.5.txt': 0.010194540023803711, 'DSJC0250.9.txt': 0.010005474090576172, 'DSJC0500.1.txt': 0.06428956985473633, 'DSJC0500.5.txt': 0.051430463790893555, 'DSJC0500.9.txt': 0.043711185455322266, 'DSJC1000.1.txt': 0.14725852012634277, 'DSJC1000.5.txt': 0.16768312454223633, 'DSJC1000.9.txt': 0.17772769927978516}\n",
" Welsh-Powell: 执行时间 = {'DSJC0125.1.txt': 0.002586841583251953, 'DSJC0125.5.txt': 0.003000497817993164, 'DSJC0125.9.txt': 0.006002187728881836, 'DSJC0250.1.txt': 0.011120796203613281, 'DSJC0250.5.txt': 0.014127492904663086, 'DSJC0250.9.txt': 0.03272223472595215, 'DSJC0500.1.txt': 0.05209708213806152, 'DSJC0500.5.txt': 0.0777275562286377, 'DSJC0500.9.txt': 0.18945813179016113, 'DSJC1000.1.txt': 0.18522953987121582, 'DSJC1000.5.txt': 0.4772758483886719, 'DSJC1000.9.txt': 1.2784678936004639}\n",
" DSATUR: 执行时间 = {'DSJC0125.1.txt': 0.2019205093383789, 'DSJC0125.5.txt': 0.2197577953338623, 'DSJC0125.9.txt': 0.24163603782653809, 'DSJC0250.1.txt': 1.571821928024292, 'DSJC0250.5.txt': 1.772461175918579, 'DSJC0250.9.txt': 1.8325576782226562, 'DSJC0500.1.txt': 14.750667810440063, 'DSJC0500.5.txt': 13.226407051086426, 'DSJC0500.9.txt': 14.38843822479248, 'DSJC1000.1.txt': 98.22970223426819, 'DSJC1000.5.txt': 109.20279622077942, 'DSJC1000.9.txt': 109.26631116867065}\n",
"\n",
"Welsh-Powell:\n",
" DSJC0125.1.txt: 使用颜色数 = 7\n",
" DSJC0125.5.txt: 使用颜色数 = 23\n",
" DSJC0125.9.txt: 使用颜色数 = 53\n",
" DSJC0250.1.txt: 使用颜色数 = 11\n",
" DSJC0250.5.txt: 使用颜色数 = 41\n",
" DSJC0250.9.txt: 使用颜色数 = 93\n",
" DSJC0500.1.txt: 使用颜色数 = 18\n",
" DSJC0500.5.txt: 使用颜色数 = 71\n",
" DSJC0500.9.txt: 使用颜色数 = 169\n",
" DSJC1000.1.txt: 使用颜色数 = 29\n",
" DSJC1000.5.txt: 使用颜色数 = 121\n",
" DSJC1000.9.txt: 使用颜色数 = 313\n",
" FunSearch-MCP: 执行时间 = {'DSJC0125.1.txt': 0.004013776779174805, 'DSJC0125.5.txt': 0.003008127212524414, 'DSJC0125.9.txt': 0.0039904117584228516, 'DSJC0250.1.txt': 0.01337122917175293, 'DSJC0250.5.txt': 0.014790773391723633, 'DSJC0250.9.txt': 0.014544010162353516, 'DSJC0500.1.txt': 0.05017399787902832, 'DSJC0500.5.txt': 0.07002043724060059, 'DSJC0500.9.txt': 0.05488133430480957, 'DSJC1000.1.txt': 0.2132706642150879, 'DSJC1000.5.txt': 0.2238328456878662, 'DSJC1000.9.txt': 0.23056554794311523}\n",
" EoH-MCP: 执行时间 = {'DSJC0125.1.txt': 0.2837517261505127, 'DSJC0125.5.txt': 0.36574745178222656, 'DSJC0125.9.txt': 0.44835567474365234, 'DSJC0250.1.txt': 2.0048983097076416, 'DSJC0250.5.txt': 2.3928611278533936, 'DSJC0250.9.txt': 2.868635416030884, 'DSJC0500.1.txt': 15.525936365127563, 'DSJC0500.5.txt': 18.42532467842102, 'DSJC0500.9.txt': 20.713070392608643, 'DSJC1000.1.txt': 116.75400495529175, 'DSJC1000.5.txt': 145.9148268699646, 'DSJC1000.9.txt': 171.20650029182434}\n",
" AAD-MCP: 执行时间 = {'DSJC0125.1.txt': 0.0055429935455322266, 'DSJC0125.5.txt': 0.013042688369750977, 'DSJC0125.9.txt': 0.017969846725463867, 'DSJC0250.1.txt': 0.01753830909729004, 'DSJC0250.5.txt': 0.04675650596618652, 'DSJC0250.9.txt': 0.08019351959228516, 'DSJC0500.1.txt': 0.1433091163635254, 'DSJC0500.5.txt': 0.2132573127746582, 'DSJC0500.9.txt': 0.33021020889282227, 'DSJC1000.1.txt': 0.28937268257141113, 'DSJC1000.5.txt': 0.8791167736053467, 'DSJC1000.9.txt': 1.2328133583068848}\n",
" 贪心: 执行时间 = {'DSJC0125.1.txt': 0.0015063285827636719, 'DSJC0125.5.txt': 0.003003358840942383, 'DSJC0125.9.txt': 0.002640247344970703, 'DSJC0250.1.txt': 0.008993864059448242, 'DSJC0250.5.txt': 0.010194540023803711, 'DSJC0250.9.txt': 0.010005474090576172, 'DSJC0500.1.txt': 0.06428956985473633, 'DSJC0500.5.txt': 0.051430463790893555, 'DSJC0500.9.txt': 0.043711185455322266, 'DSJC1000.1.txt': 0.14725852012634277, 'DSJC1000.5.txt': 0.16768312454223633, 'DSJC1000.9.txt': 0.17772769927978516}\n",
" Welsh-Powell: 执行时间 = {'DSJC0125.1.txt': 0.002586841583251953, 'DSJC0125.5.txt': 0.003000497817993164, 'DSJC0125.9.txt': 0.006002187728881836, 'DSJC0250.1.txt': 0.011120796203613281, 'DSJC0250.5.txt': 0.014127492904663086, 'DSJC0250.9.txt': 0.03272223472595215, 'DSJC0500.1.txt': 0.05209708213806152, 'DSJC0500.5.txt': 0.0777275562286377, 'DSJC0500.9.txt': 0.18945813179016113, 'DSJC1000.1.txt': 0.18522953987121582, 'DSJC1000.5.txt': 0.4772758483886719, 'DSJC1000.9.txt': 1.2784678936004639}\n",
" DSATUR: 执行时间 = {'DSJC0125.1.txt': 0.2019205093383789, 'DSJC0125.5.txt': 0.2197577953338623, 'DSJC0125.9.txt': 0.24163603782653809, 'DSJC0250.1.txt': 1.571821928024292, 'DSJC0250.5.txt': 1.772461175918579, 'DSJC0250.9.txt': 1.8325576782226562, 'DSJC0500.1.txt': 14.750667810440063, 'DSJC0500.5.txt': 13.226407051086426, 'DSJC0500.9.txt': 14.38843822479248, 'DSJC1000.1.txt': 98.22970223426819, 'DSJC1000.5.txt': 109.20279622077942, 'DSJC1000.9.txt': 109.26631116867065}\n",
"\n",
"DSATUR:\n",
" DSJC0125.1.txt: 使用颜色数 = 6\n",
" DSJC0125.5.txt: 使用颜色数 = 22\n",
" DSJC0125.9.txt: 使用颜色数 = 51\n",
" DSJC0250.1.txt: 使用颜色数 = 10\n",
" DSJC0250.5.txt: 使用颜色数 = 37\n",
" DSJC0250.9.txt: 使用颜色数 = 92\n",
" DSJC0500.1.txt: 使用颜色数 = 16\n",
" DSJC0500.5.txt: 使用颜色数 = 65\n",
" DSJC0500.9.txt: 使用颜色数 = 170\n",
" DSJC1000.1.txt: 使用颜色数 = 27\n",
" DSJC1000.5.txt: 使用颜色数 = 115\n",
" DSJC1000.9.txt: 使用颜色数 = 299\n",
" FunSearch-MCP: 执行时间 = {'DSJC0125.1.txt': 0.004013776779174805, 'DSJC0125.5.txt': 0.003008127212524414, 'DSJC0125.9.txt': 0.0039904117584228516, 'DSJC0250.1.txt': 0.01337122917175293, 'DSJC0250.5.txt': 0.014790773391723633, 'DSJC0250.9.txt': 0.014544010162353516, 'DSJC0500.1.txt': 0.05017399787902832, 'DSJC0500.5.txt': 0.07002043724060059, 'DSJC0500.9.txt': 0.05488133430480957, 'DSJC1000.1.txt': 0.2132706642150879, 'DSJC1000.5.txt': 0.2238328456878662, 'DSJC1000.9.txt': 0.23056554794311523}\n",
" EoH-MCP: 执行时间 = {'DSJC0125.1.txt': 0.2837517261505127, 'DSJC0125.5.txt': 0.36574745178222656, 'DSJC0125.9.txt': 0.44835567474365234, 'DSJC0250.1.txt': 2.0048983097076416, 'DSJC0250.5.txt': 2.3928611278533936, 'DSJC0250.9.txt': 2.868635416030884, 'DSJC0500.1.txt': 15.525936365127563, 'DSJC0500.5.txt': 18.42532467842102, 'DSJC0500.9.txt': 20.713070392608643, 'DSJC1000.1.txt': 116.75400495529175, 'DSJC1000.5.txt': 145.9148268699646, 'DSJC1000.9.txt': 171.20650029182434}\n",
" AAD-MCP: 执行时间 = {'DSJC0125.1.txt': 0.0055429935455322266, 'DSJC0125.5.txt': 0.013042688369750977, 'DSJC0125.9.txt': 0.017969846725463867, 'DSJC0250.1.txt': 0.01753830909729004, 'DSJC0250.5.txt': 0.04675650596618652, 'DSJC0250.9.txt': 0.08019351959228516, 'DSJC0500.1.txt': 0.1433091163635254, 'DSJC0500.5.txt': 0.2132573127746582, 'DSJC0500.9.txt': 0.33021020889282227, 'DSJC1000.1.txt': 0.28937268257141113, 'DSJC1000.5.txt': 0.8791167736053467, 'DSJC1000.9.txt': 1.2328133583068848}\n",
" 贪心: 执行时间 = {'DSJC0125.1.txt': 0.0015063285827636719, 'DSJC0125.5.txt': 0.003003358840942383, 'DSJC0125.9.txt': 0.002640247344970703, 'DSJC0250.1.txt': 0.008993864059448242, 'DSJC0250.5.txt': 0.010194540023803711, 'DSJC0250.9.txt': 0.010005474090576172, 'DSJC0500.1.txt': 0.06428956985473633, 'DSJC0500.5.txt': 0.051430463790893555, 'DSJC0500.9.txt': 0.043711185455322266, 'DSJC1000.1.txt': 0.14725852012634277, 'DSJC1000.5.txt': 0.16768312454223633, 'DSJC1000.9.txt': 0.17772769927978516}\n",
" Welsh-Powell: 执行时间 = {'DSJC0125.1.txt': 0.002586841583251953, 'DSJC0125.5.txt': 0.003000497817993164, 'DSJC0125.9.txt': 0.006002187728881836, 'DSJC0250.1.txt': 0.011120796203613281, 'DSJC0250.5.txt': 0.014127492904663086, 'DSJC0250.9.txt': 0.03272223472595215, 'DSJC0500.1.txt': 0.05209708213806152, 'DSJC0500.5.txt': 0.0777275562286377, 'DSJC0500.9.txt': 0.18945813179016113, 'DSJC1000.1.txt': 0.18522953987121582, 'DSJC1000.5.txt': 0.4772758483886719, 'DSJC1000.9.txt': 1.2784678936004639}\n",
" DSATUR: 执行时间 = {'DSJC0125.1.txt': 0.2019205093383789, 'DSJC0125.5.txt': 0.2197577953338623, 'DSJC0125.9.txt': 0.24163603782653809, 'DSJC0250.1.txt': 1.571821928024292, 'DSJC0250.5.txt': 1.772461175918579, 'DSJC0250.9.txt': 1.8325576782226562, 'DSJC0500.1.txt': 14.750667810440063, 'DSJC0500.5.txt': 13.226407051086426, 'DSJC0500.9.txt': 14.38843822479248, 'DSJC1000.1.txt': 98.22970223426819, 'DSJC1000.5.txt': 109.20279622077942, 'DSJC1000.9.txt': 109.26631116867065}\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",
" \"AAD-MCP\": graph_coloring_v5,\n",
" \"贪心\": 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 AAD-MCP 贪心 Welsh-Powell DSATUR\n",
"MCP0125.1 7 6 6 8 7 6\n",
"MCP0125.5 24 22 22 26 23 22\n",
"MCP0125.9 53 51 51 56 53 51\n",
"MCP0250.1 12 10 10 13 11 10\n",
"MCP0250.5 40 37 37 43 41 37\n",
"MCP0250.9 92 92 92 99 93 92\n",
"MCP0500.1 18 16 16 20 18 16\n",
"MCP0500.5 68 65 65 72 71 65\n",
"MCP0500.9 171 170 170 175 169 170\n",
"MCP1000.1 29 27 27 31 29 27\n",
"MCP1000.5 123 115 115 127 121 115\n",
"MCP1000.9 316 299 299 321 313 299\n",
"\n",
"各算法在不同实例上的运行时间(秒):\n",
" FunSearch-MCP EoH-MCP AAD-MCP 贪心 Welsh-Powell DSATUR\n",
"MCP0125.1 0.0040 0.2838 0.0055 0.0015 0.0026 0.2019\n",
"MCP0125.5 0.0030 0.3657 0.0130 0.0030 0.0030 0.2198\n",
"MCP0125.9 0.0040 0.4484 0.0180 0.0026 0.0060 0.2416\n",
"MCP0250.1 0.0134 2.0049 0.0175 0.0090 0.0111 1.5718\n",
"MCP0250.5 0.0148 2.3929 0.0468 0.0102 0.0141 1.7725\n",
"MCP0250.9 0.0145 2.8686 0.0802 0.0100 0.0327 1.8326\n",
"MCP0500.1 0.0502 15.5259 0.1433 0.0643 0.0521 14.7507\n",
"MCP0500.5 0.0700 18.4253 0.2133 0.0514 0.0777 13.2264\n",
"MCP0500.9 0.0549 20.7131 0.3302 0.0437 0.1895 14.3884\n",
"MCP1000.1 0.2133 116.7540 0.2894 0.1473 0.1852 98.2297\n",
"MCP1000.5 0.2238 145.9148 0.8791 0.1677 0.4773 109.2028\n",
"MCP1000.9 0.2306 171.2065 1.2328 0.1777 1.2785 109.2663\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": 43,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJNCAYAAAAs3xZxAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAuB5JREFUeJzs3Qm8TPX/x/HPte9U9uwUUshWyVaKLC3SnlDaQ9osqVAR2kgq2WlVlgpFZJeKiiSEpJKy77v5P97ffmf+c++de91l5s7ce1/Px2PMveecmTkz98yYz/l8vp9vjM/n8xkAAAAAAAi5LKG/SwAAAAAAIATdAAAAAACECUE3AAAAAABhQtANAAAAAECYEHQDAAAAABAmBN0AAAAAAIQJQTcAAAAAAGFC0A0AAAAAQJgQdAMAAAAAkFmD7uPHj1uvXr2sQoUKlitXLitZsqS1b9/etm7dmuBtVq5caTlz5rRx48al6b4CAAAAABAom0W5rl272vjx4+3hhx+2SpUq2fr16+3NN9+0ZcuW2erVqy1Hjhyxtj969Ki1a9fOjh07FrF9BgAAAAAg6oPugwcP2qhRo6xHjx72/PPP+5dXrlzZOnXqZIsXL7bLL7881m169+5tP//8cwT2FgAAAACAdFRefuDAATtx4oTly5cv1nKVjku2bLHPGSxYsMBeffVV69KlS5ruJwAAAAAAwcT4fD6fRbHatWvbX3/9ZZMmTbK6deu6kvLbbrvNlY+vW7fOjfOWffv2WfXq1e2cc86xt99+240BHzt2rHXs2DHJj6WXYv/+/WF8NgAAAACAjCR//vwWExOTPsvLZcaMGda8eXNr3Lixf1mNGjVs1qxZ/oBblN1WwKzx30kdz63x37p49u7da2XKlAnxMwAAAAAAZFR79uyxggULpt+ge+TIkbZq1Sq7+OKLrVq1au7n5cuXW58+fWzMmDGWPXt2mzJlik2YMMEmT57suptv3rw5Sff9wgsvWL9+/eIt/+OPP6xAgQJheDYAAAAAgIxA1dalS5c+7XZRHXSvWbPGBdcKjJ955hn/8kGDBlnPnj2tTp06dvPNN9t9993nGqtdf/31ybp/TUX26KOPxnvRFHATdAMAAAAATiex0vKob6Q2e/ZsN866W7dusZY/9thjljt3bps3b57dfffdrrHaU089ZTt27HCX3bt3+xux6fdTp04FvX/dzguwCbQBAAAAAKEW1UG31+Mt7hht/a6u5rpozLcarZUvX96KFCniLrVq1fKP89bvW7Zsicj+AwAAAAAyt6guL1cHchk3bpw9/vjj/kC8f//+dvz4cdfZPG4WXP755x9r166dPfHEE9asWTMrXrx4mu87AAAAAABRPWXYkSNHrGbNmm5qsAsuuMA1SVu/fr399ttvVqJECTfmu1ChQvFup0Zqynwnd8owjelW1zl1MafUHAAAAACQ2vgxqsvLNSXYggULXJO0Xbt22dy5c9147datW9uXX34ZNOAGAAAAACBaRHWmO62R6QYAAAAAhDJ+jOox3QAAAADS1smTJ13/JCCzyZo1q2XPnj3k90vQDQAAAMA1LN62bZvL2lEMi8wqZ86cVrhw4ZBWPhN0AwAAAHDB9p49e9yUu3nz5rWYmJhI7xKQZnSiSRUeeh9oSmoJVeBN0A0AAABkcgo4/v33XxdkKMsHZEa5c+e2/Pnz259//mk7duwIWdAd1d3LAQAAAKTNOG5daCaMzC4mJsY1Rzt69GjIehsQdAMAAACZ3IkTJ9x1tmwUwgLZ/9dMTSeiQoGgGwAAAIDDOG7AQv4+IOgGAAAAACBMCLoBAAAAAAgTgm4AAAAAAMKETgkAAAAA0obPZ7Zzp9mBA2b58pmddZYG0EZ6r4CwItMNAAAAILz27DEbOtTsnHPMihQxK1/+v2v9ruVaH0GbN292zbMSutSpUycsj7tlyxa7/fbbrUSJEpYnTx6rX7++LViwwNKLcuXKWceOHUN2XzExMdatWzf/st27d/v/BuPGjfMvP3bsmPXp08fKlCljuXLlcn+fWbNmxbq/uH9Dzb/drFkz++677yytkekGAAAAED4Khtq2NTt0KP66TZvMHnnErHdvs8mTzZo3t0hq2bKl3XrrrfGWn6WMfIht3brVBYv58uWzJ554wnw+n7366qt21VVX2S+//OKC0Mzoxx9/DPpzoFtuucWmTp1qd999t9WqVcs+/PBDa9Wqlc2YMcOaBxxDVapUsd69e7sp8XRiZdSoUda4cWNbtmyZVa9e3dIKQTcAAACA8AXcrVr9V1auS1zessOH/9tuxoyIBt5Vq1a1du3apcljvfHGG7Z9+3abN2+eVatWzS1TwH3++efbkCFD3CUzWrlyZaJBt4JtXbp27WpDVSVhZp06dbLy5ctbr169YgXdxYoVi/X3vOeee6xChQr2wgsv2Pvvv29phfJyAAAAAKGnknFluBVYnzqV+LZar+20fYRLzdPK77//7q5LlizpX6bgu2fPni7wzqz27Nljv/32m/v5hx9+iLd+7Nix7vrRRx/1L8uRI4c7YaHtVZKekLPPPtu9tt98842lJYJuAAAAAKE3fvx/JeWnC7g92k7bT5hg0Wj+/PlubLCuE1uuscf6XYHjoEGDrGzZspY3b15r1KiRrV271n+72rVru+uHH37YDqix3P8oC6uy6UAa533ZZZe5+9H475tvvtmNBw906tQp93jnnnuu5c6d22V0n3rqKTf+OVDfvn3d/sncuXPdOOczzzzTfxLA8/PPP9s111zjxkIXLlzYBbUrVqwI+tqoHF73o21LlSplzz77rH/drl27bNu2bQlelO336DkGZrh1ffnll8d6rKVLl1rx4sXd6xroiiuucK/L0aNHLTF67nFfk3Aj6AYAAAAQWspaDxuWstu+9lrwUvQ0cPjwYduxY0esy/Hjx1N0X927d7c333zTNQZTVlbZVQWFngcffNAFmRMnTnQNwR5//HH7+++/493P9OnTrWnTpi6Q1phvBemLFi2yiy++2Pbu3evfTgG2suQNGza0119/3dq2bWsDBw50l2DGjx/vSrEVrLdp08aNLQ8s8db9L1++3N2vLps2bXLjoQNPHIiCdZ1Q0MmAl156yT0XNTlTCbhcf/31bl1Cl7p16/rvS7ctWrSoy1greFYwH9jEbt++fbZz504X2MelsfgffPCBC8gTcujQIduwYYNVrlzZ0hJjugEAAACElqYF27gx+bdTsK3b7dr133RiaUzjrHUJ9Pnnn7ssb3ItXLjQVq1a5cYVi7LZGqetQF6ZY5VEz5kzx8aMGeOC6ZdfftmGDx9uAwYMsEfUXM69HD43dlkB8ISACoDSpUu7scpqIHbvvfe6Zf/++68L8HVfnjVr1rig/Zlnnom3f4899ph99dVXLmCOSycJTp486bLKXkM3Bf5qPqZgXdl4jzL8uv9+/fq53xXsK5hWFl3B/Msvv5xoybdOJgRSEK4M9+rVq10DtMCgfP/+/UFvkxCdMNHrreeikwN6bXWionPnzpaWCLoBAAAAhFZAuXSKKLiKQNB94403+oNYz4UXXpii+3ryySf9AbdccMEF/uBbQbdkyZLFlZLros7bCrAV8Kr8uUePHvbrr7+6MnVdimiKtTgUmHrUmVvWrVvnpsVSSbqC6sB9CKSseLCAW9l+3Val5YEd1LX/CmK1z4GUWdZz9ei5Kej2SuZr/6+MPqkUZOu5KNutExOBXcazZs3qrhWMx+WVq6sZXs6cOd0ynTQIfN1Unv/KK6+4kwFpiaAbAAAAQGgFlCqnSP78Fgkqb9bY4ORQyXMwmnM7UNxgVWXaBQoU8DdS05RXuo2C/Oeee86Vm3vjnR944AFXph2sMZhnypQpLkOusd4KepUdVwCqMdXBqLw9GG2vzHBggzdPtmzxw0dN2eUFuQk91+QG3Rp3rky5Am4F3p4zzjjD3bey13Gpk7lK6VUGr07motsr065x3Aq49bvmQ09rjOkGAAAAEFrKUlesqK5VybudttftzjzT0guVkAcTLDMdSJnjuA3TFFRqnPXBgwddwO1lxNWgTCcDvItKvbXMC4KVCde
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"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=(10, 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",
" plt.scatter(x, y,\n",
" color=colors[i % len(colors)], # 使用取模确保不会越界\n",
" marker=markers[i % len(markers)],\n",
" s=100,\n",
" label=alg)\n",
" # 为DA和EOH设置不同的标注位置\n",
" if alg in ['DSATUR', 'EoH-MCP']:\n",
" xytext = (-90, 20) # 左上方偏移\n",
" elif alg in ['FunSearch-MCP']:\n",
" xytext = (-50, 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('平均运行时间(秒)', fontsize=18)\n",
"plt.ylabel('平均着色数量', 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()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"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": 11,
"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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
"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
}