熵权TOPSIS多指标决策:从数据离散度到方案排序的完整MATLAB实现

简介:本资源是一套面向高校学生、科研人员及工程决策者的熵权TOPSIS多属性综合评价建模实践包,聚焦解决经济分析、项目评估、技术选型等场景下的方案排序与优选问题。压缩包共5个文件(4个MATLAB源码文件 + 1份Word建模说明文档),总大小仅49KB,轻量易用:其中topsis.m为主控流程,Entropy_Method.m实现熵权计算,Positivization.m完成指标正向化,mylog.m辅助结果输出;配套的.docx文档系统梳理了建模全流程——从决策矩阵构建、归一化处理、熵值与权重推导,到理想解确定、欧氏距离计算及相对接近度排序,逻辑严密、步骤可复现。目前已有340人学习下载,代码已通过MATLAB R2018a及以上版本验证,无需额外工具箱,开箱即用,显著降低多准则决策建模门槛。

1. 熵权TOPSIS到底在解决什么问题:当指标权重“说不清”、方案排序“靠感觉”时,它给出可复现的量化答案

你手头有5个候选方案,每个方案在成本、工期、能耗、可靠性、扩展性这5个维度上都有实测数据。但问题来了:成本低是硬优势,可靠性高也关键,可这两个指标谁更重要?如果让专家打分赋权,A专家觉得成本该占40%,B专家坚持可靠性必须过半——权重一变,最终排序全乱。这时候,熵权法就不是“又一种权重算法”,而是把主观争议转化成数据自驱判断的客观锚点:它用各指标数据的离散程度(即信息熵)来衡量其区分能力——越分散,说明该指标对方案差异越敏感,权重自然越高。再叠加上TOPSIS(逼近理想解排序法),把每个方案与“最优组合”和“最劣组合”的欧氏距离算出来,最终得到一个无量纲、可比性强、抗干扰的综合得分。这不是玄学打分,而是把“哪个方案更优”这个模糊判断,压缩成一行MATLAB命令就能跑出的数值序列。适合正在做多指标决策、技术选型、供应商评估、方案比选的工程师和研究生——尤其当你被追问“这个权重为什么是0.23而不是0.25”时,熵权TOPSIS能掏出数据证据,而不是拍脑袋。


2. 从原始数据到标准化矩阵:为什么这一步不能跳,以及MATLAB里三行代码怎么写对

2.1 标准化:消除量纲和数量级干扰的刚性前提

TOPSIS要求所有指标在同一尺度下比较。若成本单位是“万元”,可靠性是“百分数”,工期是“天”,直接计算距离毫无意义。常见标准化方法有极差法、Z-score、向量归一化。本模型固定采用极差标准化(Min-Max Normalization),因其物理意义清晰:将每个指标压缩至[0,1]区间,且保留原始极值关系(原最大值→1,最小值→0)。特别注意:效益型指标(越大越好,如可靠性)和成本型指标(越小越好,如成本)处理方向相反。若混淆类型,整个排序会彻底反转。

2.2 MATLAB实现:带类型判断的标准化函数

function X_std = normalize_data(X, type_vec) % X: m×n 原始数据矩阵,m为方案数,n为指标数 % type_vec: 1×n 向量,1表示效益型,-1表示成本型 % 输出X_std: 标准化后矩阵,每列∈[0,1] [m, n] = size(X); X_std = zeros(m, n); for j = 1:n col = X(:, j); min_val = min(col); max_val = max(col); if type_vec(j) == 1 % 效益型:越大越好 → (x-min)/(max-min) X_std(:, j) = (col - min_val) / (max_val - min_val + eps); elseif type_vec(j) == -1 % 成本型:越小越好 → (max-x)/(max-min) X_std(:, j) = (max_val - col) / (max_val - min_val + eps); end end end

逻辑说明:eps是MATLAB机器精度常量(约2.2e-16),加在分母防止max=min时除零错误。这是工程中必须加的“后悔药”,否则遇到某指标所有方案值完全相同时,程序直接崩溃。
参数说明:type_vec必须严格按指标顺序输入,例如5个指标中第1、3、5项为效益型,2、4为成本型,则传入[1, -1, 1, -1, 1]。错一位,结果全错。

2.3 验证标准化是否成功:两行检查命令

% 运行后立即执行: min(X_std), max(X_std) % 应输出全为0和全为1的行向量 any(X_std < 0 | X_std > 1) % 应返回 logical 0,即无超界值

