我对k > 1
参数x_1
,x_2
,...,x_k
的序数关系存在优化问题。也就是x_1 < x_2 < ... < x_k
,我希望最小化费用函数f: (x_1, ... , x_k) -> c
。
是否有Matlab优化算法可以有效地适应这个问题?
答案 0 :(得分:3)
为什么不使用fmincon()
?看一下第一个例子here:使用以下略微修改的约束(这里为了简单k = 3
):
x(1) <= x(2) -> x(1) - x(2) < 0
x(2) <= x(3) -> x(2) - x(3) < 0
根据上述公式, A
和b
可能如下所示:
A = [1, -1, 0;
0, 1, -1;
0, 0, 0];
和
b = 0;
但请注意,这些并不比关系严格小,因为fmincon
的作用更小或相等。为了逼近小于的实数,你可以引入一个非常小的数字,比如上面的方程中的e
,例如
x(1) + e <= x(2)
如果你做小,它应该是一个好的近似值。