Excel Solver作为常用的最优解解决工具,在选择解决方法(solving method)的时候有三种选项,这三种选项有什么区别?什么时候该选择哪种方法?在本文做综合解释

目录

1. GRG Non-Linear (非线性GRG)

2. Simplex LP (单纯形线性规划)

3. Evolutionary(演化算法)

4. Solver的搭建三步走

5. 总结

引用


下图为三种求解方法

1. GRG Non-Linear (非线性GRG)

中文翻译是: 非线性GRG, GRG 代表Generalized Reduced Gradient, 这是一种常见的非线性规划求解的方法, 大部分时候, 求解的方法, 是根据输入的数值(变量)的变化, 根据目标函数的变化率, 判断是否得到一个局部最优解. 如果得到了局部最优解, 就停止搜索. Excel默认是非线性GRG 求解法.

2. Simplex LP (单纯形线性规划)

线性规划可以用Simplex单纯形法进行求解.

Tips: 怎么判断一个模型是线性规划模型, 大家可以看这个百度百科. 线性规划(线性规划)_百度百科

如果是线性规划, 用Simplex法比Non Linear GRG 快得多. 跟GRG不同的地方是, Simplex法求得的是全局最优解. 而GRG法只是求局部最优解. 什么是全局最优?什么是局部最优?

看下图, 红色这个G点, 就是局部最优. 从开始出发, GRG找呀找, 找到一个低谷, 就停止搜索了, 返回这个解, 就是局部最优. 其实最低的点, 应该是在蓝色S点(全局最优)那个地方.

Simplex这个求解器, 如果是普通线性规划, 用的是单纯形算法; 如果是整数线性规划, 用的是分支定界法. 另外, 生活工作中大部分的线性规划, 都是整数线性规划, 注意把整数最优率设置为0(默认是1%), 如下图. 如果用默认的, 可能只能得到的非全局最优的整数解. 设置为0的话, 可以得到全局最优整数解, 但很多情况下会导致速度的下降.

3. Evolutionary(演化算法)

演化算法是一种启发式算法, 据大部分教科书所写, 演化算法得到的是全局最优解. 有一些书写的是局部最优解. 这个可能跟实际模型情况有关, 大部分模型, 如果用演化算法, 足够长的时间内, 可以得到全局最优解.

  1. 演化算法也是一种非线性规划求解法, 需要用户对变量的上下限进行限定. 比如有X, Y两个变量, 必须把X, Y的上下限做成约束, 写到模型里面;
  2. 用简单的话来说, 演化算法是用一些随机数(在用户定义的变量范围), 代入到模型, 不断循环迭代, 直到目标函数长时间没有进一步收敛(减少或增加), 则停止迭代的求解. 这是一种探索式和随机式求解的结合, 很多时候可以找到全局最优解.
  3. 大部分时候, 演化算法速度比GRG慢得多!

一般比较均衡的做法,就是用GRG Multistart设定, 简单来说, 就是借鉴了Evolutionary的特性,可以从多个点进行出发, 分治策略, 找各个点区域的最小值, 这样得到的所有局部最优解的最小值, 很大概率就是全局最优解. 当然, 这样也会求解速度也会出现下降.

4. Solver的搭建三步走

Step 1  Fully understand the managerial or optimization problem being faced
充分理解问题情景并定义求最优解的方案
Step 2  Define the decision variables
定义变量
Step 3  Define the objective function
定义目标
Step 4  Identify the constraints
定义限制条件

5. 总结

  1. 会建立线性规划模型, 用Simplex单纯形法;
  2. 求解速度: Simplex > GRG > Evolutionary
  3. GRG得到的可能不是全局最优解, 用Evolutionary得到全局最优解;
  4. 用GRG 结合Multistart可以得到更好的局部最优解.

引用

1. 知乎博客 规划求解Solver: 三种求解方法的应用(原创) - 知乎

