使用matlab进行分段线性优化

时间:2017-06-07 22:34:06

标签: matlab

我想解决以下优化问题,其目标函数独立于x:

最小化t

受制于a_i * x + b_i< = t

over x表示所有i从1到n = 100

如果我将分段线性优化问题重写为线性优化问题,就会出现这个问题。

问题: 如何使用linprog在matlab中实现这一点。在linprog中,我被要求将目标函数f作为矩阵与x相乘。是否有可能具有独立于x的目标函数?如果没有,我将如何实现这一目标?

P.S:我不知道为什么Mathjax不在这里工作,我一直在寻找如何用Math公式提问,但我没有成功。因此欢迎任何更正。

编辑: Here是来自Matlab的linprog的官方文档。其中声称最小化函数具有f ^ Tx的形状。我的问题只是我的最小化功能没有采取这种形状,并且没有x。我怎样才能在Matlab中实现它?

1 个答案:

答案 0 :(得分:0)

您需要将问题重新表述为标准LP,即根据MATLAB函数f的要求找到名义上的Ablinprog

这是重新制定。从您的问题来看,似乎xt是两个标量。

假设给定的a_ib_i分别存储在列向量ab中,然后是原始问题:

min t,s.t。 a * x + b <= t * ones(n,1)

相当于:

min [0; 1]' * [x; t],s.t。 [a, ones(n,1)] * [x; t] <= -b

因此,只需使用linprog([0; 1], [a, ones(n,1)], -b),解决方案为[x; t]