ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2057|回复: 6

[求助] 为什么规划求解出来的值,好像不是最佳。。。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-3-16 16:31 | 显示全部楼层 |阅读模式
为什么手工调整出来的利润值,比规划求解出来的值还大?求指教

产品最优组合决策.zip

10.03 KB, 下载次数: 16

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-16 16:52 | 显示全部楼层
规划求解值是8280,可手工调整后8320比它更优。。。问题在哪?

TA的精华主题

TA的得分主题

发表于 2019-3-16 17:59 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-16 20:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-3-16 22:04 | 显示全部楼层
boxes 发表于 2019-3-16 20:09
看过,没看出问题在哪。。。汗呀

貌似是两个参数按其求解变化过程,第一次达到了极值即是 41 + 100,后面的就不再计算了。

TA的精华主题

TA的得分主题

发表于 2020-2-26 16:06 | 显示全部楼层
不知道是不是因为极值的问题.
我用VBA列出所有的可能值,规划求解好像是有点问题。
image.png
  1. 'http://club.excelhome.net/forum.php?mod=viewthread&tid=1466255
  2. '甲->a,乙->b
  3. '部门一->A,部门二->B
  4. Sub Combine_Max()
  5. Dim a As Integer, b As Integer
  6. Dim aMG As Integer, bMG As Integer
  7. Dim A_a As Integer, A_b As Integer, B_a As Integer, B_b As Integer
  8. Dim FxCost As Integer
  9. Dim GP As Integer
  10. Dim A_Vol As Integer
  11. Dim B_Vol As Integer
  12. Dim A_Limit As Integer
  13. Dim B_Limit As Integer
  14. Dim m As Integer
  15. Dim status As String
  16. Dim Arr(1 To 3)

  17. m = 1
  18. a = 1
  19. b = 1
  20. FxCost = 2000
  21. MaxGP = 0
  22. aMG = 80
  23. bMG = 70
  24. A_a = 4: A_b = 3
  25. B_a = 6: B_b = 5
  26. A_Limit = 500
  27. B_Limit = 750
  28. With Sheets("List")
  29.     For a = 1 To 80                             '循环甲
  30.         For b = 1 To 100                        '循环乙
  31.             m = m + 1                           '行号
  32.             GP = a * aMG + b * bMG - FxCost     '利润
  33.             A_Vol = a * A_a + b * A_b           'A车间产量
  34.             B_Vol = a * B_a + b * B_b           'A车间产量
  35.             '检查量是否超过产能
  36.             If A_Vol <= A_Limit And B_Vol <= B_Limit Then
  37.                 status = "OK"
  38.                 If GP > MaxGP Then      '最大利润值相关数据
  39.                     MaxGP = GP
  40.                     Arr(1) = a
  41.                     Arr(2) = b
  42.                     Arr(3) = GP
  43.                 End If
  44.             Else
  45.                 status = "NOK"
  46.             End If
  47.             '数据输出至EXCEL
  48.             .Cells(m, 1) = a
  49.             .Cells(m, 2) = b
  50.             .Cells(m, 3) = FxCost
  51.             .Cells(m, 4) = GP
  52.             .Cells(m, 5) = A_Vol
  53.             .Cells(m, 6) = B_Vol
  54.             .Cells(m, 7) = status
  55.         Next b
  56.     Next a
  57. End With
  58. For i = 1 To 3
  59.     Debug.Print Arr(i)
  60. Next i
  61. End Sub
复制代码

产品最优组合决策.zip

116.89 KB, 下载次数: 0

TA的精华主题

TA的得分主题

发表于 2020-2-27 09:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
问题出在整数约束的设置那里。把以下对应位置设置为0就可以了(默认是1%)。
因为如果是整数约束, 速度求解有点慢的, 所以规划求解默认选项1%的求解误差精度,这样误差精度小于1%即停止求解。
image.png

这个1%怎么算的呢。 你先取消整数约束,这样得到的结果是8333.33;
然后规划求解求啊求,发现有一组41,100(其实规划求解都是从顶点位置开始求的,单纯形法)的结果是8280,跟8333.33的误差在0.64%((8333.33-8280)/8333.33=0.64%), 然后一拍板,就是它了,太累了, 老子不折腾了!所以这时候就停止求解,弹出41,100是最优解。

建议把1%设置成0%。

另外, 你可以把这个1%设置成0.5%,0.3%, 0.2%试试,这些都可能求出不同的解。 0%是全局最优解。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-23 15:15 , Processed in 0.043201 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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