GAMS教程 6:绝对值约束与MinMax目标变量
本节我们不讲新的优化模型,相反,这节我们讲讲GAMS
如何处理优化问题中两个常见的问题。
1. 绝对值约束
我们前面介绍了线性模型和时序模型,虽然时序模型并不仅限于线性模型,时序模型的约束完全可以是二次的、三次的。但是考虑到我们只讲了线性模型,所以为了方便理解时序模型,我们才使用的现行约束。
事实上,我们的优化问题中经常会出现一类约束,这类约束就是绝对值约束。我们下面就将讲解如何使用GAMS来处理绝对值约束。
A. 绝对值约束的定义
绝对值约束是指形如下面的约束
其中:
- $f(x)$不一定是线性的。但是为了便于理解,我们还是线性为例。
- $|f(x)|$不是线性约束。
为了方便简介,后面我们设
B. GAMS中处理绝对值约束
对于绝对值,有
因此为了在GAMS
中为了处理绝对值,我们可以进行如下的变换
2. MinMax目标变量
和上面的绝对值约束一样,为了便于讲解如何利用GAMS
解决MinMax
目标变量问题,我们下面还是以线性模型为例。
A. MinMax目标变量的含义
所谓MinMax
目标变量指的是我们在很多优化问题中,遇到一类优化问题的目标变量是混合了min
和max
的目标变量,即
或
B. GAMS处理MinMax目标变量
GAMS
中处理MinMax
目标变量的方法和处理绝对值约束的思路其实差不多,都是进行等价变换,将其转换为额外的约束。
处理MinMax
目标变量最核心的,就是下面的等价变换
因此,在处理MinMax
目标变量的时候,我们可以使用上面的等价变换先把内层的变换换掉,即
即通过添加
这个约束来把内层的循环消掉
同理,如果是外层max
内层max
的话,那么我们进行如下的变换
即通过添加
这个约束来消除内层循环