first
This commit is contained in:
BIN
frame_plot/pareto_front_strategy.png
Normal file
BIN
frame_plot/pareto_front_strategy.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 188 KiB |
69
frame_plot/pareto_front_visualization.py
Normal file
69
frame_plot/pareto_front_visualization.py
Normal file
@@ -0,0 +1,69 @@
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib.patches import Polygon
|
||||
import matplotlib.font_manager as fm
|
||||
|
||||
# 设置中文字体
|
||||
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
|
||||
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
|
||||
|
||||
# 生成随机种群
|
||||
np.random.seed(42)
|
||||
n_points = 50
|
||||
points = np.random.rand(n_points, 2) * 10
|
||||
|
||||
# 识别帕累托前沿
|
||||
def is_pareto_efficient(costs):
|
||||
is_efficient = np.ones(costs.shape[0], dtype=bool)
|
||||
for i, c in enumerate(costs):
|
||||
if is_efficient[i]:
|
||||
is_efficient[is_efficient] = np.any(costs[is_efficient] < c, axis=1) # Remove dominated points
|
||||
is_efficient[i] = True
|
||||
return is_efficient
|
||||
|
||||
# 获取帕累托前沿点
|
||||
pareto_front_mask = is_pareto_efficient(points)
|
||||
pareto_front = points[pareto_front_mask]
|
||||
|
||||
# 创建图形
|
||||
plt.figure(figsize=(10, 8))
|
||||
|
||||
# 绘制非帕累托前沿点
|
||||
plt.scatter(points[~pareto_front_mask, 0], points[~pareto_front_mask, 1],
|
||||
c='lightgray', s=100, label='种群个体')
|
||||
|
||||
# 绘制帕累托前沿点
|
||||
plt.scatter(pareto_front[:, 0], pareto_front[:, 1],
|
||||
c='red', s=100, label='帕累托前沿个体')
|
||||
|
||||
# 连接帕累托前沿点
|
||||
sorted_front = pareto_front[np.argsort(pareto_front[:, 0])]
|
||||
plt.plot(sorted_front[:, 0], sorted_front[:, 1], 'r--', alpha=0.5)
|
||||
|
||||
# 添加密度分布示意
|
||||
for point in pareto_front:
|
||||
circle = plt.Circle(point, 0.5, color='blue', fill=False, alpha=0.2)
|
||||
plt.gca().add_patch(circle)
|
||||
|
||||
# 添加箭头和标注
|
||||
plt.arrow(8, 8, -0.5, -0.5, head_width=0.2, head_length=0.2, fc='k', ec='k')
|
||||
plt.text(8.2, 8.2, '优化方向', fontsize=20)
|
||||
|
||||
# 设置标题和标签
|
||||
# plt.title('帕累托前沿维护策略示意图', fontsize=14, pad=20)
|
||||
plt.xlabel('算法性能指标', fontsize=20)
|
||||
plt.ylabel('运行时间', fontsize=20)
|
||||
|
||||
# 添加图例
|
||||
plt.legend(loc='upper right', fontsize=20)
|
||||
|
||||
# 添加网格
|
||||
plt.grid(True, linestyle='--', alpha=0.3)
|
||||
|
||||
# 设置坐标轴范围
|
||||
plt.xlim(-0.5, 11)
|
||||
plt.ylim(-0.5, 11)
|
||||
|
||||
# 保存图片
|
||||
plt.savefig('pareto_front_strategy.png', dpi=300, bbox_inches='tight')
|
||||
plt.close()
|
BIN
frame_plot/rador.png
Normal file
BIN
frame_plot/rador.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 722 KiB |
213
frame_plot/show_frame.ipynb
Normal file
213
frame_plot/show_frame.ipynb
Normal file
@@ -0,0 +1,213 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import numpy as np\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"from matplotlib.patches import Polygon\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",
|
||||
"np.random.seed(42)\n",
|
||||
"n_points = 50\n",
|
||||
"points = np.random.rand(n_points, 2) * 10\n",
|
||||
"\n",
|
||||
"# 识别帕累托前沿\n",
|
||||
"def is_pareto_efficient(costs):\n",
|
||||
" is_efficient = np.ones(costs.shape[0], dtype=bool)\n",
|
||||
" for i, c in enumerate(costs):\n",
|
||||
" if is_efficient[i]:\n",
|
||||
" is_efficient[is_efficient] = np.any(costs[is_efficient] < c, axis=1) # Remove dominated points\n",
|
||||
" is_efficient[i] = True\n",
|
||||
" return is_efficient\n",
|
||||
"\n",
|
||||
"# 获取帕累托前沿点\n",
|
||||
"pareto_front_mask = is_pareto_efficient(points)\n",
|
||||
"pareto_front = points[pareto_front_mask]\n",
|
||||
"\n",
|
||||
"# 创建图形\n",
|
||||
"plt.figure(figsize=(10, 8))\n",
|
||||
"\n",
|
||||
"# 绘制非帕累托前沿点\n",
|
||||
"plt.scatter(points[~pareto_front_mask, 0], points[~pareto_front_mask, 1], \n",
|
||||
" c='lightgray', s=100, label='种群个体')\n",
|
||||
"\n",
|
||||
"# 绘制帕累托前沿点\n",
|
||||
"plt.scatter(pareto_front[:, 0], pareto_front[:, 1], \n",
|
||||
" c='red', s=100, label='帕累托前沿个体')\n",
|
||||
"\n",
|
||||
"# 连接帕累托前沿点\n",
|
||||
"sorted_front = pareto_front[np.argsort(pareto_front[:, 0])]\n",
|
||||
"plt.plot(sorted_front[:, 0], sorted_front[:, 1], 'r--', alpha=0.5)\n",
|
||||
"\n",
|
||||
"# 添加密度分布示意\n",
|
||||
"for point in pareto_front:\n",
|
||||
" circle = plt.Circle(point, 0.5, color='blue', fill=False, alpha=0.2)\n",
|
||||
" plt.gca().add_patch(circle)\n",
|
||||
"\n",
|
||||
"# 添加箭头和标注\n",
|
||||
"plt.arrow(8, 8, -0.5, -0.5, head_width=0.2, head_length=0.2, fc='k', ec='k')\n",
|
||||
"plt.text(8.2, 8.2, '优化方向', fontsize=20)\n",
|
||||
"\n",
|
||||
"# 设置标题和标签\n",
|
||||
"# plt.title('帕累托前沿维护策略示意图', fontsize=14, pad=20)\n",
|
||||
"plt.xlabel('算法性能指标', fontsize=20)\n",
|
||||
"plt.ylabel('运行时间', fontsize=20)\n",
|
||||
"\n",
|
||||
"# 添加图例\n",
|
||||
"plt.legend(loc='upper right', fontsize=20)\n",
|
||||
"\n",
|
||||
"# 添加网格\n",
|
||||
"plt.grid(True, linestyle='--', alpha=0.3)\n",
|
||||
"\n",
|
||||
"# 设置坐标轴范围\n",
|
||||
"plt.xlim(-0.5, 11)\n",
|
||||
"plt.ylim(-0.5, 11)\n",
|
||||
"\n",
|
||||
"# 保存图片\n",
|
||||
"plt.savefig('pareto_front_strategy.png', dpi=300, bbox_inches='tight')\n",
|
||||
"plt.close() "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"text1 = '''贪心\n",
|
||||
"回溯\n",
|
||||
"高度优先\n",
|
||||
"图着色\n",
|
||||
"颜色分配\n",
|
||||
"\n",
|
||||
"饱和度优先\n",
|
||||
"回溯\n",
|
||||
"相邻顶点\n",
|
||||
"图着色\n",
|
||||
"颜色约束\n",
|
||||
"\n",
|
||||
"贪心\n",
|
||||
"回溯\n",
|
||||
"高度优先\n",
|
||||
"使用次数\n",
|
||||
"颜色选择\n",
|
||||
"\n",
|
||||
"贪心\n",
|
||||
"相邻未着色\n",
|
||||
"颜色选择\n",
|
||||
"冲突减少\n",
|
||||
"图着色\n",
|
||||
"\n",
|
||||
"饱和度优先\n",
|
||||
"动态更新\n",
|
||||
"可用颜色\n",
|
||||
"相邻顶点\n",
|
||||
"图着色\n",
|
||||
"\n",
|
||||
"饱和度\n",
|
||||
"度数选择\n",
|
||||
"相邻顶点\n",
|
||||
"颜色使用\n",
|
||||
"图着色\n",
|
||||
"\n",
|
||||
"动态更新\n",
|
||||
"可用颜色\n",
|
||||
"相邻冲突\n",
|
||||
"图着色\n",
|
||||
"颜色选择\n",
|
||||
"\n",
|
||||
"饱和度优先\n",
|
||||
"动态更新\n",
|
||||
"相邻顶点\n",
|
||||
"颜色选择\n",
|
||||
"图着色\n",
|
||||
"'''\n",
|
||||
"text2 = '''\n",
|
||||
"贪心\n",
|
||||
"度数排序\n",
|
||||
"颜色分配\n",
|
||||
"图着色\n",
|
||||
"最低可用颜色\n",
|
||||
"\n",
|
||||
"优化\n",
|
||||
"优先队列\n",
|
||||
"颜色分配\n",
|
||||
"贪心\n",
|
||||
"图着色\n",
|
||||
"\n",
|
||||
"度数排序\n",
|
||||
"邻居检查\n",
|
||||
"最小颜色\n",
|
||||
"图着色\n",
|
||||
"贪心\n",
|
||||
"\n",
|
||||
"修改贪心\n",
|
||||
"邻居历史\n",
|
||||
"颜色最小化\n",
|
||||
"图着色\n",
|
||||
"颜色选择\n",
|
||||
"\n",
|
||||
"Welsh-Powell\n",
|
||||
"度数排序\n",
|
||||
"颜色分配\n",
|
||||
"贪心\n",
|
||||
"图着色\n",
|
||||
"\n",
|
||||
"贪心\n",
|
||||
"迭代着色\n",
|
||||
"相邻约束\n",
|
||||
"图着色\n",
|
||||
"颜色选择\n",
|
||||
"\n",
|
||||
"Welsh-Powell\n",
|
||||
"贪心\n",
|
||||
"降序着色\n",
|
||||
"图着色\n",
|
||||
"颜色分配\n",
|
||||
"\n",
|
||||
"贪心\n",
|
||||
"度数优先\n",
|
||||
"最小颜色\n",
|
||||
"相邻约束\n",
|
||||
"图着色'''"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"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
|
||||
}
|
Reference in New Issue
Block a user