TOPSIS评价模型实战:算法源码解析与决策落地指南
简介这份资源面向学习多属性决策与评价算法的学生、科研人员和工程实践者聚焦TOPSIS评价模型的完整实现路径。TOPSIS即逼近理想解排序法通过计算各方案与理想解、反理想解的距离得到相对贴近度从而对多指标方案进行排序择优广泛用于综合评价、选型决策与数据分析场景。压缩包共7个文件约20KB包含5个m脚本、1个mat数据文件和1份docx说明文档脚本分别承担主流程计算、指标正向化、极小型与中间型指标转换等职责mat文件提供可直接运行的示例数据docx则梳理模型的具体步骤与原理。资源已有374人学习下载读者可据此掌握数据标准化、理想解与反理想解构造、欧氏距离计算、贴近度排序等关键环节并借助模块化脚本快速替换自有数据完成实验同时结合探索性数据分析理解指标特性提升评价结果的科学性与可解释性。1. TOPSIS 评价模型从算法源码到决策落地的完整路径手上有一堆方案要排序指标有正向有负向量纲还不统一领导明天就要结论——这种场景下TOPSIS 评价模型几乎是性价比最高的选择。它不需要专家打分定权重不需要训练数据只要有一个决策矩阵就能算出每个方案与理想解的贴近度给出可解释的排序结果。标题里的“算法源码”和“评价与决策”其实点明了核心诉求不是理解一个公式而是拿到一套能跑、能改、能解释的代码把评价这件事从拍脑袋变成可复现的流程。适合谁做供应商筛选、方案选型、绩效排序、选址评估的工程师和数据分析人员。这篇笔记按“原理立住→代码跑通→参数调对→坑绕开”的顺序展开每一步都落到可执行的代码和参数上。2. TOPSIS 的数学骨架与源码结构拆解2.1 从决策矩阵到贴近度五个步骤的数学含义TOPSIS 全称“逼近理想解排序法”核心思想很朴素最好的方案应该离正理想解最近、离负理想解最远。整个计算链条分五步每一步都有明确的数学操作理解这些操作才能知道代码里每个参数在干什么。第一步是构建决策矩阵。假设有 m 个评价对象、n 个评价指标原始数据构成一个 m×n 的矩阵 X其中 x_ij 表示第 i 个对象在第 j 个指标上的取值。这一步的关键是确认指标方向效益型指标越大越好成本型指标越小越好后面归一化时要分开处理。第二步是向量归一化。常用公式是 r_ij x_ij / sqrt(sum(x_ij^2))对每一列分别做。这样做的目的是消除量纲影响让不同单位的指标可以放在一起比较。注意这里不是极差归一化TOPSIS 标准流程用的是向量归一化因为后续要计算欧氏距离向量归一化能保持距离的几何意义。第三步是构建加权归一化矩阵。把归一化后的矩阵每一列乘以该指标的权重 w_j得到 v_ij w_j * r_ij。权重从哪来常见做法是熵权法、AHP 或直接给定源码里通常会留一个权重输入接口。第四步是确定正理想解和负理想解。正理想解 V 的每个分量是所有方案中该指标的最大值负理想解 V- 的每个分量是最小值。但这里有个容易翻车的地方如果指标方向没有提前统一成本型指标的最大值反而代表最差正负理想解就搞反了。第五步是计算贴近度。每个方案到正理想解的距离 D sqrt(sum((v_ij - V_j)^2))到负理想解的距离 D- 同理最后贴近度 C_i D- / (D D-)。C_i 越大越接近 1方案越优。这个公式的直觉是离负理想解越远、离正理想解越近得分越高。2.2 源码目录里每个文件在干什么拿到一个 TOPSIS 算法源码包不要急着跑 main先看目录结构。典型的 Python 实现通常包含这几个部分数据读取模块、归一化与加权模块、理想解计算模块、贴近度与排序模块、结果输出模块。有些源码会把熵权法单独放在一个文件里有些则把权重作为外部参数传入。我一般会先找核心计算函数确认它接收的输入格式是“原始矩阵 指标方向列表 权重向量”输出是“贴近度列表 排序索引”。如果源码里把归一化和加权揉在一个函数里问题不大但调试时会麻烦一些。重点看两个地方一是成本型指标的处理逻辑是在归一化前取倒数还是归一化后用 1-r 转换二是距离计算用的是欧氏距离还是其他范数标准 TOPSIS 用欧氏距离。下面是一个最小可运行的 TOPSIS 核心实现我把它拆成独立函数方便你对照源码逐段理解import numpy as np def normalize_matrix(X, benefit_mask): X: m×n 原始决策矩阵 benefit_mask: 长度 n 的布尔列表True 表示效益型False 表示成本型 返回向量归一化后的矩阵 m, n X.shape R np.zeros_like(X, dtypefloat) for j in range(n): col X[:, j] if benefit_mask[j]: # 效益型直接向量归一化 R[:, j] col / np.sqrt(np.sum(col ** 2)) else: # 成本型先取倒数再归一化统一为效益型方向 inv_col 1.0 / col R[:, j] inv_col / np.sqrt(np.sum(inv_col ** 2)) return R def topsis(X, weights, benefit_mask): X: m×n 决策矩阵 weights: 长度 n 的权重向量和为 1 benefit_mask: 指标方向 返回贴近度列表和排序 R normalize_matrix(X, benefit_mask) V R * weights # 加权归一化矩阵 V_plus V.max(axis0) # 正理想解 V_minus V.min(axis0) # 负理想解 D_plus np.sqrt(np.sum((V - V_plus) ** 2, axis1)) D_minus np.sqrt(np.sum((V - V_minus) ** 2, axis1)) C D_minus / (D_plus D_minus) rank np.argsort(-C) # 降序排列 return C, rank这段代码里benefit_mask是关键参数。成本型指标先取倒数再归一化这样所有指标都变成“越大越好”后续正负理想解的计算就不需要额外判断方向。weights需要外部传入源码里如果自带熵权法会先根据数据离散程度自动算权重再传给topsis函数。np.argsort(-C)返回的是从优到劣的索引注意加负号才是降序。2.3 熵权法自动定权源码里最容易被忽略的模块很多 TOPSIS 源码包会附带熵权法因为权重直接决定排序结果手动给权重容易被质疑主观。熵权法的逻辑是某个指标下各方案取值差异越大信息熵越小该指标提供的有效信息越多权重应该越大。实现上分三步先对归一化矩阵做列归一化得到概率矩阵 P_ij r_ij / sum(r_ij)然后计算信息熵 e_j -k * sum(P_ij * ln(P_ij))其中 k 1/ln(m)最后权重 w_j (1-e_j) / sum(1-e_j)。注意当 P_ij 为 0 时ln(0) 会报错源码里通常加一个极小值 eps 兜底。def entropy_weight(R): R: 归一化后的矩阵所有指标已统一为效益型 返回熵权法计算的权重向量 m, n R.shape eps 1e-12 P R / (R.sum(axis0, keepdimsTrue) eps) P np.clip(P, eps, 1.0) k 1.0 / np.log(m) E -k * np.sum(P * np.log(P), axis0) d 1 - E w d / d.sum() return w参数eps取 1e-12 是为了防止 log(0)但如果你数据里有大量零值这个兜底会让权重偏向零值多的指标需要提前检查数据分布。np.clip把概率限制在 eps 以上避免数值溢出。熵权法算出的权重完全由数据驱动适合没有专家打分的场景但缺点是会放大异常值的影响后面避坑章节会展开。3. 用 Python 跑通 TOPSIS从数据到排序的完整命令3.1 构造一个可复现的决策矩阵先别拿真实项目数据跑用一个小规模、指标方向混合的矩阵验证代码逻辑。假设要选三个供应商评价指标有四个价格成本型万元、交货周期成本型天、质量评分效益型百分制、售后响应速度效益型小时。数据如下供应商价格交货周期质量评分售后响应A12030854B10045786C15020923这个矩阵里价格和交货周期越小越好质量评分和售后响应越大越好。售后响应速度用“小时”表示数值越大代表响应越慢所以它其实是成本型指标——这里容易搞混写代码前一定要和业务方确认每个指标的方向。import numpy as np X np.array([ [120, 30, 85, 4], [100, 45, 78, 6], [150, 20, 92, 3] ], dtypefloat) # 指标方向价格成本型、交货周期成本型、质量效益型、售后响应成本型 benefit_mask [False, False, True, False] # 先用熵权法自动算权重 R normalize_matrix(X, benefit_mask) w entropy_weight(R) print(熵权法权重:, np.round(w, 4)) C, rank topsis(X, w, benefit_mask) print(贴近度:, np.round(C, 4)) print(排序索引:, rank)跑完这段代码你会得到一组权重和三个贴近度值。如果排序结果和直觉一致——比如 C 供应商质量最高但价格也最高最终排名取决于权重分配——说明代码逻辑没问题。注意normalize_matrix里对成本型指标取了倒数所以售后响应 4 小时比 6 小时更优符合业务直觉。3.2 权重参数怎么调三种策略的对比权重是 TOPSIS 里最敏感的输入。同一份数据权重变一点排序可能就翻个面。我一般会准备三套权重方案做交叉验证第一套是熵权法自动权重完全由数据驱动适合没有先验信息的场景。优点是客观缺点是如果某个指标数据波动大但业务上不重要会被赋予过高权重。第二套是等权重每个指标 1/n。这是最保守的做法适合指标之间重要性差异不大、或者你不想在权重上引入争议的情况。等权重的结果通常比较稳不会出现极端排序。第三套是专家给定权重比如用 AHP 算出来的。这套权重最符合业务直觉但需要额外做一致性检验。源码里如果只留了权重输入接口你可以把 AHP 的结果直接传进去。# 方案一熵权法 w_entropy entropy_weight(R) # 方案二等权重 w_equal np.ones(X.shape[1]) / X.shape[1] # 方案三专家权重示例价格0.4周期0.2质量0.3售后0.1 w_expert np.array([0.4, 0.2, 0.3, 0.1]) for name, w in [(熵权, w_entropy), (等权, w_equal), (专家, w_expert)]: C, rank topsis(X, w, benefit_mask) print(f{name}权重: {np.round(w,4)}, 贴近度: {np.round(C,4)}, 排序: {rank})跑完对比如果三套权重下排序一致说明方案优劣比较明显结论可信度高。如果排序差异大就需要回到业务层面讨论到底哪个指标更重要这个讨论本身比 TOPSIS 计算结果更有价值。3.3 结果输出与可解释性处理TOPSIS 的输出不只是一串贴近度数字。实际项目里我习惯把结果整理成一张表包含原始数据、归一化值、加权值、D、D-、贴近度和排名。这样业务方能看到每个方案的得分构成而不是只看到一个排名。def build_result_table(X, weights, benefit_mask, namesNone): R normalize_matrix(X, benefit_mask) V R * weights V_plus V.max(axis0) V_minus V.min(axis0) D_plus np.sqrt(np.sum((V - V_plus) ** 2, axis1)) D_minus np.sqrt(np.sum((V - V_minus) ** 2, axis1)) C D_minus / (D_plus D_minus) rank np.argsort(-C) 1 if names is None: names [f方案{i1} for i in range(X.shape[0])] import pandas as pd df pd.DataFrame({ 方案: names, D: np.round(D_plus, 4), D-: np.round(D_minus, 4), 贴近度: np.round(C, 4), 排名: rank }) return df.sort_values(排名) df build_result_table(X, w_entropy, benefit_mask, [供应商A, 供应商B, 供应商C]) print(df.to_string(indexFalse))这张表里D 越小说明离正理想解越近D- 越大说明离负理想解越远。贴近度在 0 到 1 之间越接近 1 越好。如果两个方案贴近度非常接近比如差 0.001不要强行分优劣应该提示业务方这两个方案在评价体系下几乎等价需要引入新的指标或调整权重再判断。4. TOPSIS 源码落地时的避坑与排查4.1 指标方向搞反排序完全颠倒现象跑完代码发现排名和业务直觉完全相反最好的方案排到了最后。原因成本型指标没有做方向统一直接参与了正理想解计算。比如价格越低越好但代码里把价格最大值当成了正理想解导致便宜方案反而离正理想解远。解决在归一化阶段就把成本型指标取倒数或做 1-r 转换确保所有指标都是“越大越好”。检查方法很简单归一化后看每一列的最大值对应的是不是业务上最优的那个方案。4.2 零值导致熵权法报错或权重失真现象数据里某个指标有零值熵权法计算时出现 nan 或权重异常集中。原因ln(0) 数学上无定义源码里如果没加 eps 兜底会直接报错加了 eps 但零值过多时该指标的信息熵会被高估权重被压低。解决先检查数据里零值的比例如果超过 10%考虑用极差归一化替代向量归一化或者对零值做平滑处理。我一般会在熵权法之前加一行R R 1e-6做整体平移但这样会轻微改变数据分布需要评估影响。4.3 权重和为 1 但量纲不匹配现象手动传入权重后贴近度全部接近 0 或全部接近 1排序区分度很低。原因权重向量没有归一化或者权重与归一化矩阵的量纲不匹配。比如权重是百分制总和 100而归一化矩阵每列平方和为 1加权后数值尺度差异巨大。解决确保权重向量和为 1且每个权重在 0 到 1 之间。如果源码里权重是外部传入的加一行断言assert abs(sum(weights) - 1) 1e-6做校验。4.4 方案数量少于指标数量时的距离失效现象只有 2 个方案但 5 个指标算出来的贴近度一个接近 1 一个接近 0排序毫无悬念但不可信。原因当方案数 m 远小于指标数 n 时每个方案在高维空间里都接近正交欧氏距离失去区分度正负理想解几乎覆盖所有方案。解决方案数至少是指标数的 2 到 3 倍否则 TOPSIS 的结果参考价值有限。如果确实方案少考虑先做指标降维主成分分析或相关性剔除把指标数压到方案数以下。4.5 异常值主导理想解位置现象某个方案在某个指标上数值极端大或极端小导致正负理想解被它“拉走”其他方案的贴近度全部趋同。原因TOPSIS 的正负理想解取的是每列最大最小值异常值直接决定了理想解的位置。解决在构建决策矩阵前做异常值检测用箱线图或 3σ 原则识别并处理。处理方式可以是缩尾把极端值替换为 1% 或 99% 分位数或者单独把异常方案拿出来讨论不参与统一排序。5. 让 TOPSIS 结果更可信的两个进阶技巧5.1 用敏感性分析验证排序稳定性贴近度排序出来了但权重稍微变一点排序会不会翻这个问题不回答结论就站不住。我习惯做一轮敏感性分析对每个指标的权重在 ±20% 范围内扰动观察排序变化。如果排序在所有扰动下都稳定说明结论鲁棒如果某个方案排名波动大说明它处于“临界区”需要谨慎下结论。def sensitivity_analysis(X, base_weights, benefit_mask, perturb0.2, n_trials200): 对权重做随机扰动统计每个方案的排名分布 m, n X.shape rank_records [] for _ in range(n_trials): noise np.random.uniform(-perturb, perturb, n) w base_weights * (1 noise) w np.clip(w, 1e-6, None) w w / w.sum() _, rank topsis(X, w, benefit_mask) rank_records.append(rank) rank_array np.array(rank_records) for i in range(m): counts np.bincount(rank_array[:, i], minlengthm) print(f方案{i1} 排名分布: {counts}) return rank_array这段代码对权重做 200 次随机扰动每次重新计算排序最后统计每个方案落在各个名次的次数。如果某个方案 90% 以上的扰动下都排第一那它的优势是稳的。如果第一名在 1 和 2 之间反复横跳就需要回到业务层面找原因。5.2 把 TOPSIS 嵌进决策流程而不是只跑一次TOPSIS 最大的价值不是给出一个排名而是把评价过程透明化。我一般会把源码封装成一个可配置的模块输入是决策矩阵和指标配置输出是排序表和敏感性分析报告。每次业务方对结果有疑问就打开中间结果表看是哪个指标的加权值导致了差异。这样讨论就从“我觉得 A 更好”变成“A 在质量指标上的优势被权重放大了如果我们把质量权重从 0.3 降到 0.2排序会变”。一个实用的做法是把权重、指标方向、归一化方法都做成配置文件源码只负责计算。这样换一批数据或换一套权重不需要改代码只改配置。我吃过亏的地方是早期把权重硬编码在函数里后来业务方要调整翻代码翻了半天。现在我的习惯是任何评价模型的参数都必须外置代码里只留默认值。最后说一个我自己的教训TOPSIS 的结果永远不要直接当成最终决策。它只是一个排序工具帮你把多指标问题转化成单指标排序。真正拍板的时候还要考虑预算、供应商关系、实施风险这些没法量化的因素。把 TOPSIS 当成决策的输入之一而不是决策本身这个定位想清楚了用起来就不会翻车。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

