1234

ExcelHome技术论坛

用户名  找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

帖子
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: hnyeke

[求助] 均衡分数问题:分水果

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-11-30 16:56 | 显示全部楼层
程序能写出来的前提是,逻辑是能出结果,如果没有结果,那么程序就会变成无限期的尝试。(当然也可以解决,设置一个时间,运行超过这个时间就直接退出,认输)

因素是数量平均+金额平均,那么设定逻辑是先按数量平均分配,本身就是错误的逻辑,因为单价又不是已知的,也许有一个单价决定了这个物品一个就是 一份,数量上就实现不了平均。所以按数量平均,就会导致金额100%无法平均接近。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-30 17:12 | 显示全部楼层
micch 发表于 2024-11-30 16:56
程序能写出来的前提是,逻辑是能出结果,如果没有结果,那么程序就会变成无限期的尝试。(当然也可以解决, ...

数量和金额都不要达到平均,因为每个水果不能切开来分。
数量:如本例中的个数:25/12=2余1   做到11人中每人2个,其中1人得到3个
金额:125/12=10.4    获得3个的 3+4+5=12   4+5=9  金额应在12-9区间
通过表格一目了然,使数据不多分,也不少分。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-30 17:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
micch 发表于 2024-11-30 16:56
程序能写出来的前提是,逻辑是能出结果,如果没有结果,那么程序就会变成无限期的尝试。(当然也可以解决, ...

用香川的凑数应该可以解决

TA的精华主题

TA的得分主题

发表于 2024-11-30 19:48 | 显示全部楼层
hnyeke 发表于 2024-11-30 17:12
数量和金额都不要达到平均,因为每个水果不能切开来分。
数量:如本例中的个数:25/12=2余1   做到11人 ...

所以我说你现在举例的数据是可以写代码的。按你的逻辑,数量平均后再分配。

但是如果实际数据单价差别很大,比如苹果价格是其他几个和,非常大。

那么你先用25/12=2余1,你就进行每人2个的设定,然后去平均金额,逻辑就是错的,因为苹果1个就超过了平均金额,根本就不应该和其他水果进行组合。一个苹果就是一份。12个人中有5个人只能拿一个苹果,剩下的才是其他人平分。

这只是我举的一个特殊例子,不同数量不同单价不同人数,会有很多种特殊情况,所以很难找到一个通用的逻辑实现通用的解。即使有,也是个很庞大的工程,需要对各种情况进行分类处理,先判断是什么类型,然后根据这个类型使用相对应的逻辑进行数据处理。可能会需要很多类型,而且遇到新的情况,还需要另外新增类型,重新写相对应的代码。

到目前为止,我没看到有效的建议或者逻辑思路,或者是像我想象的非常难,没人会,或者是太复杂,没人愿意免费写代码,或者纯粹就是无解。

TA的精华主题

TA的得分主题

发表于 2024-11-30 21:28 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-1 19:02 | 显示全部楼层

是用vba 代码做的吗,请上传附件供大家共享。

TA的精华主题

TA的得分主题

发表于 2024-12-2 07:30 | 显示全部楼层
规划求解,思路如下,请各位坛中高手老师们多多指教,谢谢 ——
12人分25个水果,要求数量均衡,那拿1个人分得3个,拿11人来每人分得2个,是不是数量上就最均衡了?又要求每人分得的金额均衡,那分得3个水果的人就分3种单价最少的水果,橘子1+梨子1+苹果1=12元(注意:如果一个品种分2个的话,要保证后面每人分得不同的水果就无法完成哦); 不管如何均衡分配,结果总会有多有少——可否把分配金额从大到小排序,来求其差额(之和)最小,来实现金额最均衡?  谢谢帮助指正
image.png

均衡分配问题.zip

22.62 KB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2024-12-2 08:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
为什么都要先均分数量,然后凑金额呢?

如果一个物品单价超高,就只能自身独自一份,不能数量均分,否则金额差异就太大了。如果总数除以人数的余数不是1,而是比较大,那么就会有多个人最多一半人需要比其他人多,所以一个大问题就变成3个小问题,需要分别处理。

理论上讲,人数和单价影响很大,如果出现无法均衡的情况,那么就会陷入无限循环而找不到结果。如果限定时间或者次数,随机分配,从中选最优的结果?但是理论组合可能有几千亿,几万亿种,甚至更多。随机一亿次得出的最优,也只是各种可能里极小一部分可能,距离理论上的最优天差万别。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-2 09:02 | 显示全部楼层
micch 发表于 2024-12-2 08:50
为什么都要先均分数量,然后凑金额呢?

如果一个物品单价超高,就只能自身独自一份,不能数量均分,否则 ...

当前讨论的是如何在数量(本例中的个数)均衡的基础上,怎样使金额差距最小。在不切开水果的基础上,数量和金额两者都是不能平均的。本例只就这个问题探讨解决方案。

TA的精华主题

TA的得分主题

发表于 2024-12-2 09:09 | 显示全部楼层
本帖最后由 micch 于 2024-12-2 09:11 编辑

嗯,我也期待有个比较好的思路或者逻辑,但是目前愿意思考这个问题的人,都在先均分数量,然后分配物品使得金额尽量平均的逻辑上处理,但是本身这个逻辑bug太多。

期待有人提出别的思路吧。

如果是数量限定就是平均,根据已知数量和单价实现,金额的均分,这就不需要琢磨了,论坛凑数的帖子有一些都是实现这种的
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

1234

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-4-23 20:22 , Processed in 0.024474 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表