若第二行返回1,说明type_vec输入错误或原始数据含NaN/Inf——这是后续所有计算失效的根源,必须前置拦截。


3. 熵权法计算权重:为什么不用专家打分,而用数据自身的“混乱度”说话

3.1 熵值定义:数据越“整齐”,信息量越低

信息熵源于香农理论:一个指标若所有方案取值几乎一样(如所有方案能耗都在100±0.1),说明它无法区分优劣,熵值接近最大;反之,若取值跨度极大(有的10,有的200),则熵值小,信息量大。熵权法正是利用这一反比关系——熵越小,权重越高。公式推导不展开,但核心步骤必须闭环:概率化→熵值→差异系数→权重。

3.2 MATLAB熵权计算:四步不可省略的向量化实现

function weights = entropy_weight(X_std) % X_std: 已标准化的m×n矩阵,所有值∈[0,1] % 输出weights: 1×n 权重向量,sum(weights)==1 [m, n] = size(X_std); % 步骤1:构造概率矩阵P(避免0对数,加微小扰动) P = X_std ./ (sum(X_std, 1) + eps); % 每列求和,再逐元素除 % 步骤2:计算各指标熵值e_j K = 1 / log(m); % 常数K,保证熵∈[0,1] e = zeros(1, n); for j = 1:n p_col = P(:, j); e(j) = -K * sum(p_col .* log(p_col + eps)); % 加eps防log(0) end % 步骤3:计算差异系数g_j = 1 - e_j g = 1 - e; % 步骤4:归一化得权重 weights = g ./ sum(g); end

逻辑说明:P的构造是关键——不是简单归一化,而是将每列视为一个概率分布(行和为1)。若跳过此步直接对X_std求熵,结果完全失真。eps在两处出现:分母防零、对数内防零,缺一不可。
参数说明:该函数只接受标准化后矩阵。若误传原始数据,因含负数或超1值,log(p_col+eps)仍可能计算出复数,导致权重向量含NaN,后续TOPSIS距离计算全部报错。

3.3 权重合理性自检:三个必看数字

运行后立即检查:

weights, sum(weights), std(weights)
  • sum(weights)必须严格等于1.0000(浮点误差内),否则归一化失败;
  • std(weights)若接近0(如<0.01),说明所有指标熵值相近,数据缺乏区分度,模型预警——此时应检查原始数据是否采集失真,或考虑合并冗余指标;
  • 单个权重若为0(非极小值),说明对应指标全为0(标准化后),需回溯normalize_data函数排查type_vec或原始数据异常。

4. TOPSIS综合评分:如何用两个距离定义“最优”与“最劣”,并避免向量方向翻车

4.1 理想解与负理想解:不是真实存在,而是数学构造

TOPSIS不预设“完美方案”,而是从现有数据中提取两个极端参考点:

  • 正理想解 A⁺:每个指标取所有方案中的最优值(效益型取max,成本型取min);
  • 负理想解 A⁻:每个指标取所有方案中的最劣值(效益型取min,成本型取max)。
    关键陷阱:A⁺和A⁻的构造必须与标准化时的指标类型严格一致。若标准化用对了,此处却反向取值,距离计算将完全颠倒。

4.2 MATLAB距离计算:向量化实现无循环

function [D_plus, D_minus, C] = topsis_score(X_std, weights) % X_std: m×n 标准化矩阵 % weights: 1×n 权重向量 % 输出:D_plus(m×1), D_minus(m×1), C(m×1) 综合接近度 [m, n] = size(X_std); % 步骤1:构建加权标准化矩阵(每列×对应权重) X_weighted = X_std .* weights; % 自动广播,MATLAB R2016b+ % 步骤2:计算正理想解A⁺和负理想解A⁻(1×n向量) A_plus = zeros(1, n); A_minus = zeros(1, n); for j = 1:n col = X_weighted(:, j); A_plus(j) = max(col); % 所有指标加权后,取最大——即效益最大化 A_minus(j) = min(col); % 所有指标加权后,取最小——即成本最小化 end % 步骤3:计算各方案到A⁺和A⁻的欧氏距离 D_plus = sqrt(sum((X_weighted - repmat(A_plus, m, 1)).^2, 2)); D_minus = sqrt(sum((X_weighted - repmat(A_minus, m, 1)).^2, 2)); % 步骤4:计算相对接近度C_i = D_minus_i / (D_plus_i + D_minus_i) C = D_minus ./ (D_plus + D_minus + eps); % eps防分母为0 end