StyleControls v5.81 实战:Delphi VCL 皮肤引擎与换肤避坑指南

StyleControls v5.81 实战:Delphi VCL 皮肤引擎与换肤避坑指南

简介:AlmediaDev StyleControls v5.81 是一套面向 Delphi 开发者的 VCL 控件库完整源码包,适用于需要在 XE2 至 12 各版本中构建现代化界面的中高级开发者。它提供按钮、标签、文本框、下拉框、列表框等丰富控件,并支持背景颜色、边框样式、字…

2026/10/3 9:55:28 阅读更多 →
HER算法深度解析:从后见之明到稀疏奖励强化学习

HER算法深度解析:从后见之明到稀疏奖励强化学习

“hindsight”这个词,翻译过来叫“后见之明”或者“事后聪明”。我们平时常说的“事后诸葛亮”,就是它在心理学里的经典形态。但如果你是一个做数据科学、搞强化学习的人,看到这个词,大概率第一时间会想到另一个东西:H…

2026/10/3 9:55:28 阅读更多 →
Agent记忆系统实战:基于MCP与Docker的分层存储与检索优化

Agent记忆系统实战:基于MCP与Docker的分层存储与检索优化

1. 从“hindsight”说起:为什么我们需要给Agent装上“后视镜”第一次看到“hindsight”这个词,我脑子里蹦出来的不是词典释义,而是过去半年里被反复折磨的一个场景:一个跑了十几轮的Agent,在第五轮的时候明明已经确认过…

