旅行商问题定义
视频将旅行商问题(TSP)定义为一个经典的优化问题:给定 n 个城市组成的集合,寻找一条访问每个城市恰好一次的最短可能路线。配图以平面上的红色城市点及其连接而成的环游路线直观呈现了这一概念。
Quantum Ink · YouTube · 8:10
这段120秒的视频在基于网页的机器学习游乐场中介绍了旅行商问题(TSP)。讲解者将TSP定义为:寻找一条经过n座城市的最短路径,且每座城市恰好访问一次;指出尽管问题描述简单,求解却十分困难;并说明该游乐场实现了两种方法:遗传算法与基于弹性神经网络和自组织映射的方法。随后,视频打开遗传算法页面,展示包括种群规模1000、启用贪心交叉等参数,解释贪心交叉策略会选择最近的未访问城市,同时指出路径长度会在状态栏中实时更新。最后,视频建议采用较大的种群规模,并引用一条经验性指导原则:种群规模应为30至60倍的n。 这段时长为120秒的视频,展示了一个基于网页的旅行商问题遗传算法交互平台。讲解员首先对比了种群规模分别为100、50和30的多次运行结果,指出较小种群规模下容易出现路径自相交以及最终路径长度更长的现象。随后视频演示刷新页面可恢复所有默认输入,并切换至右侧自定义面板:其中‘城市数量’将问题实例规模从30更改为20,视觉样式参数用于调整标记形状与颜色,而‘延迟’参数则控制动画的更新速率。 本视频通过一个交互式机器学习实验平台,演示了两种求解旅行商问题(TSP)的启发式方法。首先应用遗传算法,展示增大种群规模与迭代次数如何帮助其为100座城市找到一条质量良好的近似路径,但该路径仍可能残留部分交叉;旁白明确指出,该方法仅提供近似解,而非保证最优的解。其次,视频引入一种基于弹性神经网络的替代方法,该方法被描述为科霍宁自组织映射(SOM)的一种变体;它采用一个神经元环,持续调整自身形状以包裹所有城市,从而以不同于遗传算法的机制最小化路径长度,并有望避免遗传算法中出现的路径交叉问题。 本 120 秒片段演示了在 Gincker 机器学习 Playground 中使用自组织映射(SOM)神经网络求解旅行商问题(TSP)。从一个已收敛的 30 城市解出发,演示者通过将迭代次数增加至 100 次60,000 并将学习半径减小至 0.05,将问题规模扩展至 43 秒,SOM 环在动画中逐步形变,最终收敛为一条无交叉的路径,其路径长度为 8,029——声称比遗传算法基线更短。该片段最后展示了平台更广泛的30+ 机器学习模型库。 本节演示一个专注于旅行商问题(TSP)的机器学习交互式界面。用户浏览一个人工智能菜单,其中突出显示了自组织映射(SOM)与遗传算法作为求解方法。主视图显示一个2D散点图:城市以红色圆点表示,优化路径以绿色线条表示,并标出计算所得的路径长度为1.9229。
在学习检查器中查看要点和时刻,或切换阅读标签查看完整笔记。
依据视频画面与讲解整理,并非逐字语音转写。
视频起始于一个名为“旅行商问题(TSP)”的Gincker网页。一幅2D图表显示红色城市点与绿色巡游路径;左侧面板标注为“神经网络——旅行商问题”,右侧面板包含numberOfCities等自定义字段。讲解者介绍这是机器学习系列视频的第二集,并说明本集将采用机器学习方法求解TSP。
讲解内容给出核心定义:TSP是一个经典优化问题,目标是在n座城市构成的集合中,找出一条访问每座城市恰好一次的最短可能路径。画面通过在一组固定点上绘制路径来辅助说明这一定义。讲解者随后补充一个定性提醒:该问题看似简单,实则极难求解。
接下来,视频指出该游乐场为TSP实现了两种机器学习方法:其一是遗传算法;其二是基于弹性神经网络与自组织映射的方法。本片段未展示这两种方法的任何公式;重点在于命名这两类解法,并为切换至遗传算法演示做铺垫。
浏览器随后跳转至网址 https://gincker.com/AI/genetic-algorithm-traveling-salesman。页面布局保持相似,但左侧输入面板变更为“遗传编程——旅行商问题”。可见参数包括:迭代次数:100、种群规模:1000、贪心交叉:启用、随机种子:3;右侧面板显示:numberOfCities:30。此时图表中的红色点数较初始神经网络视图有所减少。
随着遗传编程动画运行,绿色巡游路径在固定的红色城市点上反复重绘。讲解者表示,遗传算法借助默认参数即可高效求解TSP。接着他解释交叉规则:该实现采用贪心算法,尝试选择最近的未访问城市作为下一步移动目标,并指出这种方法能快速生成一条实际较短的路径。
讲解者指出,当前路径长度会在底部状态栏中实时更新。随后他转向初始化规模参数,并从输入面板中指出,该演示使用了非常大的种群规模1000。给出的理由是:该参数应足够大,以便从一个丰富的解集合出发。他引用了一条常见经验法则,即种群规模通常取城市数量的30至60倍;此时视频片段在讲解者刚要讨论更小取值的影响时戛然而止。
视频片段以一条完整的TSP路径开场,该路径绘制在红色城市点之上;底部状态栏显示“路径长度 = 4296”,左侧面板显示种群规模为100、迭代次数为100。
用户将种群规模更改为50后再次运行优化器。多个候选路径随即出现,随后收敛为唯一最终路线;解说员指出其中一些路径存在自相交现象,且所得路径长度比此前大规模种群运行的结果更长。
种群规模进一步降低至30。再次运行后,最终显示的路径更长,路径长度最终为5816,从而强化了对100、50和30三者之间的对比。
解说员随后解释刷新浏览器页面的效果:输入面板恢复默认值,遗传算法在默认数据上重新运行。直观可见,种群规模恢复为100,新完成的运行结果路径长度为4218。
画面焦点转向右侧“自定义”面板。解说员将其描述为控制结果可视化外观的设置区域;该面板同时暴露参数 numberOfCities,其默认值为30。
用户将 numberOfCities 从30修改为20,然后点击“更新”。中心图表随之以更少的城市点重新生成,针对20座城市的实例优化完成后,路径长度为3903。
接下来,更改显示样式:citySymbol 改为十字形,citySymbolColor 改为蓝色,lineColor 改为紫色。点击“更新”后,同一20座城市的题目被重新绘制——城市点变为蓝色十字,路径线变为紫色,最终路径长度为3769。
最后,解说员说明 delay 参数控制可视化更新的速度,默认值100表示每100毫秒更新一次。该值被更改为500,并在视频片段结束前点击“更新”。
视频以旅行商问题(TSP)通过遗传算法求解的可视化画面开场。界面在 20 个蓝色正方形表示的城市,位于一个 2D 平面上,并由一条紫色路径连接。左侧参数显示种群规模为 1000,迭代次数为 100。随着算法运行,路径持续变形,逐步消除大环路并缩短总距离。解说员指出进度条更新缓慢,反映出评估与演化候选路径种群所需的大量计算工作。本片段结束时,路径长度稳定在约 2709,形成一条相对简洁、无自交的环路。
为展示可扩展性,解说员将问题复杂度提升至100座城市。意识到更大的搜索空间需要更多计算资源,种群规模被调高至5000,迭代次数增至500。为使可视化更易观察,动画延迟被缩减至1毫秒。点击更新后,屏幕上瞬间布满密集而混乱的紫色线条,代表初始随机生成的路径种群。随后几秒内,算法快速剪除冗余路径并重新组合。解说员指出,尽管最终路径长度显著下降至8476,但仔细观察仍可见部分线段彼此交叉。解说员明确说明:该结果仅为“非常优秀的近似解”,但绝非“最短路径”,从而凸显遗传算法这类启发式方法在求解TSP等NP难问题时的本质局限。
针对残余路径交叉这一缺陷,解说员引入另一种方法:弹性神经网络——一种基于科霍宁自组织映射(SOM)的变体。用户通过菜单选择“用于旅行商问题的SOM”,加载出一个全新的交互环境。此处,城市以红色圆点表示,解则被可视化为一条连续的绿色神经元环。不同于遗传算法中离散的路径重组,该模型依赖类物理作用力:环状结构主动收缩以最小化自身长度,同时排斥城市点以确保全部城市均被包围在环内。解说员指出,神经元天然趋向形成环状结构,为后续平滑、无交叉的优化过程奠定基础,从而天然规避了前一方法中出现的拓扑缺陷。
视频以一个完整的旅行商问题解开场,该解对应于30座城市,显示为一条绿色多边形路径,连接坐标网格上呈红色圆形的节点,该网格尺寸为。叙述者立即对方法进行背景说明:尽管自组织映射方法被描述为不如遗传算法高效,但它被呈现为一种将无监督拓扑学习应用于组合优化的有趣演示。左侧面板显示神经网络参数,包括迭代次数=10000、学习率=0.5、学习半径=0.1以及kohonen=3;右侧面板包含图表定制选项。状态栏报告当前路径长度为4339。
主讲人转而通过调整参数来演示方法的可扩展性,处理更大规模的实例。首先,在定制面板中将城市数量(numberOfCities)从30更改为100。接着聚焦于训练参数:为适应扩大的搜索空间,迭代次数从10000增至60000,即提升为原来的六倍。关键的是,学习半径从0.1减半至0.05——这一启发式调整被解释为:当城市分布更密集时,需更精细的神经元定位。点击“更新”后,系统重新生成100个随机城市坐标,并初始化一个含100个神经元的新环形结构,重置整个优化过程。
核心可视化过程展开:SOM 在约43秒内经历竞争学习。初始时,绿色环形表现为一条缠绕、不规则的闭合曲线,散落在平面上的100个红色城市点之间。每轮迭代中,神经元向其最近的城市移动,同时邻域协作维持拓扑连续性。状态栏中的路径长度计数器提供量化反馈,数值从接近9497的初始值持续下降。视觉上可见:环路逐渐解开,尖锐弯折趋于平滑,环形逐步收缩成紧凑的环绕路径,包裹住各城市簇。至第90秒时,形变停止,曲线稳定为一条清晰的多边形链。
对收敛后的解进行质量检验。旁白强调两个关键性质:第一,路径无任何边交叉——直观可见绿色路径构成一个简单闭合多边形,包围全部城市且不发生自交;第二,最终路径长度恰好为8029,并指出该值短于对应遗传算法的结果(尽管本片段未显示该GA基准数值)。这些观察支持如下论断:尽管计算效率较低,SOM 方法仍能生成高质量、拓扑有效的巡游路径。某顶点上的黄色高亮标记指示路径的起点/终点,凸显解的循环本质。
演示最后将该 TSP 求解器置于更广阔的 Gincker 机器学习 Playground 生态系统中加以定位。鼠标悬停于 AI 菜单时,弹出分类下拉列表,涵盖超过30种模型,涉及分类、回归、时间序列、聚类、降维及符号计算等领域。类别包括:机器学习(AdaBoost、决策树、随机森林)、神经网络变体(反向传播、Kohonen 自组织映射、弹性传播)、卷积神经网络,以及数学与统计工具。此概览表明,SOM-TSP 集成只是同一交互式框架下众多可选应用之一,鼓励用户探索其他算法与问题领域。
视频开头呈现一个下拉菜单,列出多种机器学习类别。讲解员说明如何选择模型以测试各类算法。特别地,‘神经网络:自组织映射(SOM)’栏目被高亮显示,其中列有‘用于旅行商问题的Kohonen自组织映射’和‘用于旅行商问题的遗传算法’。
菜单收起后,完整展现‘旅行商问题(TSP)’图表。红色圆点代表笛卡尔平面上的城市,由一条绿色连线依次连接,构成巡游路径。左下角显示当前‘路径长度:1.9229’。讲解员随后结束视频。
视频将旅行商问题(TSP)定义为一个经典的优化问题:给定 n 个城市组成的集合,寻找一条访问每个城市恰好一次的最短可能路线。配图以平面上的红色城市点及其连接而成的环游路线直观呈现了这一概念。
讲述者明确对比了该问题表述的简洁性与实际求解的困难性。这种对比是以定性警示的方式呈现,而非形式化的复杂度证明。
该片段说明,机器学习游乐场为旅行商问题实现了两种方法:一种是遗传算法,另一种是基于弹性神经网络与自组织映射相结合的方法。本视频仅详细演示了遗传算法页面。
在导航至遗传算法对应网址后,可见输入面板显示:迭代次数为100、种群规模为1000、启用贪心交叉为真、随机种子为3;而在定制面板中还可见城市数量为30。这些参数共同界定了所观察到的路径优化动画。
视频解释道,该遗传算法采用贪心交叉策略:在每一步中,它都尝试选择距离当前城市最近的未访问城市作为下一个访问城市。该启发式策略被介绍为一种能快速获得较短路径的方法。
讲解者指出,当前路径长度会在状态栏区域更新。在演示中,底部栏会随着路线优化过程实时显示变化的路径长度数值。
该片段建议采用较大的初始种群,以便搜索从一组丰富的解出发。演示中使用的种群规模为1000,并提到一个常见参考标准:种群规模通常为城市数量的30至60倍。
本视频将旅行商问题建模为一个位于2维坐标系中的城市点集,并以连接线段形式绘制候选路径。屏幕上关注的核心指标是底部状态栏中显示的总路径长度。
在迭代次数固定为100的情况下,演示对比了种群规模100、50和30。讲解员指出,50未能得到较好的解,且可见的最终路径长度依次从4296上升至4823再至5816。
讲解员明确指出,在种群规模为50的运行中,那些自身相交的路径是解质量较差的标志。这一视觉提示与更长的最终路径长度相对应。
点击浏览器的重新加载按钮,会将左侧输入面板重置为默认值,并在默认实例上重新运行遗传算法。在所展示的示例中,重置后的运行以路径长度 = 4218结束。
右侧面板被介绍为用于控制结果可视化效果的外观。它包含若干显示选项,例如标记类型、颜色、线宽和延迟,以及 numberOfCities 参数——该参数用于改变旅行商问题(TSP)实例的规模。
参数 numberOfCities 的默认值为30。将其更改为20并点击“更新”后,图表将重新生成,城市点数量减少,并针对这个更小的问题启动优化。
将 citySymbol 改为 cross、citySymbolColor 改为 blue、lineColor 改为 purple,再点击“更新”,仅会改变视觉呈现效果;底层的20-城市实例保持不变,而路径将以新样式重新绘制。
延迟参数设置可视化刷新间隔。讲解员指出,默认值100表示结果每100毫秒更新一次,而演示中将其改为500。
TSP是一类经典优化问题,目标是找出一条最短可能的闭合路径,使其恰好访问列表中的每座城市一次,并最终返回出发城市。在本视频中,它被可视化为寻找连接一组2维点的最小周长多边形。
一种受生物进化启发的启发式搜索方法。它维护一组候选路径构成的“种群”,并通过多轮“迭代”施加交叉、变异等操作,逐步演化出更优解。该方法擅长在合理时间内找到高质量近似解,但无法保证获得绝对最优路径,尤其当城市数量庞大时。
一种基于科霍宁自组织映射的TSP求解新思路。它将路径建模为一条具有柔性的神经元环,通过学习率与邻域半径调控其形态变化:环在收缩中最小化自身长度,同时扩张以覆盖全部城市,从而自然生成平滑且无自相交的路径。
视频强调了解决 NP 难问题的一个关键区别:遗传算法等启发式方法仅能提供“非常优的近似解”(例如路径长度 8476 对于 100 个城市)在合理时间内求解,但可能导致路径交叉等瑕疵。与穷举搜索方法不同,它们无法保证找到真正的全局最优解;而穷举搜索方法对大规模输入在计算上不可行。
经典的 NP 难优化问题:给定 n 座城市及其两两之间的距离,求访问每座城市恰好一次并返回起点的最短哈密顿回路。目标是最小化总欧氏路径长度。本演示中,城市在正方形区域内随机放置;解的质量以标量路径长度衡量。
一种无监督神经网络,能将高维输入映射到低维离散网格,同时保持拓扑结构。在 TSP 中,其实现为一个1维环形神经元阵列;这些神经元在2维空间中的位置通过竞争学习不断调整:每座城市激活其最近的神经元,该神经元及其邻域神经元均向该城市移动。经多轮迭代,该环形结构自组织为一条合法的巡游路径。
关键可调参数演示:numberOfCities 设置问题规模;iterations 控制训练时长(按比例缩放 对应于 个城市);学习半径控制邻域范围(针对更密集的实例减小为 以实现更精细的定位);学习率(保持为0.5)调节更新幅度;Kohonen 参数(设为3)可能与网格拓扑结构或邻域函数形状相关。
训练过程中,绿色环代表当前神经元位置,构成一条候选路径。路径长度指标对相邻神经元(按邻近性分配的城市)之间的欧氏距离求和。单调递减表明学习有效;稳定则表示收敛。最终状态中无边交叉,反映了成功的拓扑保持——自组织映射(SOM)因邻域耦合约束而天然避免自相交。
对比范式:遗传算法(GA)采用基于种群的进化搜索,对排列表示进行交叉/变异操作;自组织映射(SOM)则在嵌入式环形拓扑上执行连续的类梯度更新。叙述者指出 SOM “效率不高”(可能指计算开销较大或收敛较慢),但在此例中仍获得了更短路径(8029 对比未指明的 GA 基线),适用于该100个城市实例——说明效率与最优性是两个不同的评估维度。
按知识点查看条件、步骤和证据。补充解释与视频直接内容分别标明。
讲述者将该问题命名为“旅行商问题”,并将其描述为:在 n 座城市构成的集合中,寻找一条最短路径,使得每座城市恰好被访问一次。
图表标题为“旅行商问题(TSP)”;红色点代表城市,绿色线段构成一条巡游路线。
TSP
旅行商问题是一种优化问题,目标是找到一条最短巡游路线,使得每座城市恰好被访问一次。
在一组有限城市及其两两之间距离构成的集合上进行的组合优化。
旁白指出该路径经过“n 座城市构成的集合”。
n
旅行商问题实例中的城市数量。
城市的正整数个数。
右侧自定义面板在神经网络视图中显示参数“numberOfCities”,其值为100;在遗传算法视图中该参数值为30。
红色点的实际视觉数量未通过抽样帧独立验证;所记录的数值即为界面上显示的参数值。
numberOfCities
自定义面板中用于设定可视化所用城市数量的参数。
取整数值的显示/模拟参数。
切换至遗传编程页面后,左侧输入面板显示“迭代次数:100”。
Iterations
遗传算法迭代次数,显示在遗传编程页面的输入面板中。
整数值的算法控制参数。
遗传编程输入面板显示“种群规模:1000”。
讲解员说:“我们使用非常大的种群规模,即一千。”
population size
为搜索初始化的遗传算法种群的规模。
整数值的算法控制参数。
遗传编程输入面板显示“贪心交叉:true”。
讲解员说:“对于交叉操作,我们采用贪心算法,该算法尝试选择下一个尚未访问过的最近城市作为下一步移动。”
greedy crossover
遗传算法实现中采用最近未访问城市规则的交叉选项。
布尔值的算法控制参数。
在神经网络视图中,左侧输入面板显示“迭代次数:60000”。
Iterations
神经网络页面输入面板中显示的迭代次数。
取整数值的算法控制参数。
神经网络输入面板显示“学习率:0.5”。
learning rate
在神经网络输入面板中显示的训练步长参数。
取实数值的训练超参数。
神经网络输入面板显示“学习半径:0.05”。
learning radius
在神经网络输入面板中显示的邻域大小参数。
取实数值的训练超参数。
神经网络输入面板显示“ANN:3”。
视频未解释 ANN=3 除作为参数显示外的具体含义。
ANN
在神经网络输入面板中显示的参数标签。
取整数值的模型参数,本片段未说明其确切含义。
底部状态栏在动画过程中显示变化的文字,例如“路径长度 = 5772”、“路径长度 = 4286”及其他数值。
讲解员说道:“路径长度会在状态栏区域更新。”
采样帧中仅部分选中的状态栏数值清晰可辨;许多中间值变化过快,无法逐一验证。
path length
当前所显示路径的总长度,于状态栏中实时更新。
该路径的非负实数值目标度量。
浏览器地址栏显示 https://gincker.com/AI/neural-net-traveling-salesman。
https://gincker.com/AI/neural-net-traveling-salesman
视频开头展示的神经网络旅行商问题演示页面的网址。
网页地址。
讲解员将该问题定义为:在 n 座城市构成的集合中,寻找一条最短路径,使得每座城市恰好被访问一次。
图表标题将该问题标识为“旅行商问题(TSP)”,并展示了一条经过所有红色城市点的闭合路径。
视频将旅行商问题呈现为一个经典的优化问题:给定一组包含 n 个城市的集合,找出一条访问每个城市恰好一次的最短可能路径。配套图示将此问题可视化为一条连接所有红色城市点的环游路径。
存在一个包含 n 个城市的有限集合。
目标是最小化总路径长度。
每个城市必须被访问且仅被访问一次。
讲解者指出,实现了两种机器学习方法:一种采用遗传算法,另一种基于弹性神经网络与自组织映射。
该片段提到了这些方法的名称,但在此部分并未从数学角度对其加以定义。
视频指出,机器学习游乐场为旅行商问题实现了两种方法:一种是遗传算法,另一种是基于弹性神经网络与自组织映射相结合的方法。本片段中仅详细演示了遗传算法页面。
背景是机器学习游乐场中的旅行商问题演示。
讲解者说:“在交叉操作中,我们采用贪心算法,该算法尝试选择下一个未访问的最近城市作为下一步移动。”
遗传编程输入面板显示“贪心交叉:启用”。
视频解释道,该遗传算法实现采用了贪心交叉规则:在构造下一步移动时,优先选择距离最近的未访问城市。这被作为一种能快速获得有效较短路径的方法。
用于遗传算法求解旅行商问题(TSP)的实现中。
交叉选项已启用。
每一步中,下一城市均依据“最近未访问城市”偏好来选择。
讲解员指出,该实现使用了高达一千的极大种群规模,并提到有人建议将种群规模设为30至60倍的城市数量。
遗传编程输入面板显示“种群规模:1000”和“城市数量:30”。
该片段口头给出了该指导原则,但并未证明为何这一乘数范围是最优的。
视频指出,遗传算法应以丰富多样的解集进行初始化。演示中使用的种群规模为1000,并提及一种常见建议:将种群规模设为城市数量的30至60倍。
n 表示城市数量。
这是视频中提到的一种启发式指导原则,而非此处证明的定理。
讲解者说:“路径长度会在状态栏区域更新。”
底部状态栏显示动态变化的文字,包括“路径长度 = 4286”。
视频指出,优化过程通过状态栏进行监控,随着路径的变化,当前路径长度也会随之更新。
适用于本片段中展示的交互式旅行商问题(TSP)可视化。
中心图表标题为“旅行商问题(TSP)”;红色点代表城市,绿色线段构成一条闭合路径。
旁白讨论路径自我交叉的情况,并对比不同设置下的路径长度。
视频将旅行商问题呈现为正方形坐标区域内的一组城市点,并用连接各城市的线段绘制出一个候选巡游路线;隐含的目标是获得一条更短且不自交的路径。
城市以离散点的形式绘制在2维坐标系中。
候选解由一条连接所有城市的折线形巡游路线表示。
左侧输入面板列出了迭代次数、种群规模、贪心交叉和k近邻距离(knnd)。
旁白在重新加载后提及输入面板及其中的默认值。
该片段未从数学角度定义贪心交叉或k近邻距离(knnd)。
界面提供了若干算法控制输入项:迭代次数、种群大小、贪心交叉和 knnd。本片段中,仅讨论了种群大小与解质量之间的关系。
这些参数控制中心图中所示的优化运行过程。
右侧自定义面板列出了图表参数,包括 numberOfCities、citySymbol、citySymbolColor、citySymbolSize、lineColor、lineWidth 和 delay。
讲解员指出,右侧面板控制结果可视化效果的外观。
右侧面板被描述为控制可视化效果的外观;其中 numberOfCities 改变旅行商问题(TSP)实例的规模,delay 改变更新频率。
部分参数仅影响渲染效果;numberOfCities 改变底层点集;delay 改变动画时序。
讲解员指出,50无法得到优质解,并指出该路径长度比此前种群规模较大时所得路径更长。
种群大小依次从100变为50,再变为30;最终显示的路径长度则依次从4296增至4823,再增至5816。
该片段呈现的是单次运行的经验性对比,而非普适性定理。
该演示对比了种群规模分别为100、50和30的运行结果,同时将迭代次数固定为100。讲解者指出,50未能得到一个较好的解,且较小种群规模下所见的最终路径长度更大。
在迭代次数固定为100、界面显示设置相同的情况下观察所得。
该结论基于所展示的运行结果,而非形式化证明。
图表标题明确标出“旅行商问题(TSP)”。
讲解员提到求解“旅行商问题”。
旅行商问题要求找出一条最短可能的路线,该路线恰好访问给定的一组城市一次,并返回起始城市。在视频中,这表现为在2D平面上寻找一个闭合回路,连接所有蓝色方块点,且总路径长度最小。
必须恰好访问每一座城市一次。
必须返回起始城市。
目标是最小化总路径长度。
网址中包含“genetic-algorithm-traveling-salesman”。
讲解员讨论了增大遗传算法的种群规模和迭代次数。
一种受自然选择启发的启发式搜索方法。它维护一组候选路线(染色体)构成的种群。通过交叉(合并两条路线的部分)和变异(随机改变某条路线)等操作,在多轮迭代中演化种群,以找到更短的路径。视频展示了增大种群规模和迭代次数如何提升对最优路径的近似效果,但结果中仍可能存在部分路径交叉。
需要设置种群规模、迭代次数和交叉策略等参数。
得到的是一个近似解,不能保证是绝对最短路径。
讲解员说道:“我们的方法基于弹性神经网络加自组织映射。”
菜单选择显示为“神经网络:自组织映射(SOM)”下的“用于旅行商问题的SOM”。
一种求解旅行商问题的替代方法,使用一圈神经元(即弹性网),该网络通过调整自身形状来包裹所有城市。它被描述为科霍宁自组织映射(SOM)的一种变体。该网络通过收缩来最小化自身能量,同时受到城市的排斥作用,最终形成一条平滑且不自交的路径。
神经元构成环状结构。
使用学习率和学习半径等参数进行权值更新。
讲解者说:“这个问题看起来非常简单,但求解起来却非常困难。”
本片段未给出任何形式化的复杂度类或证明。
视频指出,旅行商问题(TSP)看似简单,实则极难求解。
该问题即本片段前文所述的标准旅行商问题。
本视频中关于旅行商问题的一般性陈述。
讲述者说:“你可以看到,遗传算法能够利用默认参数高效地解决旅行商问题。”
遗传编程页面以可见参数运行,包括:迭代次数:100、种群规模:1000、启用贪心交叉:是、城市数量:30。
此处的“高效”属于定性描述;未提供任何形式化的效率度量或运行时间上界。
该视频声称,在此交互环境中,遗传算法能够利用默认参数高效地解决旅行商问题。
遗传算法实现使用所展示的默认参数运行。
问题实例即可视化中所呈现的那个实例。
该视频中关于所演示实现及其对应问题类别的主张。
讲述者称,贪心交叉“能快速给出一条实际较短的路径。”
未提供任何证明或最坏情况分析;这是视频中一个基于经验/解释性的主张。
该视频声称,采用贪心交叉(即每一步选择最近的未访问城市作为下一目标)可快速生成一条实际较短的路径。
遗传算法采用所述的贪心交叉规则。
关于所演示实现行为的定性描述。
讲解者说:50无法得到一个较好的解。此处可见部分路径存在自相交现象。另请注意,该路径长度比此前大规模种群所得路径更长。
在种群规模为 50 下运行后,底部栏显示路径长度 = 4823,与之前显示的 4296(对应种群规模为 100)相比。
这是一个观察性示例,并非全称命题定理。
在本次演示运行中,采用种群规模50所得路径存在自相交现象,且其最终路径长度长于此前大规模种群运行所得路径。
迭代次数 = 100
种群规模 = 50
该比较是相对于此前展示的大规模种群运行结果进行的。
这是关于本次具体演示运行的存在性命题。
旁白说明:点击重新加载按钮会将输入面板重置为默认值,遗传算法将尝试为默认输入数据寻找路径。
重新加载后,左侧面板恢复为种群规模100,显示的最终路径长度变为4218。
点击浏览器的重新加载按钮会将输入面板重置为默认值,并使遗传算法搜索与默认输入数据对应的路径。
用户点击浏览器的重新加载按钮。
该行为在所演示的网页应用中具有普适性。
旁白说明:城市数量由该参数控制,其默认值为30。
右侧面板在编辑前显示 numberOfCities = 30。
在自定义面板中,参数 numberOfCities 控制城市数量,其默认值为30。
应用处于默认的自定义状态。
该描述适用于所展示的默认配置。
旁白说明:延迟参数控制结果更新的速度,缺省值100表示结果每100毫秒更新一次。
右侧面板显示延迟初始值为100,随后被更改为500。
延迟参数设定可视化更新的时间间隔,缺省值100对应每100毫秒更新一次。
应用程序采用缺省延迟设置。
适用于所展示界面行为的通用设定。
讲解员说:“我们确信这不是最短路线,但却是非常优秀的近似解。”
遗传算法在有限次迭代后所得结果不能保证是绝对最短路线,但可作为良好的近似解。
遗传算法仅运行有限次数的迭代。
问题规模(城市数量)过大,导致穷举搜索不切实际。
对于旅行商问题(TSP)任一实例,遗传算法在有限迭代次数下的任意一次运行。
旁白说道:“这是一种称为弹性神经网络的自组织映射(Kohonen SOM)变体。”
用于求解旅行商问题(TSP)的弹性神经网络,是Kohonen自组织映射(SOM)算法的一种特定变体。
在此背景下,关于弹性神经网络与自组织映射(SOM)之间关系的普适性论断。
解说员说:“您可以看到旅行路径看起来非常理想,没有任何交叉。”
最终的绿色路径不包含相交的线段。
SOM 方法优化所得路径无交叉(即任意两条边均不相交)。
SOM 训练已成功完成
学习参数经过恰当调优
针对所示的特定100城市实例
解说员说:“最终路径长度为8029,比遗传算法所得路径更短。”
状态栏显示“路径长度 = 8029”。
本片段未直接展示遗传算法的路径长度值,无法直接验证。
对于该100城市旅行商问题(TSP)实例,自组织映射(SOM)生成的路径长度(8029)短于遗传算法所得路径长度。
同一100城市实例
遗传算法以默认参数或指定参数运行
存在性(仅针对该特定实例)
解说员说:“通常,城市数量较多时,我们还需减小学习半径。此处将其设为0.05。”
未提供数学依据说明为何城市数量增多时更小的半径效果更佳。
使用自组织映射(SOM)求解城市数量更多的旅行商问题(TSP)时,学习半径应减小(例如,从0.1减至0.05,对应100座城市与30座城市的对比)。
采用基于自组织映射(SOM)的方法求解旅行商问题
城市数量增加
通用启发式规则(‘通常’)
讲解者先定义旅行商问题(TSP),随后在图表持续显示的同时,引出两种机器学习方法。
红色点散落在一个2D平面上,并由绿色线段连接,构成一条回路。
回路线条随时间变化形状,而城市点位置保持固定。
该片段首先确立问题对象:一组以平面上红色点表示的城市。
由旁白直接陈述,并通过图表标题和点集呈现。
接着展示一条候选路径——用绿色线段将各城市连接成一条回路。
在图中表现为一条经过所有红色点的连通路径。
旁白指出,目标是找到一条访问每个城市恰好一次的最短可能路径,从而将这幅图转化为一个优化问题,而不仅仅是一幅示意图。
旁白明确给出的旅行商问题(TSP)定义。
最后,视频指出该游乐场实现了两种方法:遗传算法和弹性神经网络加自组织映射,并将后续的网址切换设定为这两种方法的对比。
明确口头介绍了这两种方法。
该片段使用固定的城市集合与动态变化的旅行路线,来说明旅行商问题(TSP)是一个路径优化问题,且本演示将采用两种不同的机器学习策略来求解。
遗传编程页面显示:迭代次数:100,种群规模:1000,贪婪交叉:true,随机种子:3,城市数量:30。
绿色旅行路线不断变化,同时底部状态栏持续更新路径长度数值。
讲解员评论道,遗传算法在默认参数下运行高效,解释了贪婪交叉的含义,并讨论了种群规模的影响。
从所采样的帧中无法完全辨识出所有中间路径长度值的精确序列。
页面切换后呈现出另一种TSP求解器配置,现被明确标注为遗传编程,并附有显式的输入参数。
在网址切换后,可见于左侧输入面板中。
动画展示了旅行路线随迭代过程不断修订,而城市位置保持不变。
通过不断变化的绿色路线与保持不变的红色点位之间的对比可观察到这一点。
旁白将优化路径的改进过程与遗传算法联系起来,并特别指出贪心交叉策略会选择最近的未访问城市。
与正在运行的演示同步的口述讲解。
旁白随后将显示的种群规模1000与需要丰富初始解集的需求联系起来,并引用了30至60倍于n的指导原则。
输入面板保持可见时的明确口述解说。
该片段将动态变化的旅行路线解释为:在所展示参数下,遗传算法正在搜索更短的TSP路径,其中种群规模和贪心交叉被呈现为关键控制因素。
各次运行序列显示种群规模依次为,最终路径长度依次为。
旁白指出:50无法得到较优解,且其路径长度长于此前大规模种群所得路径。
该对比基于单次展示运行的经验观察,并非从第一性原理推导得出。
首次展示的运行使用种群规模100,最终路径长度为4296。
直接取自左侧输入面板及底部状态栏。
将种群大小更改为50并重新运行后,显示的最终路径长度增加至4823。
第二次运行后直接从界面读取。
将种群大小更改为30并重新运行后,显示的最终路径长度进一步增加至5816。
第三次运行后直接从界面读取。
在所演示的运行中,种群大小从100减小到50、再减小到30,与更长的最终显示路径长度相关。
将 numberOfCities 从30编辑为20,点击“更新”,图表随之重新生成,且点数减少。
旁白说:“我们把城市数量改为20,然后点击更新按钮,优化过程便针对20座城市开始。”
右侧面板中的数值从30编辑为20。
自定义面板中可见的文字变化。
用户激活“更新”按钮。
可见的光标操作及旁白指令。
中心图表刷新为更少的点集,并重新优化路径。
绘图点数量变化前后的对比清晰可见。
numberOfCities 参数决定显示的优化问题中包含多少个城市点。
citySymbol 从圆形变为十字形,citySymbolColor 从红色变为蓝色,lineColor 从绿色变为紫色;点击更新后,图表样式随之改变。
旁白说道:现在我们将城市符号改为十字形,将城市符号颜色改为蓝色,将连线颜色改为紫色,然后点击更新按钮,这些更改即刻生效。
标记形状参数已被更改。
右侧面板中可见下拉菜单编辑操作。
标记颜色参数已被更改。
右侧面板中可见文本编辑操作。
路径颜色参数已被更改。
右侧面板中可见文本编辑操作。
界面应用了待定的样式更改。
旁白明确指出,这些更改将在点击“更新”后生效。
符号类型与颜色的自定义字段会改变所绘制城市及路径的视觉外观,但不会更改左侧的算法输入。
讲解者逐步说明参数调整过程。
用户界面依次显示各参数值的编辑过程。
将问题规模从30个城市扩大至100个城市。
用于测试自组织映射(SOM)方法的可扩展性。
将训练迭代次数增加六倍。
规模更大的问题需要更多迭代次数才能收敛。
将学习半径减半。
旁白指出,通常需要这样做,以便容纳更多城市,从而实现更精细的局部调整。
应用新参数并重新启动优化过程。
必须重新生成城市,并使用新设置重新训练网络。
参数被系统性地放大(迭代次数)和缩小(半径),以适应增大的问题规模,然后再运行优化。
旁白指示观众访问 gincker.com/AI/genetic-algorithm-traveling-salesman,然后对正在运行的遗传算法演示进行评述。
遗传编程页面显示:迭代次数:100,种群规模:1000,贪心交叉:true,随机种子:3,城市数量:30。
绿色旅行路线持续更新,同时状态栏显示不断变化的路径长度值,包括4286。
最终优化后的路径长度在采样帧中未能稳定清晰显示;仅有部分中间值清晰可辨。
打开遗传算法旅行商问题演示,观察在所显示参数下旅行路线如何演化。
网址:https://gincker.com/AI/genetic-algorithm-traveling-salesman
迭代次数:100
种群规模:1000
贪心交叉:启用
随机种子:3
城市数量:30
观察遗传算法如何搜索更短的旅行商问题路径,以及界面如何报告搜索进度。
在浏览器中导航至遗传算法页面。
旁白中的明确指示与可见的网址变化。
观察左侧输入面板,识别当前使用的算法参数。
该面板清晰列出了迭代次数、种群规模、贪心交叉、随机种子及相关设置。
观察绿色巡游路径随时间变化,而红色城市点保持固定。
图表上直接可见的动画效果。
请查看底部状态栏,获取路线更新时的当前路径长度。
旁白明确指出,路径长度会在状态栏中实时更新。
将这种改进解读为遗传算法采用贪心交叉策略及较大种群规模所产生的效果。
口述讲解将所观察到的路线优化过程与这些参数设置联系起来。
该演示以可视化方式展示了一个遗传算法TSP求解器,在一个30城市的实例上不断优化路线,其种群规模为1000,并启用了贪心交叉策略;同时,状态栏持续报告演化的路径长度。
验证仅限于所显示的界面:网址、输入参数、动态巡游动画以及状态栏中的路径长度读数,在视频片段中均清晰可见。
该应用程序分别以人口规模100、50和30运行三次,而迭代次数保持为100。
旁白评论了人口规模50下解的质量较差,并建议尝试不同的人口规模。
每种人口规模仅展示一次示例运行。
展示在遗传算法模拟环境中,改变人口规模如何影响所显示的旅行商问题(TSP)解的质量。
迭代次数 = 100
启用贪心交叉
k近邻距离参数 knnD = 3
人口规模在100、50和30之间变化
比较三次运行所得路径的外观及最终路径长度。
初始配置采用开始时显示的较大种群规模。
在左侧输入面板中可见。
第一次完成的运行以路径长度4296结束。
在底部状态栏中可见。
用户编辑种群规模字段并重新运行优化。
可见字段编辑后点击“运行”。
第二次完成的运行以更长的路径长度结束。
在底部状态栏中可见。
用户再次调低种群规模并重新运行。
可见字段编辑后点击“运行”。
第三次完成的运行以更长的路径长度结束。
在底部状态栏中可见。
显示的最终路径长度分别为:4296(对应种群规模为 100)、4823(对应 50)、以及 5816(对应 30)。
讲解员明确指出,50次运行出现了交叉且路径比之前的大种群运行更长,底部状态栏显示了具体的路径长度数值。
重新加载后,左侧面板恢复为种群规模100,图表重新运行并得到路径长度 = 4218。
讲解员解释道,重新加载会将输入面板重置为默认值,并使用默认输入数据重新运行。
重新加载后,knnd 的确切默认值和贪心交叉的默认值分别显示为3和 true,但该片段并未通过独立验证来证明这些值确为默认值,仅依赖讲解员的说明。
演示在旅行商问题(TSP)互动平台会话期间按下浏览器刷新按钮时发生的情况。
应用程序已偏离其初始状态。
用户点击浏览器的刷新按钮。
观察输入面板的重置行为以及随之产生的优化运行结果。
浏览器刷新控件被激活。
光标可见地移动到刷新图标,并伴随解说员的说明。
左侧面板恢复为默认值,包括种群大小100。
刷新后的状态可见,并伴有解说员的解释。
遗传算法针对默认输入配置重新启动。
解说员明确指出这一行为。
刷新后的默认运行以显示路径长度4218结束。
在底部状态栏中可见。
刷新操作将恢复默认输入并重新运行优化过程,本例中最终显示的路径长度为4218。
界面刷新前后的状态与解说员的解释一致。
城市数量从30更改为20,图表随之重新生成,显示的点数减少。
解说员说明优化过程针对20座城市启动。
展示在自定义面板中修改 numberOfCities 参数的效果。
初始 numberOfCities = 30
用户将 numberOfCities 修改为 20
用户点击“更新”
观察旅行商问题(TSP)实例的变化。
城市数量字段被向下编辑。
在右侧面板中可见。
该修改已被应用。
可见按钮点击动作及旁白说明。
中心图表重新生成,点数减少,并优化出一条新路径。
可见绘图点数量减少及旁白陈述。
完成的 20-城市运行结果显示路径长度为 3903。
可见于底部状态栏。
将 numberOfCities 更改为20会创建一个规模更小的旅行商问题(TSP)实例;该次运行所显示的最终路径长度为3903。
讲解员明确指出优化过程从20座城市开始,且图表中明显呈现的点数更少。
编辑 citySymbol、citySymbolColor 和 lineColor 后,点击“更新”,图表样式随即发生变化。
讲解员逐条列出样式变更,并说明这些更改将在点击“更新”后生效。
演示自定义面板中的外观参数如何影响所绘制路线的显示效果。
当前图表使用红色圆形城市标记和绿色路线连线。
用户将 citySymbol 改为十字形,citySymbolColor 改为蓝色,lineColor 改为紫色。
用户点击“更新”。
观察渲染后的样式变化。
标记形状已更改。
显示下拉编辑框。
标记颜色已更改。
显示文本编辑框。
路径颜色已更改。
显示文本编辑框。
待应用的样式更改已被应用。
旁白说明更改即刻生效。
使用新样式的重新运行结果显示路径长度为3769。
在底部状态栏中可见。
更新后,城市以蓝色十字绘制,路径以紫色线条绘制;显示的最终路径长度为3769。
更新前后的图表外观与所编辑的参数值一致。
delay 从100编辑为500,并点击了更新。
讲解员说明延迟参数控制更新速度,并提示将延迟值设为500,然后点击“更新”按钮。
经过120秒后实际变慢的帧率节奏,在本片段中无法完全观察到。
展示如何在自定义面板中修改延迟参数。
默认延迟 = 100 毫秒
用户将延迟值编辑为500
用户点击“更新”按钮。
应用更慢的可视化更新速率。
延迟字段的数值被调大。
右侧面板中可见文本编辑操作。
新的延迟值被提交。
可见按钮点击动作及讲解员的口头提示。
延迟参数从100更改为500毫秒,并通过点击“更新”应用。
讲解员明确解释了延迟的含义,界面同时显示已编辑的数值。
初始状态显示20座城市、种群规模为1000、迭代次数为100;路径长度从2709逐步下降至2709(趋于稳定)。
旁白指出进度条更新速度明显变慢。
使用遗传算法为 20 个城市寻找一条近似最短路径,种群规模为 1000,且进行 100 次迭代。
城市数量 = 20
种群规模 = 1000
迭代次数 = 100
贪心交叉 = 启用
克诺尔德等于3
观察路径长度与最终路线的演化过程。
使用给定参数初始化遗传算法。
用户界面中显示的初始化阶段。
运行算法并观察随着种群演化,路径长度逐渐减小。
动画展示了连线的变化以及路径长度的下降。
算法稳定于路径长度约为 2709 的状态。
左下角显示“路径长度 = 2709”。
一条访问全部 20 座城市的闭合回路,总路径长度约为 2709。
对最终路径的目视检查表明其无明显交叉,且路径长度指标趋于稳定。
参数已更改为100座城市、种群规模5000、迭代次数500、延迟1。最终路径长度显示为8476。
解说员描述调整参数并观察结果:‘最终路径长度为8476……仍存在部分路径交叉。’
扩大遗传算法的规模,通过增加种群规模与迭代次数,求解100座城市的旅行商问题。
城市数量 = 100
种群规模 = 5000
迭代次数 = 500
延迟 = 1
评估近似解的质量,并识别其局限性。
在用户界面中更新参数,以应对更大规模的问题。
解说员明确指出:对于100座城市,需增大种群规模与迭代次数。
以较快速度(较低延迟)运行算法,并观察路径的演化过程。
动画展示了复杂线条网络中快速的变化。
该算法以路径长度为8476结束。
左下角显示“路径长度 = 8476”。
检查最终路径,寻找仍存在的低效之处。
解说员指出“路径上仍存在一些交叉”。
一条长度为8476的路径,这是一个不错的近似解,但仍包含若干交叉线段。
目视检查确认最终路线中存在相交的线段,从而验证了解说员关于该路径并非绝对最短路径的说法。
从参数修改开始,经优化,直至最终结果的完整流程。
旁白引导观众完整走一遍该示例。
初始的随机环形配置坐标未被记录。
寻找一条访问 100 个随机放置的城市的短路径,这些城市位于一个 坐标空间中,使用自组织映射(SOM)神经网络。
城市数量 = 100
迭代次数 = 60000
学习率 = 0.5
学习半径 = 0.05
自组织映射(Kohonen)网络 = 3
城市坐标在 [0,1000]×[0,1000] 范围内随机生成。
生成一条总欧氏路径长度最小的有效哈密顿回路。
在训练开始前,构建神经元的闭合环形结构。
旅行商问题(TSP)的标准自组织映射初始化方法。
迭代调整神经元位置,使其逐步靠近最近的城市,同时保持拓扑结构不变。
自组织映射的核心训练过程。
通过状态栏更新观察收敛过程。
交互式演示界面的可视化反馈机制。
收敛后,从环形拓扑结构中读取城市访问顺序。
SOM算法求解旅行商问题(TSP)的输出结果解读。
最终路径长度为8029,且无边交叉,短于遗传算法基线结果。
目视检查确认无路径交叉;解说员在口述中将该结果与遗传算法结果进行了数值对比(视频片段中未显示遗传算法的具体数值)。
页面标题区域和图表显示“旅行商问题(TSP)”;左侧面板标题为“神经网络——旅行商问题”,其中包含迭代次数:60000、学习率:0.5、学习半径:0.05、ANN:3;右侧面板显示城市数量:100及样式选项。
绿色巡游线路在红色城市点之间动态变化,同时底部状态栏持续更新路径长度数值。
该视频片段未在屏幕上提供关于神经网络参数如何影响动画的详细说明。
图表标题为“旅行商问题(TSP)”
红色城市点
绿色路线线
神经网络——旅行商问题的左侧输入面板
右侧自定义面板
底部状态栏,显示路径长度
绿色路线随时间推移而改变形状。
状态栏中的路径长度值反复更新。
该图表始终保持为一个2D 散点图,坐标轴范围大致从0到1000。
在所观察的动画过程中,红色城市点位置保持固定。
右侧面板的样式参数持续可见。
此初始视图将旅行商问题(TSP)呈现为一个几何路径优化问题,并展示了一个机器学习求解器在固定城市集合上持续修订路线的过程。
一个大型覆盖层显示网址 https://gincker.com/AI/genetic-algorithm-traveling-salesman,浏览器地址栏随之更改为该网址。
讲解员提示观众前往该网址并按下回车键。
浏览器地址栏
大幅显示的URL文字
Gincker页面
显示的URL从神经网络页面变更为遗传算法页面。
页面内容从神经网络输入切换为遗传编程输入。
整体网站布局保持不变,仍为左侧输入面板、中央图表和右侧自定义面板。
此次导航标志着在同一交互式界面中,从一种TSP求解方法过渡到另一种TSP求解方法。
左侧面板现在显示“遗传编程——旅行商问题”,其中迭代次数:100,种群规模:1000,贪心交叉:启用,随机种子:3;右侧面板显示城市数量:30。
绿色路径在比开场画面更少的红色点上重绘,状态栏持续更新路径长度数值。
可见红色点的确切数量并未从采样帧中独立统计;可靠数值为所显示的城市数量:30。
遗传编程输入面板
中心旅行商问题图表
红色城市点
绿色路径线
底部状态栏
自定义面板中显示的城市数量从100变为30。
路径几何形状逐次迭代发生变化。
随着路径优化,路径长度读数实时更新。
该问题始终是定义在2D点集上的旅行商问题。
界面持续显示一条连接所有城市的单一路径。
本片段在规模较小的实例上展示遗传算法方法,并通过可见参数明确揭示了种群规模与贪心交叉操作的作用。
中心图表标题为“旅行商问题(TSP)”,图中红色城市点由一条绿色闭合路径连接;底部状态栏显示“路径长度 = 4296”。
红色城市点
绿色路径线段
坐标轴
底部状态栏
此短暂时间间隔内无其他内容;已完成的路径将被显示。
标题保持为“旅行商问题(TSP)”。
左侧面板中种群规模为100。
路径长度为4296。
视频片段以默认较大种群规模运行所得到的完整旅行商问题(TSP)路径开场。
点击‘运行’按钮且种群规模为50后,多条淡绿色候选路径出现,随后逐渐收敛为一条颜色更深的最终路径。
底部状态栏依次更新中间数值,最终显示‘路径长度 = 4823’。
各中间迭代序号字体过小,无法在整个动画过程中稳定辨识。
红色城市点
多条浅绿色候选路径
一条颜色更深的最终路径
进度/状态栏
首先显示若干条相互重叠的路径。
路径集合逐步收窄,最终只剩一条最终路径。
路径长度更新为4823。
城市位置保持固定。
迭代次数保持为100。
坐标轴和标题保持不变。
该动画可视化了一种基于遗传算法的搜索过程,其在候选路径种群上进行,并最终高亮显示所保留的最佳路径。
当种群规模为30时,图表再次显示若干候选路径,随后收敛至唯一最终路径。
底部状态栏以“路径长度 = 5816”结尾。
红色城市点
浅绿色候选路径
深绿色最终路径
状态栏
候选路径被依次显示,随后缩减为一条最终路径。
最终路径长度增加至5816。
城市集合与上一次运行相同。
迭代次数保持为100。
较小的种群规模在此示例中产生了明显更长的最终旅行路线。
重新加载后,页面刷新,左侧面板恢复默认设置,并开始新一轮优化运行。
最终显示的路径长度变为4218。
浏览器重新加载控件
左侧输入面板
中心TSP图示
状态栏
界面状态重置。
新一轮运行会自动开始,或在重置后立即启动。
最终路径长度变为4218。
该问题仍是定义在2维点集上的旅行商问题(TSP)。
右侧面板的默认设置仍显示城市数量为30。
重新加载将恢复默认实验设置,并在默认实例上重新运行优化器。
当城市数量更改为20并点击“更新”后,图表将重新生成:红色城市点减少,同时启动新的路径搜索。
显示的最终路径长度为3903。
红色城市点
绿色路径线段
右侧自定义面板
状态栏
绘制的点数从30减少到20。
显示一次新的优化运行。
最终路径长度变为3903。
左侧算法输入保持为:迭代次数 = 100,种群规模 = 100,贪婪交叉 = true,knnd = 3。
自定义参数 numberOfCities 会直接改变旅行商问题(TSP)实例本身的规模。
点击更新后,城市标记变为蓝色十字,路线线条变为紫色。
显示的最终路径长度为3769。
蓝色十字形标记
紫色路线线条
右侧自定义面板
标记形状由圆形变为十字形。
标记颜色从红色变为蓝色。
线条颜色从绿色变为紫色。
底层的20-城市实例保持不变。
左侧的算法输入不发生变化。
该事件将呈现参数与优化参数分离开来:外观发生变化,而问题规模仍为20个城市。
延迟字段从100编辑为500,并点击更新。
减慢的更新节奏由旁白指出,但在剩余时间内无法完全测量。
右侧自定义面板。
延迟字段。
更新按钮。
延迟值从100增加至500。
点击“更新”以应用更改。
其他显示的参数在此区间内保持不变。
界面将动画时序作为一项独立于算法输入的控制项予以呈现。
连接蓝色方块的紫色线条持续改变形状,缠绕程度逐渐降低,总长度也不断缩短。
蓝色方块(城市)
紫色线条(路径线段)
红色文字(路径长度度量)
路径线段重新连接到不同的城市。
总路径长度减小。
线条变得更平滑,并避开相交。
20个蓝色方块的位置保持不变。
该路径始终构成一条访问所有方块的单一闭合回路。
遗传算法通过选择并组合更优的子路径,迭代优化路线,从而减少总行驶距离。
一张密集的紫色连线网络,连接着100个蓝色方块,迅速变动并简化为一条更为有序、尽管尚不完美的闭合回路。
100个蓝色方块(城市)
密集的紫色连线(初始随机路径)
稀疏的紫色连线(演化后的路径)
可见的重叠连线数量大幅减少。
路径长度从大于30000下降至8476。
最终状态中仍存在一些局部交叉。
城市位置固定不变。
算法持续运行,直至达到迭代次数上限。
扩大问题规模需要更大的种群数量和更多迭代次数。该算法能快速找到一条全局上较为合理的路径,但在给定的计算资源限制内难以消除所有局部交叉。
讲解员说道:“这个问题看起来非常简单,但求解起来却非常困难。”
有人可能认为,既然TSP只需一句话就能陈述清楚,那么求解起来也应该很容易。
视频明确警示:该问题看似简单,实则极难求解。
叙述者指出,种群规模需足够大,以便用丰富多样的解来初始化,并建议取城市数量的30至60倍作为参考。
该片段并未提供种群过小导致失败的反例,仅给出了这一指导性建议。
有人可能假设遗传算法只需较小的初始种群就已足够。
视频建议采用较大的种群规模,以确保搜索从一组丰富多样的解出发,并提到城市数量的30至60倍是常用的经验准则。
旁白说道:‘此处您看到一些路径会与自身相交,同时展示种群规模为50的结果。’
最终的绿色路径明显包含相交的线段。
人们可能误以为所有显示的闭合路径都同样可接受为TSP解。
视频明确指出路径交叉现象,并将其与更差的解相关联,以更长的路径长度作为佐证依据。
旁白说道:‘右侧面板用于控制结果可视化效果的外观’,随后分别调整城市数量(numberOfCities)和样式参数。
左侧面板容纳算法输入;右侧面板容纳图表与显示参数。
人们可能将所有界面参数与算法超参数混为一谈。
在此应用中,左侧的输入面板控制遗传算法,而右侧的自定义面板主要控制渲染效果;但其中 numberOfCities 会改变问题实例,delay 则影响更新时机。
解说员澄清道:“我们确信这不是最短路线,但却是非常优秀的近似解。”
用户可能认为,对遗传算法运行大量迭代后,总能得到旅行商问题的绝对最短路径。
遗传算法属于启发式方法。尽管它们能高效地找到质量很高的近似解,却无法保证找到全局最优解,尤其在大规模实例中更是如此——如100个城市示例中仍存在的路径交叉现象即为明证。
讲解员称该方法‘与遗传算法相比效率不高’,但随后又声称其生成的路径更短。
‘效率’定义模糊:可能指计算开销、收敛速度或实现复杂度,而非解的质量。
观众可能将计算效率与解的质量混淆——当讲解员称自组织映射(SOM)‘效率不高’,却随后报告其路径长度更优时,易产生误解。
此处‘效率’很可能指资源消耗或收敛特性,而路径长度衡量的是最优性差距。某种方法虽计算开销更大,却可能在特定实例上产出更优解。
叙述者在定义TSP之后,介绍了两种机器学习方法,其中之一便是遗传算法。
贪心交叉法被作为遗传算法求解TSP的一部分予以呈现。
旁白指出,该交互式演示平台实现了两种机器学习方法来求解此问题。
这两种被命名的机器学习方法,被介绍为求解前述已定义的TSP问题的手段。
关于种群规模的讨论紧随遗传算法运行原理的讲解之后。
遗传编程输入面板在讲解过程中显示种群规模。
在遗传算法方法中,该片段将种群规模的选择视为实现过程中的一个重要子组件。
narrator 指出,在遗传算法演示运行期间,状态栏中的路径长度会实时更新。
状态栏中的路径长度读数用于监控遗传算法搜索的结果。
讲解员将种群规模50与一个不佳的解及更长的路径长度关联起来。
改变种群规模后,最终路径长度也随之不同。
输入参数种群规模被直接用于所演示的解质量对比中。
中心图表标题为旅行商问题(TSP),所有参数变化均反映在路径可视化中。
自定义面板控制 TSP 解的显示方式,并通过 numberOfCities 控制所显示问题实例的规模大小。
讲解员关于种群规模50的论断,得到了所展示运行过程及对应路径长度的支持。
该示例运行提供了数值层面的对比。
关于种群规模50下性能更差的命题,基于所展示的示例运行而成立。
讲解员在界面明显重置的同时,解释重载行为。
重载示例为‘重置为默认值’这一说法提供了所观察到的依据。
将 numberOfCities 从30改为20,会改变所绘制点的数量。
本示例说明,“城市数量”是自定义面板中一个实质性的实例规模控制项。
用户界面标题为“遗传编程——旅行商问题”。
遗传算法被用作求解旅行商问题近似解的一种方法。
解说员引入弹性神经网络来求解旅行商问题。
此处介绍的弹性神经网络(自组织映射的一种变体)被呈现为求解旅行商问题的另一种方法。
解说员指出,这是一种‘科霍宁自组织映射的变体’。
本处所用的弹性神经网络,是针对闭环优化而专门调整的一般自组织映射概念的一种特定变体或特例。
narrator 在此时间段内用语言定义了旅行商问题(TSP)。
narrator 表示,该问题看似简单,但实际求解极为困难。
narrator 提到了遗传算法、弹性神经网络加自组织映射这两种方法。
narrator 将贪婪交叉解释为:选择距离当前城市最近的未访问城市作为下一步移动目标。
讲解者讨论了种群规模1000以及30到60乘以n的指导原则。
讲解者指出,路径长度会在状态栏区域实时更新。
讲述者讨论种群规模50,并比较路径长度。
可见的最终路径长度对应于100、50和30。
讲述者指出,某些路径会与自身相交。
最终路径显示出交叉点。
讲述者解释,“重载”会将输入面板重置为默认值。
界面在刷新后恢复为默认值。
讲述者指出,城市数量由该参数控制,并将其更改为20。
图表以更少的点重新生成。
讲解员将延迟定义为更新速度,并说明默认值100表示每隔100毫秒更新一次。
延迟字段从100更改为500。
讲解员指出右侧面板控制结果可视化效果的外观。
左侧面板和右侧面板包含不同类型的参数。
已覆盖 · 开场画面显示神经网络版TSP游乐场,同时讲解者介绍本系列及主题。
已覆盖 · 讲解者定义了旅行商问题(TSP),并指出其描述简单但求解困难。
已覆盖 · 视频介绍了游乐场中实现的两种机器学习方法。
已覆盖 · 浏览器按讲解者的指示跳转至遗传算法对应的网址。
已覆盖 · 遗传编程页面运行时参数可见,并配有动画导览。
已覆盖 · 讲解者评论了使用默认参数即可高效求解,并解释了贪心交叉与状态栏中的路径长度显示。
已覆盖 · 讲解者讨论了种群规模1000以及30到60乘以n的指导原则,随后话音渐弱。
已覆盖 · 显示已完成的TSP路径,其路径长度为4296。
已覆盖 · 以种群规模50运行;讲解员评论了路径中存在的交叉现象及更长的路径长度。
已覆盖 · 用户在重新运行前将种群规模从50编辑为30。
已覆盖 · 以种群规模30运行,最终路径长度为5816。
已覆盖 · 浏览器刷新会将输入重置为默认值,并重新运行默认案例。
已覆盖 · 讲解员介绍右侧自定义面板,并指出默认城市数量为30。
已覆盖 · 将城市数量更改为20,点击‘更新’后生成一个规模更小的旅行商问题实例。
已覆盖 · 修改标记样式与连线样式参数,并通过‘更新’应用这些更改。
已覆盖 · 解释延迟参数,并将其从100毫秒调整为500毫秒。
已覆盖 · 介绍旅行商问题(TSP),并在20座城市上演示遗传算法。
已覆盖 · 将遗传算法扩展至100座城市,并讨论其近似解的局限性。
已覆盖 · 过渡并引出弹性神经网络/自组织映射(SOM)方法。
已覆盖 · 旅行商问题(TSP)的自组织映射(SOM)方法入门介绍,并与遗传算法进行对比。
已覆盖 · 为运行100城市的实验而进行的参数调整序列。
已覆盖 · 自组织映射(SOM)优化过程的动态演示,路径长度逐步收敛。
已覆盖 · 最终优化所得的100城市环游路径的展示与验证。
已覆盖 · 通过AI下拉菜单概览机器学习游乐场(Machine Learning Playground)的模型目录。
已覆盖 · 本节展示在用户界面上选择TSP机器学习模型的操作过程,以及由此生成的可视化结果。
已审核的主题路径
旅行商问题 (TSP) 是一个经典的优化问题,旨在寻找穿过 个城市集合的最短可能路径,且每个城市恰好访问一次。视频将其可视化为在二维平面上固定点集上绘制的一条路线。
适用条件:存在一个有限的 个城市集合。;目标是最小化总路径长度。;每个城市必须恰好访问一次。
视频建议使用较大的种群规模,以便用丰富的解集进行初始化。它引用了一个常见的指导原则,即将种群规模设置为城市数量 () 的 30 到 60 倍。
适用条件: 是城市的数量。;这是视频中提到的启发式指导原则,而不是在此证明的定理。;背景是遗传算法 TSP 实现。
视频指出,路线自我交叉(自相交)是较差解的迹象。这一视觉线索与状态栏中较长的最终路径长度相吻合。
适用条件:适用于片段中显示的交互式 TSP 可视化。;背景是比较不同的算法运行或参数。
视频声称,在这个游乐场中,遗传算法可以使用默认参数高效地解决旅行商问题。演示显示路线在迭代过程中不断改进,路径长度逐渐减小。
适用条件:遗传算法实现以显示的默认参数运行。;问题实例是可视化中显示的那个。;这里的“高效”是定性的;没有提供正式的效率指标或运行时界限。
视频断言旅行商问题看起来很简单,但很难解决。这是对该问题计算复杂性的定性警告,对比了陈述问题的容易程度与找到最优解的难度。
适用条件:该问题是前面片段中描述的标准 TSP。;背景是关于问题性质的一般性陈述。
机器学习游乐场实现了两种解决 TSP 的方法:遗传算法和基于弹性神经网络以及自组织映射的方法。视频主要详细演示了遗传算法页面。
适用条件:背景是机器学习游乐场的 TSP 演示。;这些方法被实现为交互式网页。
视频演示表明,与较大的种群(例如 100)相比,较小的种群规模(例如 50)会导致更差的解。具体来说,种群规模为 50 的运行产生了带有自交叉的路线,且最终路径长度(4823)比之前种群规模为 100 的运行(4296)更长。
适用条件:在固定迭代次数 = 100 和相同的显示界面设置下观察。;结论基于显示的运行,而不是正式证明。;与之前显示的较大种群运行进行比较。
在遗传算法 TSP 演示中,贪婪交叉使用了一种启发式规则,试图选择最近的未访问城市作为下一步。这种方法被呈现为快速获得有效短路线的一种方式。
适用条件:用于遗传算法 TSP 实现内部。;交叉选项已启用(贪婪交叉:true)。;在每一步中,下一个城市是根据最近的未访问城市偏好选择的。