6×N数组约束条件下最大和求解:Excel可行方案咨询
6×6数组选值最大化问题的Excel无脚本解决方案
问题澄清
先明确约束逻辑(原表述存在矛盾,按合理需求修正):给定6×6数组,需从每列选2个元素(总计12个),要求每行被选中的总次数恰好为2次,同时每列选中的2个元素来自不同行,目标是让选中元素的总和最大。
方案1:使用Excel规划求解(最优解)
这是无需外部脚本、直接在Excel内实现的最优方法,依赖自带的「规划求解」工具:
数据与辅助矩阵准备
- 将6×6原始数组放在
A1:F6区域(行1-6对应数组的6行,列A-F对应6列)。 - 在
A8:F13区域创建6×6的0/1辅助矩阵:单元格值为1表示对应原始数组的元素被选中,0表示未选中。
- 将6×6原始数组放在
设置目标函数
在任意空白单元格(如H1)输入总和计算公式:=SUMPRODUCT(A1:F6, A8:F13)这个公式会自动计算所有选中元素的总和。
配置规划求解约束
打开「规划求解」(若未显示,需在Excel选项→加载项中启用「规划求解加载项」):- 目标:选择
H1,设置为「最大值」。 - 可变单元格:选中辅助矩阵区域
A8:F13。 - 添加约束:
- 每列必须选2个:对每列(如
A8:A13)添加约束SUM(A8:A13)=2,共6条。 - 每行必须被选2次:对每行(如
A8:F8)添加约束SUM(A8:F8)=2,共6条。 - 辅助矩阵仅能为0或1:选中
A8:F13,设置约束类型为「二进制」。
- 每列必须选2个:对每列(如
- 目标:选择
运行求解
选择求解方法为「单纯线性规划」,点击「求解」,Excel会自动计算出满足所有约束的最优选中组合。
方案2:贪心近似法(无规划求解时用)
如果无法使用规划求解,可通过以下步骤快速得到近似最优解:
- 计算每行的元素平均值,按平均值从高到低排序,标记优先级(平均值越高的行越优先被选中2次)。
- 遍历每一列,优先选择该列中优先级最高且尚未达到2次选中次数的行的元素。
- 若某列的前两位优先级行已达选中上限,替换为次优行,直到所有列都选满2个元素,且每行恰好被选2次。
内容的提问来源于stack exchange,提问作者Socks Socks
相关产品推荐
相关产品推荐