2026/10/3 9:55:28 阅读更多 →

最新新闻

用规则设定与提示词工程治住AI写代码的“自作聪明”

用规则设定与提示词工程治住AI写代码的“自作聪明”

我做了快十年后端,这两年用AI写代码的时间比手写多。但有个事始终让我头疼:这玩意儿太爱“自作聪明”。你让它改一个变量名,它顺带把你整个函数重写了;你问它一个bug可能出在哪,它直接给你开新分支改完代码&#xff0c…

2026/10/3 11:05:00 阅读更多 →
SecureCRT自动化脚本实战:从SSH重复操作到批量巡检提效

SecureCRT自动化脚本实战:从SSH重复操作到批量巡检提效

如果2025年你还在用SecureCRT,那大概率不是因为它长得好看,而是因为你每天都在跟交换机、路由器、跳板机、Linux服务器的SSH窗口打交道——重复敲命令敲到条件反射。SecureCRT自动化脚本开发这件事,网上的教程大多停在“能跑就行”的阶段&…

2026/10/3 11:05:00 阅读更多 →
轴承选型计算实操:用SKF SimPro Quick 4.8.1做寿命验证与方案优化的经验

轴承选型计算实操:用SKF SimPro Quick 4.8.1做寿命验证与方案优化的经验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 11:04:59 阅读更多 →
RAG工程化六大分水岭:从解析、检索到评测的实战指南