Excel规划求解Solver:三种方法的区别相关推荐

  1. 在 C# 中,(int) ,Int32.Parse() 和 Convert.toInt32() 三种方法的区别

    在 C# 中,(int),Int32.Parse() 和 Convert.toInt32() 三种方法有何区别? int 关键字表示一种整型,是32位的,它的 .NET Framework 类型为 S ...

  2. js--《js缓存的三种方法及区别与特点》

    js缓存的三种方法与特点: ①H5本地存储sessionStrong: sessionStrong:临时的会话储存,只要当前的会话窗口未关闭,存储的信息就不会丢失,即使页面刷新或在编辑器中更改代码,存 ...

  3. JQ中val(),html(),text()三种方法的区别

    JQ中val(),html(),tex()三种方法的区别是内容不一样 text(参数); 有参数是改变他的文本,无值是获取他的文本 var(); 有参数是改变他的val属性,无值是获取他的val属性 ...

  4. 在matlab中怎样安装dh包,建立DH模型的三种方法以及区别

    目录 1.建立DH模型的三种方法 2.SDH和MDH的应用范围 3. SDH和MDH的区别 0.SDH是ZX类变换,MDH是XZ类变换 1.SDH和MDH都是强调把坐标系建立在连杆上 2.举个例子说明 ...

  5. Excel电子表格排序的三种方法

    排序是数据处理中的经常性工作,Excel排序有序数计算(类似成绩统计中的名次)和数据重排两类.本文以几个车间的产值和名称为例,介绍Excel 2000/XP的数据排序方法. 一.数值排序 1.RANK ...

  6. excel 多条件查找三种方法:lookup、vlookup、indexmatch 多条件查找案例

    最近在Excel微信学习交流群中收到某位学员的问题咨询,问题是如何返回单据编号和物料长代码对应的含税数额.如下表: 其实这位学员的问题就是excel的多条件查找问题. 下面通过一个实例跟大家分享一下常 ...

  7. Excel数据分列的三种方法

    方法二.查找提取法 1.在B列右侧插入两列空白列,用于保存提出的字符. 2.选中C2单元格,输入公式:=LEFT(B2,FIND("-",B2)-1). 注意:上述公式的含义是:先 ...

  8. 用C语言实现定积分求解的三种方法,梯形公式,辛普森公式,自适应辛普森公式

    1.梯形公式: 梯形公式(trapezoidal rule)是一种求定积分的方法.它假定函数在区间上是一条直线,因此可以通过计算梯形的面积来估计函数的定积分 #include<stdio.h&g ...

  9. 前端下载excel文件功能的三种方法

    1 从后端接收json数据,前端处理生成excel下载 JsonExportExcel的github地址:https://github.com/cuikangjie/JsonExportExcel 这 ...

最新文章

  1. 微信小店 API 手册
  2. leetcode算法题--Remove K Digits
  3. workflow initialization in webclient ui - Remote call case
  4. 十行Python以内代码能有什么高端操作?
  5. Online Judge系统常见返回信息分析
  6. linux之tar使用技巧
  7. listView多布局
  8. Extjs Ext.net中的常用属性
  9. soundpool android,Android SoundPool:再次播放停止的声音
  10. 51job导出的简历是php,前程无忧简历导出
  11. 传智2018python15期_2018年传智播客黑马python+人工智能15期
  12. WPS2003排版位置错误一例(转)
  13. java protected 构造方法_java中子类调用父类构造方法注意事项
  14. java怪兽仙境攻略_《怪兽仙境》v1.20基础攻略
  15. 张国荣一生57部电影海报全集
  16. 非负数的和与个数c语言编程,C语言习题中,编程实现从键盘任意输入20个整数,统计非负数个数,并计算非负数之和...
  17. 电路图符号超强科普,轻松看懂电路图!(推荐收藏)
  18. Mybatis入门(复习)
  19. 【STM32】标准库 USART通信
  20. 请你谈谈如何破坏双亲委派模型?

热门文章

  1. Bottom-Up and Top-Down
  2. 【整理】3dsMax中贴图显示模糊
  3. 声音的频率与主观听感
  4. 使用jasypt 进行数据库配置加密
  5. js时间戳转时间年月日时分秒
  6. Bazel build Remote-caching
  7. 搜狗输入法截屏工具的使用
  8. 布隆过滤器 布谷鸟过滤器 Redis 安装布隆过滤器
  9. 华师计算机学院新上任书记,华师大4位校领导履新 任友群任常务副书记
  10. [学习笔记] BearPi-HM Nano - 开发板介绍