找回密码
 立即注册

QQ登录

只需一步,快速开始

Lynn.Dou 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-8-27 16:43  /   查看:2795  /  回复:0
本帖最后由 Lynn.Dou 于 2021-8-30 13:56 编辑

1、一个小故事
在开始本篇文章之前,先抛出一个小故事,大家可以思考下如何解决。
1948年6月24日,前苏联封锁了从东德到柏林的所有陆路和水路。组织了一次巨大的空运,使用美国和英国的飞机向西柏林超过 200 万人提供食物、衣服和其他物资。
其中美国飞机的货运容量为 30,000 立方英尺,可容纳人数为16人,每周成本费用为9000美元。
英国飞机的货运容量为 20,000 立方英尺,可容纳人数为8人,每周成本费用为5000美元。
为了打破苏联的封锁,西方盟国必须最大限度地提高货运能力,但受到以下限制:
1、最多只能使用 44 架飞机。
2、每周总费用可能超过 300,000 美元
3、飞机总人员不能超过 512 人。
请问为了最大化的提高货运能力,美国飞机和英国飞机的数量应该如何分配呢?

2、强大的功能:规划求解

仔细理解这个问题,需要考虑多种分配结果去计算最终的货运量,并通过比较找到最优值,如果靠人为去计算的话,是一个很复杂的过程。
在Excel中有个强大的功能:规划求解,可以利用这一功能自动计算最大货运量,可谓是”计算神器“。
我们先根据已知条件列个表,便于计算。
image.png618417358.png
通过规划求解功能,计算结果如下:
image.png505574035.png
具体计算过程这里就不介绍了,大家可以自行搜索学习下如何操作规划求解。(附件提供了图片所示excel文件)

3、jsLPSolver
这个时候可能就有小伙伴想到了,既然规划求解功能这么强大,SpreadJS支持此功能吗?
规划求解虽然使用起来很方便,但内部计算机制很是复杂,SpreadJS目前还不支持此功能,正在努力钻研中。
但是~
在gitHub上有一个开源项目jsLPSolver,可以实现简单的规划求解,
使用方式也很简单,按照一定的结构写好model,再使用Solve方法进行计算,就可以获取到指定条件下的最优计算结果了。
官方示例代码:
  1. var solver = require("./src/solver"),
  2.   results,
  3.   model = {
  4.     "optimize": "capacity",
  5.     "opType": "max",
  6.     "constraints": {
  7.         "plane": {"max": 44},
  8.         "person": {"max": 512},
  9.         "cost": {"max": 300000}
  10.     },
  11.     "variables": {
  12.         "brit": {
  13.             "capacity": 20000,
  14.             "plane": 1,
  15.             "person": 8,
  16.             "cost": 5000
  17.         },
  18.         "yank": {
  19.             "capacity": 30000,
  20.             "plane": 1,
  21.             "person": 16,
  22.             "cost": 9000
  23.         }
  24.     },
  25. };

  26. results = solver.Solve(model);
  27. console.log(results);
复制代码
输出结果:
  1. {feasible: true, brit: 24, yank: 20, result: 1080000}
复制代码
可以看到与Excel的计算结果是一致的。
具体大家点击下方地址进行学习:
https://github.com/JWally/jsLPSolver#readme

那么是否可以利用组件版设计器强大灵活的自定制能力,实现一个简单的规划求解功能呢?
我们来测试下......

感兴趣的小伙伴可以点击下方链接学习:
SpreadJS结合jsLPSolver实现规划求解 - part2






规划求解.xlsx

12.72 KB, 下载次数: 99

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部