Excel 解算器具有非相邻单元格约束?

2024-04-02

我是 Excel 求解器的新手,只是在拿起一本数据科学书籍后才了解它。我想更熟悉这个工具,所以我一直在尝试解决不同的问题。但我被困在一个问题上,我什至不确定是否可以使用求解器?基本上,我需要检查的约束是两个单元格是否相邻。

我的问题:我有一堆袋子,里面装有不同数量的弹珠。我想最大限度地增加通过拾取袋子获得的弹珠数量,但它们不能彼此相邻。

这是我在电子表格中的内容:

  • 价值 = 袋中弹珠的数量
  • Choose=是否选包(二进制)
  • 违规 = 行李 1 的(选择*行李编号)- 行李 2 的(选择*行李编号)

如果我拿起两个相邻的袋子,违规将= -1。

+------------+----+----+----+---+---+-------------+
| Bag Number | 1  | 2  | 3  | 4 | 5 | Total Value |
+------------+----+----+----+---+---+-------------+
| Value      | 10 | 20 | 30 | 40| 50|          150|
| Choose     |  0 |  0 |  0 | 0 | 0 |            0|
| Violation  |  0 |  0 |  0 | 0 |   |             |
+------------+----+----+----+---+---+-------------+

最优解:

+------------+----+----+----+---+---+-------------+
| Bag Number | 1  | 2  | 3  | 4 | 5 | Total Value |
+------------+----+----+----+---+---+-------------+
| Value      | 10 | 20 | 30 | 40| 50|          150|
| Choose     |  1 |  0 |  1 | 0 | 1 |           90|
| Violation  |  1 | -3 |  3 |-5 |   |             |
+------------+----+----+----+---+---+-------------+

我尝试了一些限制的组合:

  • 对选择行施加二元约束
  • 违规 >=0 且违规
  • 总目标值

我自己解决了这个问题。这可行吗?


是的,问题是适定的。

我建议采用不同的方式来制定邻接约束。特别是,我会使用以下内容:

choose_1 + choose_2 <= 1
choose_2 + choose_3 <= 1
choose_3 + choose_4 <= 1
choose_4 + choose_5 <= 1

这些表明每对中最多有一个(1,2), (2,3), (3,4) and (4,5)可以选择。它的优点是不使用袋子编号,袋子编号通常可以是袋子名称(即字符串而不是数字)。它还有另一个好处:我们不需要将变量定义为二进制,而只需将变量定义为连续且介于 0 和 1 之间:0 <= choose_i <= 1, 对全部i = 1,...,5。这是因为所得的约束矩阵是完全单模 http://en.wikipedia.org/wiki/Unimodular_matrix,这意味着求解线性规划松弛 http://en.wikipedia.org/wiki/Linear_programming_relaxation二元问题的最优解为choose_i都是0 or 1.

这是我的电子表格布局:

请注意,最好使用不同的颜色来区分变量(绿色)、约束(红色)和数据(蓝色)。我还用绿色字体标记了目标单元格。

这里有formulas:

这是求解器模型:

Solution:

请注意,矩阵完全幺模这一事实是保证 http://en.wikipedia.org/wiki/Linear_programming_relaxation#Solution_quality_of_relaxed_and_original_programs最佳解决方案将具有二进制值。一般来说,这是不正确的,我们需要将变量定义为二进制并诉诸分支定界 http://en.wikipedia.org/wiki/Branch_and_bound.

