Matlab如何实现区间优化
Posted 流浪若相惜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab如何实现区间优化相关的知识,希望对你有一定的参考价值。
很久没有写博客了,距离上次写也是两年前了,最近开始在做优化方面的内容,今天想就matlab如何实现区间优化的方法记录一下。
对于优化算法的实现,很大一部分同学采用Lingo软件来进行实现,但是为了论文和作图的需求,采用matlab的方法是不二之选。
1.认识优化函数linprog
首先,让我们先认识一下linprog函数。matlab说明文档是这样介绍的:
改函数用于求解线性规划问题,而我们所用到的方法基本上均是采用转为线性规划问题来求解的,也就是说该函数可以用于大部分的优化求解,你仅需将其转为linprog函数所要求的格式即可。
接下来,我们再来看下该函数的参数说明:
在说明文档中各个重载函数的例子,不再赘述!
需要强调的一点,linprog函数用于求 min,那如果是max怎么办呢?很简单,仅需将min中的常数项均 取反 即可。
2 区间优化
2.1介绍
接下来我们用两步区间优化来说明此问题。首先,先简单介绍一下区间优化的基本方法,下图为区间优化的公式定义:
2.2 两步求解方法
model:
目标:
约束:
xj>=0, j=1,2,k1,…n ,cj 上下限与f相同,而bi则:
aij 的上下限与 x 上下限相反:
具体到是 min 或 max 则为 max 先求上限,而 min 先求下限
2.3 min与max具体求解方法
对于 min ;
submodel 1:
其中
是 submodel1 求出的优化结果.
对于 max ;
submodel 1:
submodel 2:
3 案例
以上就是matlab中实现区间优化的前提,接下来我们用案例来实现区间优化,这里我们仅通过
linprog(f,a,b)来说明,其它类似。
3.1 将模型转为二步模型
首先,我们需要将此模型拆分为两步模型
submodel 1:
submodel 2:
3.2 将模型 max 转换为 min
submodel 1 转换:
submodel 2转换:
3.3 求解
我们仅需要两次调用linprog()函数即可,具体代码实现如下:
矩阵创建
函数实现submodel1
function m= IntervalImplement(c1,a1,b1)
object1=linprog(c1,a1,b1);
y1=object1(1);
y2=object1(2);
%x1=cell(2,2);
fprintf('优化目标上限=%8.4f\\n',y1);
fprintf('优化目标下限=%8.4f\\n',y2);
end
同理实现submodel2.
以上是关于Matlab如何实现区间优化的主要内容,如果未能解决你的问题,请参考以下文章