以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 求解问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=196215) |
-- 作者:aidimeng -- 发布时间:2025/4/9 14:30:00 -- 求解问题 Dim bza As Double = 9.97 Dim bzb As Double = 34.34 Dim bzc As Double = 17.8 Dim r1 As DataRow = DataTables("表A").Find("物料=\'A\'") Dim r2 As DataRow = DataTables("表A").Find("物料 = \'B\'") Dim r3 As DataRow = DataTables("表A").Find("物料 =\'c\'") Dim x As Double Dim y As Double Dim c As Double Dim maxa As Double = 100 Dim maxb As Double = 100 Dim maxc As Double = 100 For x = 0 To maxa For y = 0 To maxb For c = 0 To maxc If (r1("蛋白") * x + r2("蛋白") * y + r3("蛋白") * c) <= bza * 100 + 1 _ AndAlso(r1("蛋白") * x + r2("蛋白") * y + r3("蛋白") * c) >= bza * 100 - 1 _ AndAlso (r1("含油") * x + r2("含油") * y + r3("含油") * c) <= bzb * 100 + 1 _ AndAlso (r1("含油") * x + r2("含油") * y + r3("含油") * c) >= bzb * 100 - 1 _ AndAlso (r1("水分") * x + r2("水分") * y + r3("水分") * c) <= bzc * 100 + 1 _ AndAlso (r1("水分") * x + r2("水分") * y + r3("水分") * c) >= bzc * 100 - 1 _ AndAlso x + y + c = 100 Then Dim dr As DataRow = DataTables("表B").AddNew dr("第一列") = x / 100 dr("第二列") = y / 100 dr("第三列") = c / 100 End If Next Next Next 感觉没问题,但实际有一组解 就是计算不到,不知道错在哪里了 |
-- 作者:有点蓝 -- 发布时间:2025/4/9 14:38:00 -- 计算规则是什么? |
-- 作者:aidimeng -- 发布时间:2025/4/9 14:48:00 -- |
-- 作者:有点蓝 -- 发布时间:2025/4/9 15:04:00 -- 没看懂,就1楼表格数据解释一下 |
-- 作者:aidimeng -- 发布时间:2025/4/9 15:20:00 -- 三种物料A,B,C混合,混合前三种物料的水分,含油,蛋白是已知的,计划混合后的 含油,水分,蛋白 也是已知的。也就是理论值。 求为实现混合后 的 指标,A,B,C三种物料的配比是多少 使用部门给出的公式 是 配比*现有指标的和=混合后的指标 比如A,B,C的配比分别是X,Y,C 计算公式就是 X*A("含油")+Y*B("含油")+C*c("含油")= 混合后的含油 。。。。 配比理论上 x+y+c=1,考虑到无解,我在把结果 上下浮动了0.01
|
-- 作者:有点蓝 -- 发布时间:2025/4/9 15:36:00 -- 还是没看懂。如果有解,答案是什么? |
-- 作者:aidimeng -- 发布时间:2025/4/9 15:43:00 -- 三种物料A,B,C混合成一种物料,混合前三种物料的水分,含油,蛋白是已知的,要求混合后的 含油,水分,蛋白 达到理论值。 求为实现混合后 的 指标,A,B,C三种物料的配比是多少 计算公式:配比*现有指标的和=混合后的指标 比如A,B,C的配比分别是X,Y,C 计算公式就是 X*A("含油")+Y*B("含油")+C*c("含油")= 混合后的含油 。。。。 配比理论上 x+y+c=1,考虑到无解,我在把结果 上下浮动了0.01 |
-- 作者:有点蓝 -- 发布时间:2025/4/9 16:10:00 -- 中间怎么计算的不懂。不过由解反推判断条件,就已经不符合了呀。连if的第一个条件都不符合 If (r1("蛋白") * x + r2("蛋白") * y + r3("蛋白") * c) <= bza * 100 + 1 代入数值,变成下面算式 if 34.6*95+43*3+9.1*2 <= 9.97 *100+1 计算后结果为 if 3434.2 <= 998 说明这个解不符合条件呀
|
-- 作者:aidimeng -- 发布时间:2025/4/10 9:39:00 -- 辛苦了,是我弄错了 现在可以了 |