我希望这有帮助。快乐建模!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel 解算器具有非相邻单元格约束? 的相关文章

  • 有没有任何方法可以使用 openpyxl 获取 .xlsx 工作表中存在的行数和列数?

    有没有任何方法可以使用 openpyxl 获取 xlsx 工作表中存在的行数和列数 在xlrd中 sheet ncols sheet nrows 将给出列数和行数 openpyxl中有这样的方法吗 给定一个变量sheet 可以通过以下方式之
  • Excel VBA - 循环文件夹中的文件、复制范围、粘贴到此工作簿中

    我有 500 个包含数据的 Excel 文件 我会将所有这些数据合并到一个文件中 实现此目标的任务列表 我想循环遍历文件夹中的所有文件 打开文件 复制此范围 B3 I102 将其粘贴到活动工作簿的第一张工作表中 重复但在下面粘贴新数据 我已
  • 检查所选单元格是否在特定范围内

    我正在使用 C 创建 Excel 加载项 如何检查选定的 或代码中范围表示的单元格 是否在特定范围内 例如如何检查单元格 P 5 是否在 A 1 Z 10 范围内 Use Application Intersect 像这样 在VBA中 Su
  • 如何用xlrd读取公式

    我正在尝试做一个解析器 它读取几个 Excel 文件 我通常需要位于行底部的值 您可以在其中找到所有上部元素的总和 因此 单元格值实际上是 sum 或 A5 0 5 可以说 对于使用 Excel 打开此文件的用户来说 它看起来像一个数字 这
  • 使用 ClosedXML 附加到 excel 文件

    我需要将新数据附加到使用 ClosedXML 创建的现有 Excel 文件中 如何使用 ClosedXML 附加到 Excel 文件 如何获取最后一条记录的行号并将其附加到该行号上 或者还有其他内容 Thanks 打开现有工作簿 然后使用L
  • 如果字符串包含列表中的单词,则返回与列表值相邻的值

    目前我有一组单元格 每个单元格在无用的信息中都有一个唯一的标识符 我还有这些唯一标识符的列表 以及每个标识符对应的值 我想做的是找到一个单元格包含哪个标识符 如果有的话 然后输出相应的值 下面是一个例子 https i stack imgu
  • 如何将 Excel 中的图表导出为图形

    我有一系列 Excel 电子表格 每个电子表格至少包含一页数据和一页根据数据创建的图表 我需要捕获 不从数据中重新生成 将现有图表作为网络友好图像 这可以通过 Java 或 Net 实现吗 我知道 POI 的东西 Java 不会这样做 或者
  • 如何在Java,Apache POI中获取Excel单元格字段的字体样式?

    我想用Java捕获Excel中单元格字段的字体 我正在使用 Apache POI 如果可以的话我想捕捉font color font family font weight font size etc 我怎样才能实现这个目标 根据评论进行编辑
  • Range.End() 困惑

    我有一个关于 VBA 中 Range End 属性的一般性问题 我已经阅读了有关该房产的信息here http msdn microsoft com en us library bb221181 aspx 但我还是很困惑 例子 With w
  • 你将如何开始自动化我的工作? - 第2部分

    后续这个问题 https stackoverflow com questions 2796128 how would you start automating my job 在经历了第一波进货 9 小时的复制 粘贴 后 我现在相信我已经满足
  • 运行时错误“1004”:无法获取 WorksheetFunction 类的 Combin 属性

    我在 Excel 2013 的工作簿中有 VBA 函数 可以根据泊松分布计算 p 值 当 的时候events下面代码中的变量超过 1029 我得到运行时错误 1004 无法获取 WorksheetFunction 类的 Combin 属性
  • 如何处理 Workbook.SaveAs 覆盖确认上的“否”或“取消”?

    我希望在 VBA 脚本开始修改内容之前提示用户保存工作簿 当 另存为 对话框出现时 如果用户单击 取消 我会引发自定义错误并停止脚本 如果他们单击 保存 并且文件名已存在 我希望询问他们是否覆盖 这是我的代码 Function SaveCu
  • 如何在Excel中识别给定月份的第一,第二等星期一或一周中的其他日期

    我在网上查了一下 但公式看起来很复杂 有什么巧妙的建议吗 例如 我需要一个公式来确定哪个日期是 2014 年 8 月的第一个星期一 类似于第二个星期一的使用 等等 谢谢 一般来说 你可以找到n 第一个x给定的一天M and Y用这个公式 D
  • 在 VBA 中使用 getElementsByClassName

    我正在使用此代码从页面获取产品名称 页面代码是 div class product shop col sm 7 div class product name h1 Claro Glass 1 5 L Rectangular Air Tigh
  • 将包含换行符的文本文件导入到 Excel 中

    我有一个纯文本文件 如下所示 some text containing line breaks 我正在尝试说话excel 2004 Mac v 11 5 正确打开此文件 我希望只看到一个单元格 A1 包含上述所有内容 不带引号 但可惜的是
  • 使用 VBA 通过简单命令从非连续范围的并集获取值到数组中(无循环)

    我有以下任务 表面上很简单 使用 VBA 将电子表格上多个列的值复制到二维数组中 为了让生活更有趣 这些柱子并不相邻 但它们的长度都相同 显然 可以通过依次循环每个元素来做到这一点 但这看起来非常不优雅 我希望有一个更紧凑的解决方案 但我很
  • For...VBA 中的下一个循环超出限制

    我正在使用一个For Next循环填充数组 如下所示 ReDim array 1 to 100 1 to 100 For i 1 to 100 Next i But the i计数器似乎总是转到 101 而不是停止在 100 因此 这会在我
  • 如何使用 VBA 将 mm/dd/yyyy 更改为 dd/mm/yyyy

    我在使用 VBA 将 mm dd yyyy 转换为 dd mm yyyy 日期格式时遇到问题 我有一个这样的表 仅供参考 该表是从报告工具自动生成的 字符串操作 或任何 Excel 函数可以提供帮助吗 希望知道如何解决这个问题的人可以给我一
  • Excel VBA 过滤和复制粘贴数据

    给定一个数据集 假设有 10 列 在 A 列中我有日期 在 B 列中我有 我想仅过滤 A 列 2014 年的数据 B 列 ActiveSheet Range A 1 AR 1617 AutoFilter Field 5 Operator x
  • VBA XML V6.0 如何让它等待页面加载?

    我一直在努力寻找答案 但似乎找不到任何有用的东西 基本上 我是从一个网站上拉取的 当您在该页面上时 该网站会加载更多项目 我希望我的代码在加载完成后提取最终数据 但不知道如何让 XML httprequest 等待 Edited Sub p