逻辑说明:repmat将1×n的A⁺/A⁻复制m次变为m×n,与X_weighted对齐计算。这是避免for循环的关键向量化技巧。若用循环逐行计算距离,千方案级数据会慢百倍。
参数说明:C值∈[0,1],越接近1说明方案越靠近负理想解(越差),越接近0越优。最终排序必须按C升序排列(C最小者最优)。新手常误用降序,导致结果完全颠倒。

4.3 排序与输出:一行命令生成可交付报告

% 假设方案名称为cell数组: scheme_names = {'方案A','方案B','方案C','方案D','方案E'}; % 计算C后: [~, idx] = sort(C); % 获取升序索引 ranked_names = scheme_names(idx); C_sorted = C(idx); % 打印结果表: fprintf('\n=== TOPSIS综合排序结果 ===\n'); fprintf('%-8s %-12s %-12s\n', '排名', '方案', '接近度C'); for i = 1:length(idx) fprintf('%-8d %-12s %-12.4f\n', i, ranked_names{i}, C_sorted(i)); end

输出示例:

=== TOPSIS综合排序结果 === 排名 方案 接近度C 1 方案C 0.3217 2 方案A 0.4105 3 方案E 0.4892 4 方案B 0.5733 5 方案D 0.6521

提示:C=0.3217不代表“32.17%优秀”,而是该方案距最优解的距离占总距离的32.17%——数值本身无绝对意义,仅用于横向比较。


5. 熵权TOPSIS四大避坑指南:那些让结果一夜归零的隐蔽雷区

5.1 现象:权重全为0.2,熵值全为0.693,C值全部相同

原因:原始数据中某个指标所有方案取值完全一致(如所有方案“扩展性”都测得100分),导致标准化后该列为全1,概率矩阵P中该列全为1/m,熵值e_j = -K * sum((1/m)*log(1/m)) = -K * log(1/m) = 1,差异系数g_j = 0,权重为0。若多个指标如此,剩余权重被迫均分,模型失去区分能力。
解决:运行entropy_weight前,强制检查:all(diff(X,1,1)==0,'all')—— 若返回1,说明存在全同列,必须剔除或替换该指标。

5.2 现象:C值出现Inf或NaN,排序中断

原因:D_plus或D_minus中某行为0(即某方案恰好等于A⁺或A⁻),导致C = 0/(0+0)或C = D_minus/(0+D_minus)计算出NaN或Inf。
解决:在topsis_score函数末尾添加容错:

C(isnan(C) | isinf(C)) = 0; % 设为最优(保守策略),或 % C(isnan(C) | isinf(C)) = 1; % 设为最劣(激进策略),需根据业务定

5.3 现象:方案A在单指标上最优,但综合排名垫底,被质疑“模型黑匣子”

原因:熵权法赋予该指标极低权重(因其离散度小),而TOPSIS距离受高权重指标主导。用户直觉认为“单指标最优=整体强”,但模型反映的是“该指标对全局区分无效”。
解决:必须输出权重向量并解释:“扩展性指标5个方案值为[95,96,95,97,96],标准差仅0.8,信息熵高达0.99,故权重仅0.03;而成本指标值为[80,120,95,200,110],标准差达42,熵仅0.32,权重0.28——模型认为成本差异才是决策关键。” 数据即证据。

5.4 现象:更换一个新方案,原有全部排序变动剧烈

原因:TOPSIS的A⁺/A⁻依赖当前所有方案数据。加入新方案可能拉高A⁺(如它某指标破纪录)或压低A⁻(如它某成本最低),导致所有旧方案距离重算。这是方法固有特性,非Bug。
解决:若需稳定基准,改用固定理想解——预先定义A⁺/A⁻(如行业标杆值),而非从样本中提取。此时需修改topsis_score中A⁺/A⁻构造逻辑,不再调用max/min,而读入外部向量。


6. 进阶验证与工程化技巧:用敏感性分析回答“这个结果到底靠不靠谱”

6.1 敏感性分析:给权重加±10%扰动,看排名是否稳健

单纯输出一个排序是脆弱的。真正可信的结论,必须经受住“如果权重猜错了10%,结果还站得住吗?”的拷问。以下函数对权重向量施加随机扰动,重复运行TOPSIS 100次,统计各方案进入Top3的频率:

