Foxtable(狐表)用户栏目专家坐堂 → 饲料配方问题


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

主题:饲料配方问题

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


加好友 发短信
等级:四尾狐 帖子:781 积分:9870 威望:0 精华:0 注册:2008/9/1 13:47:00
饲料配方问题  发帖心情 Post By:2013/12/12 11:41:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/12/12 11:44:00 [只看该作者]

在DataColChanged事件
利用Datatable.FIND 找出表指定的行计算即可.http://www.foxtable.com/help/topics/0396.htm

我是没太看懂你是要怎么个计算法.



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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/12/12 11:46:00 [只看该作者]

点击按钮计算,也可以循环所有行 利用相同的方法. FIND出另外一个表的数据,然后参与计算.

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


加好友 发短信
等级:四尾狐 帖子:781 积分:9870 威望:0 精华:0 注册:2008/9/1 13:47:00
  发帖心情 Post By:2013/12/12 14:12:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/12/12 21:03:00 [只看该作者]

 看了一下,需要用到组合排列的知识,好像有一个例子,建议楼主看一下。


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


加好友 发短信
等级:四尾狐 帖子:781 积分:9870 威望:0 精华:0 注册:2008/9/1 13:47:00
  发帖心情 Post By:2013/12/13 11:37:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/12/13 20:49:00 [只看该作者]

 我说一下笨笨的思路吧。例子里有一个自定义函数,可以获取从m个数中取出n个数的所有排列。

 1、比如 你的表有7行,也就是有7种物品,最后要得到100公斤,也就是100000克的混合饲料。
 2、那么第一步,你就有700000个数了(1-100000,每个数7个),然后从这70万个数中取出7个;
 3、得到7个数以后,判断相加是否等于100000;
 4、如果等于,把这7个数分别乘以对应值,然后看得出的值,是否符合高于营养要求;
 5、保存符合要求的数,或者比较出一个最大或者最小的值便可

[此贴子已经被作者于2013-12-13 20:50:50编辑过]

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


加好友 发短信
等级:四尾狐 帖子:781 积分:9870 威望:0 精华:0 注册:2008/9/1 13:47:00
  发帖心情 Post By:2013/12/14 19:31:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/12/14 20:10:00 [只看该作者]

 就是按照7楼的方法去做。

 第一步,得到所有的组合;

 第二步,遍历组合,取出值合计是否等于最后需要的100公斤;

 第三步,计算一个组合各个营养成分的值,比较最后的标准。

 因为代码较为繁琐,楼主自己编码吧。关键是得到所有的组合。
[此贴子已经被作者于2013-12-14 20:10:17编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/12/14 22:09:00 [只看该作者]

  
 这个算法效率不高,数越多,越慢,建议楼主先去学习一下具体的算法。我这个是穷举,很笨。

 做了个例子,你把代码放到命令窗口里去运行就行了。精确到公斤,4个物料。

Dim exactValue = 100
Dim drs As List(Of DataRow) = DataTables("原料营养").Select("")
Dim a(exactValue) As Integer
For i As Integer = 0 To exactValue
    a(i) = i
Next
Dim b(exactValue) As Integer

Functions.Execute("组合排列", a, exactValue, drs.count, b, drs.count, exactValue, drs)
msgbox("比较完成,结果写在命令窗口里")

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


 回到顶部