RAG工程化六大分水岭:从解析、检索到评测的实战指南

RAG 烂大街了。这是我这半年在技术群和面试场合听到最多的一句话。说这话的人,手里多半有个用 LangChain 三行代码搭出来的知识库问答 demo——读文件、切文本、跑 embedding、塞进向量库、检索、拼 prompt、丢给 LLM,一套下来连半小时都用不了。确实&am…

2026/10/3 11:04:59 阅读更多 →
UE5大型项目实战:Lumen、Nanite与蓝图网络同步技术验证

UE5大型项目实战:Lumen、Nanite与蓝图网络同步技术验证

1. 大型项目为什么值得在UE5里重新做一遍技术验证做过几个中小体量项目之后,我越来越确信一件事:小项目验证的是“能不能跑”,大项目验证的是“跑得久不久、稳不稳、团队接不接得住”。这次我拿一个接近商业规模的开放场景做了一轮完整的功能…

2026/10/3 11:04:59 阅读更多 →
2024年TensorFlow还值得学吗?从安装到部署的完整指南

2024年TensorFlow还值得学吗?从安装到部署的完整指南

这些年我经常被问到同一个问题:TensorFlow是不是已经被PyTorch淘汰了?尤其到了2024年,打开各种论文复现仓库,PyTorch的出现频率确实高得吓人,很多刚入门的同学上来就直接跳过TensorFlow去学PyTorch。我的回答每次都一样…