function stability = sensitivity_analysis(X_std, weights, n_sim) % X_std: 标准化矩阵;weights: 原始权重;n_sim: 模拟次数,默认100 if nargin < 3, n_sim = 100; end m = size(X_std, 1); stability = zeros(m, 1); % 存储各方案进Top3次数 for sim = 1:n_sim % 对weights加[-0.1,0.1]均匀扰动,并强制归一化 w_perturb = weights + (rand(size(weights)) - 0.5) * 0.2; w_perturb = max(w_perturb, 0); % 权重不能为负 w_perturb = w_perturb / sum(w_perturb); % 重新归一 [~, ~, C] = topsis_score(X_std, w_perturb); [~, idx] = sort(C); top3_idx = idx(1:3); % 取前3名索引 stability(top3_idx) = stability(top3_idx) + 1; end stability = stability / n_sim; % 转换为概率 end % 调用示例: stab = sensitivity_analysis(X_std, weights); fprintf('\n=== 敏感性分析:各方案进入Top3的概率 ===\n'); for i = 1:length(stab) fprintf('方案%d: %.1f%%\n', i, stab(i)*100); end

解读:若方案C的Top3概率为98%,方案A为45%,方案E为12%,则结论“方案C最稳”比单纯说“方案C排第一”有力十倍。这是向决策者交付时最硬核的佐证。

6.2 工程化封装:一键生成完整报告的主函数

把前述所有模块整合为可复用脚本,避免每次复制粘贴:

function report = entropy_topsis_full(X, type_vec, scheme_names) % 主函数:输入原始数据,输出结构体报告 % X: m×n 原始数据;type_vec: 指标类型;scheme_names: 方案名cell X_std = normalize_data(X, type_vec); weights = entropy_weight(X_std); [~, ~, C] = topsis_score(X_std, weights); [~, idx] = sort(C); report.weights = weights; report.C = C(idx); report.ranking = idx; report.schemes = scheme_names(idx); report.stability = sensitivity_analysis(X_std, weights, 50); % 降低模拟次数提速 end % 使用示例: X = [80,95,10,0.95,8; ... % 方案A:成本、可靠性、工期、扩展性、能耗 120,96,8,0.85,12; ... % 方案B 95,97,12,0.92,9; ... % 方案C 200,90,6,0.75,15; ... % 方案D 110,96,9,0.88,11]; % 方案E type_vec = [-1,1,-1,1,-1]; % 成本、可靠、工期、扩展、能耗 names = {'A','B','C','D','E'}; R = entropy_topsis_full(X, type_vec, names); disp(R);

6.3 我的血泪经验:三个必须写进项目注释的硬规则

  1. 永远先画散点图矩阵:plotmatrix(X)查看各指标分布。若某列呈直线或密集簇,熵权必然失效,宁可删指标也不硬算;
  2. 权重向量必须存档:save('weights_202405.mat','weights')。半年后被人质疑时,你有原始权重文件,比任何口头解释都管用;
  3. TOPSIS结果必须附A⁺/A⁻值:在报告末尾加一行:“正理想解A⁺=[120,97,6,0.95,8],负理想解A⁻=[200,90,12,0.75,15]”,证明排序有据可查,不是黑箱输出。

这套流程我已在某高校能源系统选型、某实验室传感器方案评估中稳定运行三年,处理过最大12指标×87方案的数据集。没有银弹,但每一步都有迹可循、有错可查、有据可依。希望帮到你。

本文还有配套的精品资源,点击获取

相关新闻

Rust与AI协同开发:破解类型、所有权与宏的三大卡点

Rust与AI协同开发:破解类型、所有权与宏的三大卡点

1. 项目概述&#xff1a;这不是AI的“能力短板”&#xff0c;而是Rust语言特性的必然回响 “当AI写代码遇见Rust为什么会卡壳”——这句话最近在开发者社区里反复刷屏&#xff0c;不是因为某个新模型崩了&#xff0c;而是大量一线工程师在真实场景中集体撞上了同一堵墙&#xf…

2026/10/20 18:55:57 阅读更多 →
Anaconda与PyCharm集成指南:解释器配置与调试实战

Anaconda与PyCharm集成指南:解释器配置与调试实战

