- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试提出一个高效的 sql 来解决公平分配问题。
我的数据模型由一个可以有 1+ 个“案例”的“客户”组成。每个客户都需要一名“案件处理员”,负责照顾该客户。
我正在尝试将“客户”分配给所有“案件处理人员”,以使所有“案件处理人员”彼此之间的“案件”数量尽可能接近。
我有一个查询,它为我提供了“客户 ID”和“案例计数”
我有一个案例处理程序表,目前我总共有 4 个案例处理程序(可以添加或删除案例处理程序,然后必须重新运行此分发)。
我知道我需要对案例处理程序表和上面的查询进行连接,这样我就可以为每个客户执行更新,为他们分配一个案例处理程序。但我不知道如何做到这一点,以平衡最公平的庄园。
我有一个几乎可行的方法是,我根据案例处理程序的计数使用查询行号的模数加入,因此查询中按案例计数顺序排序的每一行都可以用于分配客户轮询到案件处理程序。但这并没有提供公平的分配。
(实际上,我的实时系统中的客户表超过 100,000,其中大多数只有一个案例,更少有 2 个,甚至更少有 3 个等等,最多有一个客户有 51 个案例)
感谢任何人可以给我的任何帮助/建议。
最佳答案
有正式的优化框架可以解决这类问题,但我认为您可以通过更简单的方法解决问题。根据您的描述,听起来每个客户只能有一个案件处理员,所以有些不幸的人需要处理您最大客户的所有 51 个案件。
尝试这样的事情(伪代码):
total_cases = SUM(Case_Count)
total_handlers = COUNT(Case_Handlers)
foreach SELECT Customer_Id, Case_Count ORDER BY Case_Count DESCENDING:
# Calculate the target number of cases to assign to the next handler
target_cases_per_handler = total_cases / total_handlers
# If a customer has more than the target number of cases, then
# it must be assigned to a case handler
if Case_Count > target_cases_per_handler:
assign_to_handler(Customer_Id)
total_handlers = total_handlers - 1
total_cases = total_cases - Case_Count
# Otherwise, try to pair up the cases with a small number of cases
# that is close to average (this part is inefficient)
else:
assign_to_handler(Customer_Id)
residual = CEIL(target_cases_per_handler - Case_Count)
while (residual > 0)
best_customer_id, best_case_count = SELECT TOP 1 Customer_Id, Case_Count ORDER BY ABS(Case_Count - residual) ASCENDING
assign_to_handler(best_customer)
residual = residual - best_case_count
total_cases = total_cases - best_case_count
total_handlers = total_handlers - 1
这应该可以让您粗略地将客户分配给案例处理程序,同时仍然确保每个客户都有一个处理程序。
关于sql - 公平分配分配算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16650278/
我有一个应用程序倾向于在后台线程中执行很多数据库 Activity (下载大型数据库更新),而且这个过程经常使“UI线程”匮乏-我知道数据库是不定期发布的,但是所使用的@synchronized机制不
我正在创建一个程序,用户可以在从一组项目中选择的两个项目之间进行一系列投票。每次投票后,会显示集合中的两个新项目并对其进行投票,直到看到集合中的所有成员。 这是我的限制条件: 每个用户应该以不同的随机
我正在开发一个在线判断类型的系统,其中大约 100 个不受信任的可执行文件将同时运行并评估相同的输入数据。 我希望每个可执行文件都限制在预定义资源池的 CPU、内存、磁盘空间等的相等份额。例如,如果资
我正在从事一个关于 CFS 的项目。使用Ftrace跟踪Linux公平进程的全路径。 根据文档 https://lwn.net/Articles/370423/ . [tracing]# echo $
Semaphore 类概述 developer.android.com看起来不错 - 对于那些已经熟悉这些概念和术语的人来说。 我熟悉那里的一些首字母缩略词和其他行话(例如 FIFO、锁等),但其他的
我是一名优秀的程序员,十分优秀!