优化容量利用率的算法

2024-02-14

我为自己设定了一个“简单”的 C# 编程挑战,以优化容量。我第一次尝试时表现不佳(如下文所述),因此我想看看是否有一个标准化算法可以做到这一点,而不使用人工智能/启发式技术,因为我根本不知道它们。我相信有一种已知的方法可以做到这一点,因为该问题可能适用于常见情况,例如 CPU 和其他资源的负载平衡。

问题是我自己给自己设置的。我有3个容器。

  • 容器 1 - 容量 15
  • 集装箱 2 - 容量 30
  • 容器 3 - 容量 15

容器一开始都是空的,因此容量已满。

我也有20件。由于清单很长,我不会全部列出。但它们很简单,可以像

  • 第 1 项 - 金额 3
  • 第 2 项 - 金额 8
  • 第 3 项 - 金额 1
  • 第 4 项 - 金额 1
  • 第 5 项 - 金额 5
  • 等等 .........

我想要做的是将所有物品装入最少数量的容器中,而不打破限制,即装满容量。

  • 容器 1 - 物品 2, 1
  • 容器 2 - 项目 3、4、5
  • 等等 ..............

我正在寻找解决方案,尽管显然解决方案越有效越好。最终我将使容器和物品自动生成,甚至可能添加更多属性(重量和数量)。我知道即使您随机生成它们,解决方案的数量也是有限的,其想法是找到最好的或接近最佳的才是合理的时间。我最初的尝试是首先定义容器和项目对象,然后将项目随机分配给容器,然后尝试通过在接近容量的容器中查找可用空间并用未满的容器中的项目填充它们来进行优化。但效果并不好。我认为最简单的解决方案是按照金额最大的顺序分配项目,然后使用少量的资金来填补空白。我远离了这个初始值,因为我觉得如果添加更多约束,即数量很高(20),但假设新约束的权重仅为(1),这会有缺点。然后我可能会得到一个装满了数量的容器,但几乎没有重量使用,导致容器变得沉重而无法容纳更多。

虽然我更关注这个问题,而不是我使用的 C# .Net 4.0 语言,所以如果您有想法,请随意使用 LINQ 等框架。

如果我发布了一个我错过的众所周知的解决方案的问题,请随时指出我的问题。但我对您能提出的任何解决方案感兴趣。我期待着阅读答复。


你选择了一个非常艰巨的挑战:

  • 背包问题 http://en.wikipedia.org/wiki/Knapsack_problem

这个问题是NP完全 http://en.wikipedia.org/wiki/NP-complete这意味着该问题的唯一已知正确解决方案需要检查所有可能的组合。

您可以尝试贪心近似算法如果您可以采用启发式/近似方法,请在第一个链接中进行描述。

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

