最小化多个仓库发货数量的算法

2024-01-07

我在美国有 10 个仓库。他们每个人可能有也可能没有产品 A、B、C、D、E 库存。有人从我的网站订购了全部五件商品。

我想尽量减少发送的货件数量。如何确定哪些物品要从哪些仓库发货?

例如,某人订购了 A、B、C、D 和 E。

  • 我在纽约有 A 和 B(但没有其他)。
  • 我有A、B、C (但没有其他人)在波士顿。
  • 我有 D 和 E(但没有其他) 芝加哥。

我正在尝试开发一种算法,该算法将创建从波士顿发货的三件商品和从芝加哥发货的两件商品。

我不想要 2 件来自纽约的物品、1 件来自波士顿的物品和 2 件来自芝加哥的物品。

所有项目都位于一个中央数据库中。


你的问题正是经典的设置覆盖优化问题 http://en.wikipedia.org/wiki/Set_cover_problem,这是 NP 困难的; “宇宙”是用户想要的物品集合,候选集合是仓库。

提出的算法通过@user384706 https://stackoverflow.com/a/11976750/344821 and @Kickaha https://stackoverflow.com/a/11977012/344821 is the 贪心算法 http://en.wikipedia.org/wiki/Set_cover_problem#Greedy_algorithm那里讨论过,这是一个不错的近似值。

如果您想找到实际的最佳解决方案,最好的选择是使用整数线性规划公式 http://en.wikipedia.org/wiki/Set_cover_problem#Integer_linear_program_formulation并插入一些 ILP 求解器。

您说您不关心距离,但如果您这样做,则设置覆盖问题也会影响每个仓库的成本(c(s)在维基页面上)这将代表较远的仓库不太适合挑选。

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