随机推荐

  • WPF Storyboard - 相同的触发器,但行为相反

    我有一个 Stackpanel One 其中有一些内容 一个图像和一个默认隐藏的 SubStackpanel 单击图像时 图像应旋转 90 度 并向下滑动 SubStackpanel 再次单击图像时 图像应旋转回其原始位置 并且 SubSt
  • 鲁比:空白?不带导轨

    我想做这个测试 if line blank do stuff 但我使用的是直接红宝石 而不是 Rails 达到相同效果的公认习惯用法是什么 我正在为一个字符串执行此操作 在哪里测试 empty 与测试 blank 不一样吗 全空白字符串不是
  • Spring Security - 多个身份验证提供者

    我的 Web 应用程序有多个身份验证管理器 一个用于 API 一个用于 WEB 访问 api 应该只有一个基本的身份验证服务 通过 spring security 标记进行配置 如下所示
  • 通过仅知道其宽度权重来设置视图的高度以使其成为正方形

    我有这样的场景 填充容器的水平 LinearLayoutweightSum 100 以及内部的两个视图 每个视图的权重为 50 现在我如何使这两个视图成为正方形 例如 高度必须等于它们的宽度 LinearLayout 行数未知 所以基本上
  • xpath:包含()一组答案

    我正在尝试学习 XPath 但在进行嵌套搜索 使用 contains 时遇到问题 具体来说 我被问到以下问题 根据以下 dtd 有一个作者列表和一个书籍列表 编写一个 XPath 表达式 返回撰写书籍的作者数量 可以假设没有两个作者 ID
  • $浏览器未定义

    我正在尝试使用 jquery 进行浏览器检测 但它说 未捕获的引用错误 browser 未定义 代码就像 if browser msie condition browser 在 jquery 1 9 中被删除 看http jquery co
  • quotename 在 exec 内部不起作用吗?

    我正在尝试做类似的事情这个问题 https stackoverflow com questions 837358 sql create logon cant use parameter as username 答案建议在 exec 内部使用
  • 集合已修改;枚举操作可能无法执行[重复]

    这个问题在这里已经有答案了 我收到错误 集合已修改 枚举操作可能无法执行 我正在尝试删除除当前对象之外的所有打开的表单对象 FormCollection fc Application OpenForms foreach Form form
  • Apache 的 Velocity — getTemplate() 。如何传递字符串/对象而不是 .VM 文件

    Apache 的 Velocity getTemplate 实际上它允许传递 vm 文件名 我可以在这里传递字符串 对象吗 有什么方法可以传递字符串 对象吗 这是一个对我有用的示例代码 速度版本 1 7我使用 log4j 作为记录器 imp
  • 当我尝试使用 Facebook 或 Google 登录时,GetExternalLoginInfoAsync 始终返回 null

    我有一个问题OWIN验证 我总是收到空值GetExternalLoginInfoAsync 当我尝试使用 Facebook 或 Google 登录时 但是有一些神秘的情况 当我打开 Fiddler 时 我使用这种方法得到了正确的数据 我不明
  • 在代码中设置静态资源

    我的作品里有几种风格App xaml file
  • 如何对 pandas 数据框中的一组行执行函数?

    我正在尝试实施一个算法 https github com sebleier RDP 假设该算法作为函数 xyz 执行 该函数专门设计用于对轨迹数据 即 x y 坐标 进行操作 该函数有两个参数 第一个参数是list of tuples x
  • Bootstrap 3.0 少于 12 列的网格

    我正在尝试使用只有 7 列的网格创建一个日历 我想让这 7 列均匀分布并适合整行 目前 7 列加起来不等于 12 我得到 12 列 其中 5 列为空 Bootstrap 3 有没有办法让所有 7 分布在一行中 您最好的选择可能是创建您自己的
  • 为什么基于 Glass/GDK 的 VoiceListener 在 XE16 中只能捕获一次 VoiceCommand?

    在寻找一种使用 Google GDK 实现上下文语音命令的方法时 我遇到了这个post https stackoverflow com questions 21168267 然而 示例代码似乎仅适用于 XE12 不适用于 XE16 我最近测
  • 使用一对多关系在 Django 中创建 2 种不同的用户类型

    我正在创建一个篮球统计应用程序 我希望有两种不同的用户类型 教练和球员 我希望教练能够登录并仅查看他的球员的统计数据 因此 一名教练将拥有多名球员 我希望能够为每个教练创建用户个人资料 并仅显示他们的球员 而不是数据库中的所有球员 到目前为
  • 谷歌地图数据层,点击多边形并更改不透明度(Chrome Bug)

    我有一个谷歌地图 我使用 addGeoJson 将几何数据 加载到数据层 一切正常 直到我尝试在多边形上绑定事件以更改 opactiy 设置 我从OSM检索城市边界来绘制多边形 我认为我的json对象格式很好 我以Google作为参考 ht
  • TypeScript 编译中缺少 in-memory-data.service.ts

    浏览 Angular 教程 了解如何在中使用 http 请求https angular io tutorial toh pt6 https angular io tutorial toh pt6 我到了这一点 使用以下命令生成类 src a
  • Sublime Doctype HTML 片段

    有没有办法可以将下面的 作为片段插入 我尝试使用 首选项 gt 键绑定 用户 但引号确实很重要 您可以通过创建一个新的代码片段Tools gt New Snippet
  • onSharedPreferenceChanged 不会一直触发

    我对这个方法有一个奇怪的问题 当我编辑 EditTextPreference 时 仅当我更改值时才调用它 而在 MultiSelectListPreference 上 仅当我第一次更改时才调用它 这是我的片段代码 public class
  • Excel 解算器具有非相邻单元格约束?

    我是 Excel 求解器的新手 只是在拿起一本数据科学书籍后才了解它 我想更熟悉这个工具 所以我一直在尝试解决不同的问题 但我被困在一个问题上 我什至不确定是否可以使用求解器 基本上 我需要检查的约束是两个单元格是否相邻 我的问题 我有一堆