优化容量利用率的算法 的相关文章

  • Environment.CurrentDirectory 与 System.IO.Directory.GetCurrentDirectory

    我正在编写一个 Net WinForms 并不断在调试和发布配置之间切换 并且有一些文件我需要任一配置才能访问 我想做的是将文件放在 BIN 文件夹中的公共目录中 这样它看起来像这样 MyProject Bin CommonFiles My
  • 转换 const void*

    我有一个函数返回一个const void 我想用它的信息作为char 我可以将它投射为 C 风格的罚款 char variable但是当我尝试使用reinterpret cast like reinterpret cast
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • 当事件button.click发生时,如何获取按钮名称/标签?

    我以编程方式制作按钮并将它们添加到堆栈面板中 以便每次用户导航到页面时按钮都会发生变化 我正在尝试做这样的事情 当我单击创建的按钮时 它将获取按钮的标签并转到正确的页面 但是 我无法使用 RoutedEventHandler 访问按钮元素
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • extern 声明和函数定义都在同一文件中

    我只是浏览了一下gcc源文件 在gcc c 我发现了类似的东西 extern int main int char int main int argc char argv 现在我的疑问是extern是告诉编译器特定的函数不在这个文件中 但可以
  • 如何使用 ASP.NET Core 获取其他用户的声明

    我仍在学习 ASP NET Core 的身份 我正在进行基于声明的令牌授权 大多数示例都是关于 当前 登录用户的 就我而言 我的 RPC 服务正在接收身份数据库中某个用户的用户名和密码 我需要 验证是否存在具有此类凭据的用户 获取该用户的所
  • 不可变类与结构

    以下是类与 C 中的结构的唯一区别 如果我错了 请纠正我 类变量是引用 而结构变量是值 因此在赋值和参数传递中复制结构的整个值 类变量是存储在堆栈上的指针 指向堆上的内存 而结构变量作为值存储在堆上 假设我有一个不可变的结构 该结构的字段一
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • 模板类的模板构造函数的 C++ 显式模板特化

    我有一个像这样的课程 template
  • C++ 对象用 new 创建,用 free() 销毁;这有多糟糕?

    我正在修改一个相对较大的 C 程序 不幸的是 并不总是清楚我之前的人使用的是 C 还是 C 语法 这是在一所大学的电气工程系 我们 EE 总是想用 C 来做所有事情 不幸的是 在这种情况下 人们实际上可以逃脱惩罚 但是 如果有人创建一个对象
  • 模板类中的无效数据类型生成编译时错误?

    我正在使用 C 创建一个字符串类 我希望该类仅接受数据类型 char 和 wchar t 并且我希望编译器在编译时使用 error 捕获任何无效数据类型 我不喜欢使用assert 我怎样才能做到这一点 您可以使用静态断言 促进提供一个 ht
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • C++:为什么 numeric_limits 对它不知道的类型起作用?

    我创建了自己的类型 没有任何比较器 也没有专门化std numeric limits 尽管如此 由于某种原因 std numeric limits
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • 在 Win32 控制台应用程序中设置光标位置

    如何在 Win32 控制台应用程序中设置光标位置 最好 我想避免制作句柄并使用 Windows 控制台功能 我花了整个早上沿着那条黑暗的小巷跑 它产生的问题比它解决的问题还要多 我似乎记得当我在大学时使用 stdio 做这件事相对简单 但我
  • 如何在 sql azure 上运行 aspnet_regsql? [复制]

    这个问题在这里已经有答案了 可能的重复 将 ASP NET 成员资格数据库迁移到 SQL Azure https stackoverflow com questions 10140774 migrating asp net membersh
  • 是否允许全局静态标识符以单个 _ 开头?

    换句话说 可能static 文件范围 全局变量恰好以一个下划线开头 而不会产生与 C 实现发生名称冲突的可能性 https www gnu org software libc manual html node Reserved Names
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的