最小化多个仓库发货数量的算法 的相关文章

  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • 确定一组日期的事件重复模式

    我正在寻找一种模式 算法或库 它将采用一组日期并在退出时返回重复的描述 即集合 11 01 2010 11 08 2010 11 15 2010 11 22 2010 11 29 2010 会产生类似 十一月的每个星期一 的结果 有没有人以
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List
  • 关于复杂性(如果使用基于比较的排序算法)

    众所周知 任何基于比较模型的排序算法都有nlogn的下界 即Omega nlogn 这可以用数学证明 但众所周知 荷兰国旗问题可以在 O n 时间内对 3 个不同的元素 重复使用 进行排序 它也是基于比较模型 但可以在 O n 时间内进行排
  • Javascript树遍历算法

    我需要帮助以深度优先的方式遍历树结构 我无法想出一个算法来正确地做到这一点 我的输入是这样的 A B C 1 2 a b c d 输出应采用以下形式 A 1 a A 1 b A 1 c A 1 d A 2 a A 2 b A 2 c A 2
  • 以最少插入次数将字符串转换为回文

    这是一个来自日常编码问题 https www dailycodingproblem com 给定一个字符串 找到可以通过插入来组成的回文数 单词中任何位置的字符数尽可能少 如果有 大于一个可以制作的最小长度的回文 返回 字典顺序最早的一个
  • 另一个生命游戏问题(无限网格)?

    我一直在玩 Conway 的生命游戏 最近发现了一些令人惊讶的快速实现 例如 Hashlife 和 Golly 在这里下载Golly http golly sourceforge net http golly sourceforge net
  • 如何反向for循环?

    我正在制作一个水模拟程序 我需要它通过 y x 进行 for 循环 但我需要它先检查最底部的 y 然后向上检查 这是我的等级 lvl 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 我需要
  • 两个未排序小数组的交集算法

    我正在寻找一种在非常特定的条件下对两个小型未排序数组进行交集的算法 数组项的类型只是整数或类整数类型 在相当长的时间内 大约 30 40 一个或两个数组可能为空 数组通常非常小 通常为 1 3 个项目 我预计不会超过 10 个 交集函数会被
  • D3.js 对力导向图使用什么算法?

    我有兴趣确切地知道 D3 使用什么算法来实现库中的力导向图功能 读过科布罗夫的总结 http www cs brown edu rt gdhandbook chapters force directed pdf力导向图的历史让我有点困惑 不
  • 什么是日历队列?

    我正在致力于构建一个离散事件模拟器 维基百科提到有几种通用优先级队列非常适合在 DES 中使用 具体来说 它提到日历队列是一个很好的结构 我找到了一份 pdf 1988 年的 其中提到了日历队列 但在大多数情况下我找不到关于它们的任何其他内
  • 运动结构,根据 2D 图像点对应关系重建 3D 点云

    Use case 物体绕其中心以不同的速度旋转 固定摄像机正在观察物体 给定 2D 图像点对应关系重建 3D 点云 当物体旋转时 相机可以看到它的不同部分 从而检测到不同的点和对应关系 Scene A N 张图片b N 1 图像对C N 1
  • 查找邻接表中所有连接的节点

    我有一个 DAG 的邻接列表 我需要从所有节点中找到所有连接的节点 例如 对于下面的 DAG 1 gt 3 gt 4 2 gt 4 3 gt 2 4 gt 5 5 gt NULL 我需要这个 1 gt 2 3 4 5 2 gt 4 5 3
  • 将平面表解析为树的最有效/优雅的方法是什么?

    假设您有一个存储有序树层次结构的平面表 Id Name ParentId Order 1 Node 1 0 10 2 Node 1 1 1 10 3 Node 2 0 20 4 Node 1 1 1 2 10 5 Node 2 1 3 10
  • 匈牙利算法 - 系统分配

    我正在一个项目中实现匈牙利算法 我设法让它工作 直到所谓的步骤 4维基百科 http en wikipedia org wiki Hungarian algorithm Matrix 5Finterpretation 我确实设法让计算机创建
  • 如果我在计算强连通分量时不使用 G 转置会怎样?

    我正在阅读算法导论 在 22 5 强连通分量中 算法 STRONGLY CONNECTED COMPONENT G 定义为 调用 DFS G 计算每个顶点 u 的完成时间 u f 计算 G 转置 调用 DFS G transpose 但在
  • 使用 O(1) 辅助空间迭代二叉树

    是否可以在 O 1 辅助空间中迭代二叉树 不使用堆栈 队列等 或者这已被证明是不可能的 如果可以的话 怎样才能做到呢 编辑 我得到的关于如果有指向父节点的指针就可能实现这一点的响应很有趣 我不知道可以做到这一点 但取决于您如何看待它 这可以
  • 计算序列 1,3,8,22,60,164,448,1224... 的第 n 项? [复制]

    这个问题在这里已经有答案了 可能的重复 我想以 Order 1 或 nlogn 的顺序生成序列 1 3 8 22 60 164 的第 n 项 https stackoverflow com questions 11301992 i want
  • 准备与大数据相关的设计和架构问题的最佳方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 带提示的二分查找

    我有一个简单的std vector包含一些已排序的数字 按升序 我想查找一个元素 到目前为止我使用 return std lower bound vec begin vec end needle Where needle是我寻找的元素 然而

