Excel规划求解Solver:三种方法的区别
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(演化算法)
演化算法是一种启发式算法, 据大部分教科书所写, 演化算法得到的是全局最优解. 有一些书写的是局部最优解. 这个可能跟实际模型情况有关, 大部分模型, 如果用演化算法, 足够长的时间内, 可以得到全局最优解.
- 演化算法也是一种非线性规划求解法, 需要用户对变量的上下限进行限定. 比如有X, Y两个变量, 必须把X, Y的上下限做成约束, 写到模型里面;
- 用简单的话来说, 演化算法是用一些随机数(在用户定义的变量范围), 代入到模型, 不断循环迭代, 直到目标函数长时间没有进一步收敛(减少或增加), 则停止迭代的求解. 这是一种探索式和随机式求解的结合, 很多时候可以找到全局最优解.
- 大部分时候, 演化算法速度比GRG慢得多!
一般比较均衡的做法,就是用GRG Multistart设定, 简单来说, 就是借鉴了Evolutionary的特性,可以从多个点进行出发, 分治策略, 找各个点区域的最小值, 这样得到的所有局部最优解的最小值, 很大概率就是全局最优解. 当然, 这样也会求解速度也会出现下降.
4. Solver的搭建三步走
5. 总结
- 会建立线性规划模型, 用Simplex单纯形法;
- 求解速度: Simplex > GRG > Evolutionary
- GRG得到的可能不是全局最优解, 用Evolutionary得到全局最优解;
- 用GRG 结合Multistart可以得到更好的局部最优解.
引用
1. 知乎博客 规划求解Solver: 三种求解方法的应用(原创) - 知乎
Excel规划求解Solver:三种方法的区别相关推荐
- 在 C# 中,(int) ,Int32.Parse() 和 Convert.toInt32() 三种方法的区别
在 C# 中,(int),Int32.Parse() 和 Convert.toInt32() 三种方法有何区别? int 关键字表示一种整型,是32位的,它的 .NET Framework 类型为 S ...
- js--《js缓存的三种方法及区别与特点》
js缓存的三种方法与特点: ①H5本地存储sessionStrong: sessionStrong:临时的会话储存,只要当前的会话窗口未关闭,存储的信息就不会丢失,即使页面刷新或在编辑器中更改代码,存 ...
- JQ中val(),html(),text()三种方法的区别
JQ中val(),html(),tex()三种方法的区别是内容不一样 text(参数); 有参数是改变他的文本,无值是获取他的文本 var(); 有参数是改变他的val属性,无值是获取他的val属性 ...
- 在matlab中怎样安装dh包,建立DH模型的三种方法以及区别
目录 1.建立DH模型的三种方法 2.SDH和MDH的应用范围 3. SDH和MDH的区别 0.SDH是ZX类变换,MDH是XZ类变换 1.SDH和MDH都是强调把坐标系建立在连杆上 2.举个例子说明 ...
- Excel电子表格排序的三种方法
排序是数据处理中的经常性工作,Excel排序有序数计算(类似成绩统计中的名次)和数据重排两类.本文以几个车间的产值和名称为例,介绍Excel 2000/XP的数据排序方法. 一.数值排序 1.RANK ...
- excel 多条件查找三种方法:lookup、vlookup、indexmatch 多条件查找案例
最近在Excel微信学习交流群中收到某位学员的问题咨询,问题是如何返回单据编号和物料长代码对应的含税数额.如下表: 其实这位学员的问题就是excel的多条件查找问题. 下面通过一个实例跟大家分享一下常 ...
- Excel数据分列的三种方法
方法二.查找提取法 1.在B列右侧插入两列空白列,用于保存提出的字符. 2.选中C2单元格,输入公式:=LEFT(B2,FIND("-",B2)-1). 注意:上述公式的含义是:先 ...
- 用C语言实现定积分求解的三种方法,梯形公式,辛普森公式,自适应辛普森公式
1.梯形公式: 梯形公式(trapezoidal rule)是一种求定积分的方法.它假定函数在区间上是一条直线,因此可以通过计算梯形的面积来估计函数的定积分 #include<stdio.h&g ...
- 前端下载excel文件功能的三种方法
1 从后端接收json数据,前端处理生成excel下载 JsonExportExcel的github地址:https://github.com/cuikangjie/JsonExportExcel 这 ...
最新文章
- 微信小店 API 手册
- leetcode算法题--Remove K Digits
- workflow initialization in webclient ui - Remote call case
- 十行Python以内代码能有什么高端操作?
- Online Judge系统常见返回信息分析
- linux之tar使用技巧
- listView多布局
- Extjs Ext.net中的常用属性
- soundpool android,Android SoundPool:再次播放停止的声音
- 51job导出的简历是php,前程无忧简历导出
- 传智2018python15期_2018年传智播客黑马python+人工智能15期
- WPS2003排版位置错误一例(转)
- java protected 构造方法_java中子类调用父类构造方法注意事项
- java怪兽仙境攻略_《怪兽仙境》v1.20基础攻略
- 张国荣一生57部电影海报全集
- 非负数的和与个数c语言编程,C语言习题中,编程实现从键盘任意输入20个整数,统计非负数个数,并计算非负数之和...
- 电路图符号超强科普,轻松看懂电路图!(推荐收藏)
- Mybatis入门(复习)
- 【STM32】标准库 USART通信
- 请你谈谈如何破坏双亲委派模型?