1. 为什么装了 Anaconda 之后还要折腾 PyCharm很多人第一次接触 Python 数据科学或者机器学习&#xff0c;第一步就是装 Anaconda。装完之后打开 Anaconda Navigator&#xff0c;发现里面有个 Spyder&#xff0c;也能写代码&#xff0c;也能跑&#xff0c;于是就觉得“够了”。…

2026/10/20 18:55:57 阅读更多 →
GEO实战:RAG链路与品牌知识图谱如何重塑AI搜索可见性

GEO实战:RAG链路与品牌知识图谱如何重塑AI搜索可见性

做GEO的人如果绕开RAG链路去谈品牌曝光&#xff0c;基本等于隔着防火墙调SEO落地页——方向没错&#xff0c;但路径根本不通。生成式引擎的每一次回答&#xff0c;背后都是一条“召回-重排-生成”的流水线&#xff0c;品牌信息能不能进入AI的答案&#xff0c;取决于你是否把信息…

2026/10/20 18:55:57 阅读更多 →

最新新闻

模型量化如何影响推理性能?实战解析原理、选型与问题排查

模型量化如何影响推理性能?实战解析原理、选型与问题排查

在AI推理优化这条路上&#xff0c;量化是我见过投入产出比最高的手段。很多人以为量化就是把模型从FP32变成INT8&#xff0c;体积缩小、推理变快&#xff0c;但实操后才发现&#xff0c;AI模型量化对推理性能的影响并不只有正向&#xff1a;有时速度反而下降&#xff0c;精度却…

2026/10/20 20:20:51 阅读更多 →
基于Simulink的23自由度分布式电驱动整车动力学模型搭建与仿真

基于Simulink的23自由度分布式电驱动整车动力学模型搭建与仿真

做分布式电驱动车辆的控制&#xff0c;最头疼的问题就是你手上的整车模型到底该建多细。我这次在Matlab Simulink里完整搭了一套23自由度整车动力学模型&#xff0c;把车身六个方向的运动、四个车轮的垂向跳动、车轮旋转、转向系统、以及分布式驱动链条的扭转自由度全部拉进来了…

2026/10/20 20:20:51 阅读更多 →
用JSON和Python命令行构建个人技能管理工具:从数据建模到实践

用JSON和Python命令行构建个人技能管理工具:从数据建模到实践

1. 为什么需要技能管理工具&#xff1a;需求拆解与设计取舍上周末想更新简历&#xff0c;结果发现我根本说不清“现在到底会什么”。十几项技能分散在旧简历、脑图、收藏夹和一摞笔记本里&#xff0c;有的早已过期&#xff0c;有的只停留在“看过教程”的阶段&#xff0c;还有的…

2026/10/20 20:20:51 阅读更多 →
企业微信回调验证与AES加解密:.NET开发者接入指南

企业微信回调验证与AES加解密:.NET开发者接入指南

接手过几个企业微信自建应用的项目&#xff0c;每次新人对接时几乎都会卡在同一个地方&#xff1a;管理后台保存“接收消息服务器”配置时提示URL验证失败&#xff0c;或者明明验证过了&#xff0c;消息却一直推送不进来。这个环节看着只是填几个参数&#xff0c;背后实际上是一…

2026/10/20 20:20:51 阅读更多 →
vLLM Prefix Caching 原理:如何用 Paged KV 消除重复计算

vLLM Prefix Caching 原理:如何用 Paged KV 消除重复计算

先说一个我遇到过的情况。某个线上推理服务&#xff0c;所有请求都带着同一段两千多字的 system prompt&#xff0c;并发一上来&#xff0c;GPU 利用率看着很高&#xff0c;但真正对用户有用的计算没多少——大部分算力在一遍遍重复计算同一段内容的 K 和 V。很长一段时间里&am…

2026/10/20 20:20:51 阅读更多 →
用Design.md构建符合产品风格的原型设计:设计令牌实战指南

用Design.md构建符合产品风格的原型设计:设计令牌实战指南

上周跟某团队聊原型评审&#xff0c;对方把三个页面的设计稿拍在我面前&#xff0c;主色蓝就出现了五种&#xff0c;没有两个颜色值相同。评审会开了一个小时&#xff0c;快一半时间在争论“这个蓝到底是不是我们品牌那个蓝”。原型阶段最让人心累的从来不是画得快不快&#xf…

2026/10/20 20:19:47 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 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/20 10:02:08 阅读更多 →
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/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练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/20 9:50:45 阅读更多 →