随机推荐

  • 如何进行选择性 Mongo 恢复?

    假设我有一个Mongo具有两个数据库的副本集 一个主数据库和几个辅助数据库 db1 and db2 中学一所Mongo崩溃并丢失数据 现在当这个Mongo重新启动就会recover并复制both db1 and db2从初级开始 由于这样的
  • 如何在 matlab 中检索函数参数的名称?

    除了解析函数文件之外 还有没有办法获取matlab中函数的输入和输出参数的名称 例如 给定以下函数文件 divide m function value remain divide left right value floor left ri
  • Apple 在应用程序配置中“无法添加卡”

    我正在实施苹果应用程序内配置 并且遵循苹果指南中的所有步骤 但最后 我收到一条消息 无法添加卡 但没有任何错误抛出此过程 这就是我的创作方式PKAddPaymentPassViewController let cardInfoPass PK
  • 重新发送请求角度2

    在 Angular 2 应用程序中 每个对 API 的请求都有带有令牌的标头 以防令牌过期 API 会使用 401 http 代码进行响应 我有一种更新令牌的方法 但是在获取新令牌的过程中如何重新发送先前的请求以暂停其他请求 您可以延长Ht
  • googlemock - 模拟返回复杂数据类型的方法

    我想模拟一个返回复杂数据类型的方法 class aClass public virtual const QMap
  • 使用 jQuery 查找子项的索引?

    如果我有一个像这样的 html 结构 div div class child first div class sub child div div div class child second div class sub child div
  • 如何在SQL Server中查找包含TAB字符的字段

    在 SQL Server 中 识别表中某一列包含以下内容的所有行的最佳方法是什么 TAB特点 CHAR 9 是不是这么简单 SELECT FROM MyTable WHERE Field1 LIKE CHAR 9 RTRIMCHAR 列 像
  • ServiceConnection.onServiceConnected() 和 startService()

    我有一个非常简单的活动 public class MainActivity extends Activity private Intent serviceIntent public MainService mainService publi
  • 我可以在 Ruby on Rails 上编写 PostgreSQL 函数吗?

    我们正在启动一个基于 Ruby on Rails 的项目 我们曾经使用 Perl 和 PostgreSQL 函数 以及 Rails 和 Active Record 我还没有看到我们应该如何在 PostgreSQL 中创建函数并使用 Acti
  • PHP HTML 显示按钮属性

    我希望能够从按钮中获取尽可能多的属性来显示 按钮
  • 如何从存储在列表中的对象中获取特定字段值的列表?

    假设我有一个包含两个字段的对象列表field1 and field2 都是String类型 我如何获得所有的列表field1如果可能的话 无需迭代列表即可值 幸运的是 您可以使用以下方法来做到这一点Java 8 流 https www tu
  • 如何使用Goutte获取元描述内容

    您能帮我找到一种使用 Goutte 从元描述 元关键字和机器人内容中获取内容的方法吗 另外 我该如何定位 and
  • 如何在 prisma 管理的 postgresql 数据库上创建触发器?

    晚上好 我正在使用nodejs prisma postgresql 开发一个聊天应用程序 我希望在特定聊天中创建最后一条消息后 24 小时内立即从 postgresql 数据库中删除 为此 我创建了一个触发器 function creati
  • 累积的使用

    我正在解决一个问题 我使用cumulatives 2 3 谓词 但是当我尝试将其与minimize in labeling 我有以下演示 10 个任务 全部持续时间为 1 4 台机器 全部容量 1 我的目标是尽量减少总时间 即minimiz
  • 三重继承会导致元类冲突......有时

    看起来我偶然发现了一个元类地狱 即使我不想与之有任何关系 我正在使用 PySide 在 Qt4 中编写一个应用程序 我想将事件驱动部分与 UI 定义分开 UI 定义是从 Qt Designer 文件生成的 因此 我创建了一个 控制器 类 但
  • 新的 MySQL 驱动程序导致 java.sql.SQLNonTransientConnectionException:需要 CLIENT_PLUGIN_AUTH

    如果更改 MySQL JDBC 驱动程序5 1 38 to 6 0 2我得到以下异常 java sql SQLNonTransientConnectionException CLIENT PLUGIN AUTH is required 该异
  • 函数模板实例化和友元声明

    我刚刚开始学习 C 模板 出于练习目的 编写了这个简单的代码 include
  • heroku -- npm 安装后脚本根据环境运行 grunt 任务

    我有两个 Heroku Node js 应用程序 一个用于产品 一个用于开发 我还有一个包含开发和产品特定任务的 Gruntfile 我知道您可以设置 package json 来运行 grunt 作为 npm 的安装后挂钩 但是您可以根据
  • 通俗地描述.NET程序集循环依赖问题

    请通俗地描述一下 NET程序集编译循环依赖问题 以及其他技术是否有类似的限制 注意 我知道 这似乎是一个简单的问题 但我见过许多真实的 重要的项目 它们完全破坏了依赖关系图 与任何其他循环依赖相同 考虑三个组件 A B 和 C A 需要 B
  • 优化容量利用率的算法

    我为自己设定了一个 简单 的 C 编程挑战 以优化容量 我第一次尝试时表现不佳 如下文所述 因此我想看看是否有一个标准化算法可以做到这一点 而不使用人工智能 启发式技术 因为我根本不知道它们 我相信有一种已知的方法可以做到这一点 因为该问题