使用CVXOPT优化多重约束

2024-10-01 11:39:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试解决一个线性代数问题:一个优化问题,我正在使用CVXOPT。我把这个问题分为三个部分

以最简单的形式,CVXOPT的一般公式为

最小化1/2xTPx+qTx

以Gx为准≤h

Ax=b

第一个问题组件 首先,我必须最小化,受限于一个非常简单的问题,定义如下

p=

|   S   |

q=

|   0   |

A=

|   1   |

b=

|   1   |

G=

|   r   |
|   -I  |

h=

|   rmin    0   |

我已经编码了这个,它工作得很好

第二个问题部分 第二个问题是将一个非凸问题转化为凸线性问题,从而使优化问题产生的营业额约束为最大值。在本例中,我对问题进行了建模和编码,如下所示,所有工作正常

p=

  | S   0   0   |
  | 0   0   0   |
  | 0   0   0   |
  | 0   0   0   |

q=

|   -x1 0   0   |

A=

|   1   0   0   |
|   I   I   -I  |

b=

|   1   x0  0   |

G=

|   0   1   1   |
|   -I  0   0   |
|   0   -I  0   |
|   0   0   -I  |

h=

|   T   0   0   |

第三个问题组件 我正在努力解决的第三个问题是将上述两个问题结合起来。我所做的,显然是不正确的,因为它变成了一个奇异矩阵

p=

|   S   0   0   |
|   0   0   0   |
|   0   0   0   |
|   0   0   0   |

q=

|   -x1 0   0   |

A=

|   1   0   0   |
|   I   I   -I  |

b=

|   1   x0  0   |

G=

|   0   1   1       |
|   -I  0   0       |
|   0   -I  0       |
|   0   0   -I      |
|   0   0   rmin    |
|   0   0   -I      |

h=

|   T   0   0   rmin    0   |

因为我认为奇点的问题来自于G,有谁能帮助我以正确的方式表述第三个问题吗

谢谢


Tags: 编码定义组件线性ax形式公式x1