2026/10/3 11:03:59 阅读更多 →

日新闻

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南 【免费下载链接】ex-skill 前任 skill 项目地址: https://gitcode.com/gh_mirrors/exsk/ex-skill 前任.skill 是一个运行在 Claude Code 上的开源 Skill:导入微信、iMessage、短信、…

2026/10/3 0:00:27 阅读更多 →
45个经典Linux面试题:从命令到网络排障的完整考点解析

45个经典Linux面试题:从命令到网络排障的完整考点解析

刚开始带应届生的时候,我最头疼的就是他们拿着一摞Linux面试题背得滚瓜烂熟,一上机全露馅。后来自己从被面的人变成面别人的人,才慢慢摸清楚:Linux面试题考的根本不是答案本身,而是你面对一个不确定的系统问题时&#…

2026/10/3 0:01:28 阅读更多 →
SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

简介:本资源是一份面向SAP ABAP开发人员、生产计划专员及ERP实施顾问的实操型操作指南,聚焦SAP生产预留核心业务场景,系统解决物料预留创建、查询、校验与批量处理等高频问题。文档以结构化方式覆盖预留背景原理、OMC2编码规则、工厂级参数配…

2026/10/3 0:01:28 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/3 9:14:33 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/3 9:47:50 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/3 9:42:31 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →