Foxtable(狐表)用户栏目专家坐堂 → 【求助】 自动分配算法


  共有4200人关注过本帖树形打印复制链接

主题:【求助】 自动分配算法

帅哥哟,离线,有人找我吗?
chen_sheng
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:700 积分:6230 威望:0 精华:0 注册:2018/5/10 9:05:00
【求助】 自动分配算法  发帖心情 Post By:2020/7/16 9:46:00 [显示全部帖子]

1.在分配人数栏输入想平均分配的人数
2.选择拆单(同单号可以打乱分配)或者整单(同单号不可以打乱分配)分配
3.点击自动分配在派工明细的选择员工列生成员工编号(可以是算法的流水号)
4.生成规则,尽量保证拆单或者整单分配下的均分(差异尽量少) 分配金额= 差数*单价
5.分配完成在表C生成汇总数据。
6.表c修改员工编号+姓名后自动刷新到派工明细表列(这里代码会处理,自动分配算法不懂,请求指导!)

图片点击可在新窗口打开查看此主题相关图片如下:自动分配.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自动派工.table


[此贴子已经被作者于2020/7/16 9:46:19编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chen_sheng
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:700 积分:6230 威望:0 精华:0 注册:2018/5/10 9:05:00
  发帖心情 Post By:2020/7/16 10:27:00 [显示全部帖子]

感谢蓝版

假如整单分配 存在的单号就会很多(譬如:M20-07-076,M20-07-077,M20-07-078....类似这样

假如拆单分配 就可以把M20-07-076这个单号的所有明细 + M20-07-077这个单号的所有明细 + M20-07-078这个单号的所有明细 ...打乱一起分



[此贴子已经被作者于2020/7/16 10:37:23编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chen_sheng
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:700 积分:6230 威望:0 精华:0 注册:2018/5/10 9:05:00
  发帖心情 Post By:2020/7/16 10:46:00 [显示全部帖子]




单个订单整单分配示例

图片点击可在新窗口打开查看此主题相关图片如下:整单分配.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:一单整单拆分.xls


单个订单拆单分配示例

图片点击可在新窗口打开查看此主题相关图片如下:拆单分配.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:一单拆单拆分.xls


多个订单整单分配示例

图片点击可在新窗口打开查看此主题相关图片如下:多个订单整单分配.png
图片点击可在新窗口打开查看




 回到顶部
帅哥哟,离线,有人找我吗?
chen_sheng
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:700 积分:6230 威望:0 精华:0 注册:2018/5/10 9:05:00
  发帖心情 Post By:2020/7/16 10:47:00 [显示全部帖子]

多单拆单拆分明细

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多单拆单拆分.xls

多单整单拆分明细
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多单整单拆分.xls



 回到顶部
帅哥哟,离线,有人找我吗?
chen_sheng
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:700 积分:6230 威望:0 精华:0 注册:2018/5/10 9:05:00
  发帖心情 Post By:2020/7/16 11:17:00 [显示全部帖子]

拆单自动计算过程思路
1.【派工明细】 【选择员工】列为空的明细  按照金额(差数*单价)列 进行降序排列
2. 在降序排列的 【选择员工】列进行【分配人数变量】赋值(1,2,3;0,1,2)

下面循环
3.【表C】计算汇总明细并按照【工资汇总】升序排列
4.派工明细】 【选择员工】列为空的明细  按照金额(差数*单价)列 进行降序排列
5. 在降序排列的派工明细】 【选择员工】列为空的明细的 【选择员工】列进行【表C.员工编号】赋值

整单自动计算过程思路
1.【派工明细】 【选择员工】列为空且单号相同的明细  按照同单号汇总金额(差数*单价)列 进行降序排列
2. 同单号汇总金额(差数*单价)列 在降序排列的 【选择员工】列 按照单号进行【分配人数变量】赋值(1,2,3;0,1,2)

下面循环
3.【表C】计算汇总明细并按照【工资汇总】升序排列
4.派工明细】 【选择员工】列为空且单号相同的明细  按照同单号汇总金额(差数*单价)列 进行降序排列
5. 在降序排列的派工明细】 【选择员工】列为空的明细的 【选择员工】列进行【表C.员工编号】赋值



个人想的思路如此 不是特别完善  请求指点  这个实现过程和 电子据提升板材利用率的算法好像雷同
[此贴子已经被作者于2020/7/16 11:45:16编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chen_sheng
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:700 积分:6230 威望:0 精华:0 注册:2018/5/10 9:05:00
  发帖心情 Post By:2020/7/16 14:14:00 [显示全部帖子]

顶一下  别沉下去


 回到顶部
帅哥哟,离线,有人找我吗?
chen_sheng
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:700 积分:6230 威望:0 精华:0 注册:2018/5/10 9:05:00
  发帖心情 Post By:2020/7/16 20:16:00 [显示全部帖子]

感谢蓝版  不过有点问题  算法应该不是最优 烦请再帮忙指导一下谢谢

整单分配差异

图片点击可在新窗口打开查看此主题相关图片如下:整单分配差异.png
图片点击可在新窗口打开查看

拆单分配差异


图片点击可在新窗口打开查看此主题相关图片如下:拆单分配差异.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2020/7/16 20:39:23编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chen_sheng
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:700 积分:6230 威望:0 精华:0 注册:2018/5/10 9:05:00
  发帖心情 Post By:2020/7/16 20:42:00 [显示全部帖子]

整单计算差异明细
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:整单计算差异.xls

拆单计算差异明细
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:拆单计算差异.xls

项目文件
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自动派工.table




[此贴子已经被作者于2020/7/16 20:43:53编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chen_sheng
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:700 积分:6230 威望:0 精华:0 注册:2018/5/10 9:05:00
  发帖心情 Post By:2020/7/17 0:21:00 [显示全部帖子]

感谢官方这么晚还能及时回复,感谢!

其实这是一个算法的应用,很多地方都会用到,以点带面,希望官方可以协助再优化一下,感谢!

 回到顶部
帅哥哟,离线,有人找我吗?
chen_sheng
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:700 积分:6230 威望:0 精华:0 注册:2018/5/10 9:05:00
  发帖心情 Post By:2020/7/17 9:06:00 [显示全部帖子]

感谢官方指导!  在遍历行加个排序就完美了
Dim Ncfrs As WinForm.NumericComboBox = e.Form.Controls("Ncfrs")
Dim ic As Integer = Ncfrs.Value
'MessageBox.Show(Ic)
If ic=0 Then
    MessageBox.Show("请输入拆分人数后再进行拆分!")
    
Else
    Dim 整单 As Boolean = e.Form.Controls("RadioButton1").checked

    Dim r As Row
    DataTables("表C").DeleteFor("")
    For i As Integer = 1 To ic
        r = Tables("表C").AddNew
        r("员工编号") = i
        r("工资汇总") = 0
        r.Save
    Next
    
    Dim cr As DataRow
    If 整单 Then
        Dim g As New GroupTableBuilder("统计表1", DataTables("派工明细"))
        g.Groups.AddDef("单号")
        g.Totals.AddDef("金额")
        Dim dt As DataTable = g.Build(True)
        For Each dr As DataRow In dt.S elect("","金额 Desc")  '已分配工资最低+未分配工资最高 降低分配差异
            cr = DataTables("表C").Find("","工资汇总")
            cr("工资汇总") += dr("金额")
            DataTables("派工明细").ReplaceFor("选择员工",cr("员工编号"),"单号='" & dr("单号") & "'")
        Next
    Else
        For Each dr As DataRow In DataTables("派工明细").S elect("","金额 Desc") '已分配工资最低+未分配工资最高 降低分配差异
            cr = DataTables("表C").Find("","工资汇总")
            cr("工资汇总") += dr("金额")
            dr("选择员工") = cr("员工编号")
        Next
    End If
    
End If
[此贴子已经被作者于2020/7/17 9:09:54编辑过]

 回到顶部
总数 12 1 2 下一页