随机推荐

  • Python子进程check_output编码特殊字符

    我在 python 编码方面遇到一些问题 当我尝试执行此操作时 subprocess check output ipconfig shell True 它给了我一个包含特殊字符的输出 例如 Statut du m x82dia M x82d
  • RecyclerView 中类似寻呼机的行为

    我正在尝试为水平方向实现类似 ViewPager 的行为RecyclerView 来自适配器的数据应该正常膨胀和绑定 但是通过适配器的导航Recycler应该区别对待 当用户滑动 或尝试滚动 时 我移动Recycler朝该方向的一个项目 将
  • Nodemailer 与 Gmail |出现错误:错误:无效登录:535-5.7.8 用户名和密码不被接受

    我正在尝试使用带有 Gmail 帐户的 Nodemailer 在我的应用程序中设置电子邮件验证 我的问题是它报告错误 指出我的用户名和密码尚未被接受 There was an error Error Invalid login 535 5
  • 如何检查数据库列中存在的字符串? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有带有字
  • 将 BigDecimal 格式化为最多 2 位小数的字符串,删除小数部分的 0

    我有一个 BigDecimal 数字 我只考虑它的小数点后两位 所以我使用以下方法截断它 bd bd setScale 2 BigDecimal ROUND DOWN 现在我想将其打印为字符串 但如果它是 0 则删除小数部分 例如 1 00
  • 如何解决延迟启用CheckJNI?

    我是 android 新手 正在使用 genymotion 模拟器 但突然我在 log cat 中遇到了延迟启用检查问题 并且我的应用程序崩溃了 我尝试在其他模拟器上运行它 但在 log cat 中仍然收到相同的消息 我搜索了很多网站但仍然
  • Java中如何检测字符集编码?

    有谁知道是否有一种简单的方法来检测Java中的字符集编码 在我看来 有些程序能够检测给定的数据使用哪个字符集 或者至少能够进行近似 我想底层机制必须解码每个字符集中的数据 并选择具有最少未定义字符的字符集 然后选择哪个字符集更常见以打破平局
  • 如何使用node.js和Request包禁用HTTP标头中的“withcredentials”?

    使用 Node js 和Request https github com mikeal request来自浏览器的包 通过浏览器化 http browserify org 我使用 CORS 在单独的域上执行 HTTP GET 请求 在服务器
  • Python 列表可变

    我试图使用Python术语来解释为什么会发生以下情况 有人可以解释为什么吗tmp变成 1 2 3 不保持原样 1 2 arr tmp 1 2 arr append tmp print arr 1 2 tmp append 3 print a
  • 用户注销后 PHP 会话不会销毁

    我正在尝试为我的 PHP 应用程序创建身份验证机制 但我很难销毁会话 我尝试取消设置先前在会话数组中设置的身份验证令牌 并通过以下方式销毁会话 session destroy 以及在销毁会话之前完全重置会话数组 我正在调用标头函数 并在函数
  • 为什么 php 将空字节添加到私有和受保护的属性名称中?

    我是 PHP 世界的新手 并从中学习php net http php net 我知道 当将对象转换为数组时 会在私有和受保护的属性名称周围添加空字节班级名称 or 星号键 附加在数组键中私有和受保护的属性名称之前 但我的问题是WHYphp
  • 如何在运行时计算代码的校验和?

    我有一个在计算机上运行的 C NET 应用程序 如何在运行时计算整个代码的校验和 Note 我不想计算正在使用的图像的校验和 而是计算实际的代码部分 我从来没有用过这个 但是 使用反射 您可以导航到获取ILAsByteArray http
  • 编译循环依赖是如何工作的?

    我用 Java 制作了这个示例 但我认为 未经测试 它也适用于其他 所有 语言 您有 2 个文件 第一的 M java public class MType XType x MType x null 其次 另一个文件 在同一目录中 XTyp
  • GHz 至 MIPS?有人粗略估计一下吗?

    从迄今为止我所做的研究中 我了解到 MIPS 高度依赖于正在运行的应用程序或语言 但是谁能给我对 MIPS 中 2 5 Ghz 计算机的最佳猜测 或者任何其他数量的 Ghz C 如果有帮助的话 MIPS 代表 每秒百万条指令 但对于现代计算
  • 显示 Android 的返回堆栈

    为了更好地理解 Android 的行为 我想了解有关返回堆栈概念的更多信息 有没有一种方法可以按返回堆栈中的顺序列出所有活动 这还应该包括所有其他正在运行的任务 我发现 Android Studio 0 5 1 中提供了此信息 查看 gt
  • 如何在android中使用itext库阅读pdf

    我是安卓世界的新手 我厌倦了使用 eclipse IDE 创建一个 android 项目 其中我尝试在 itext 库的帮助下阅读 pdf 文件 该 pgm 未显示任何输出 请告诉我如何更正代码 以便我可以从项目中 Assets 文件夹中存
  • dataLayer.push后数据什么时候发送到google

    我有一个单页电子商务应用程序 需要设置谷歌电子商务渠道 我的应用程序在跟踪代码管理器数据层中设置漏斗步骤 文档中没有任何内容表明数据层实际发送到 Google 跟踪代码管理器的时间 window dataLayer 使用以下内容开始页面 e
  • 如何/可以在 Jasper 报告模板中使用 base64 作为图像源?

    所以在我的 jrxml 文件中我有以下内容
  • PHP 5.3 中 ++ 运算符的奇怪行为

    观看以下代码 a Test echo a 这将输出 Tesu 问题是 为什么 我知道 u 在 t 之后 但为什么它不打印 1 PHP 文档 此外 变量正在递增 或递减将转换为 适当的数值数据 类型 因此 下面的代码将 返回 1 因为字符串
  • 最小化多个仓库发货数量的算法

    我在美国有 10 个仓库 他们每个人可能有也可能没有产品 A B C D E 库存 有人从我的网站订购了全部五件商品 我想尽量减少发送的货件数量 如何确定哪些物品要从哪些仓库发货 例如 某人订购了 A B C D 和 E 我在纽约有 A 和