{ "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 }