gpt4 book ai didi

python - Python 中的 CVXPY 无法解决简单的二次规划问题

转载 作者:行者123 更新时间:2023-12-01 03:33:18 25 4
gpt4 key购买 nike

我正在 Python 中使用 CVXOPT 来尝试解决一个相当简单的二次规划问题。我发现它对于我的参数的某些值非常有效,但对于其他参数值却失败了。

下面显示的是 cvxopt.solvers.qp() 三个示例之一失败的非常简单的示例。

您可以看到所有示例本质上都非常相似。谁能告诉我为什么 CVXOPT 无法解决这三个问题的中间问题?

非常感谢

import numpy as np
from cvxopt.solvers import qp
from cvxopt import matrix

print '-'*70
print 'Case 1:'
P = np.array([[ 0.0084, 0.003 ],
[ 0.003, 0.0017]])
q = np.array([[-0.36],
[-0.02]])
G = np.array([[ 1., 0.],
[ 0., 1.]])
h = np.array([[ 500.],
[ 500.]])

results = qp(
matrix(P),
matrix(q),
matrix(G),
matrix(h),
)
print results # Works fine, {'status': 'optimal'}
print results['x']
print 'Works fine'


print '-'*70
print 'Case 2:'
P = np.array([[ 0.0042 , 0.0015 ],
[ 0.0015 , 0.00085]])
q = np.array([[-0.48],
[-0.06]])
G = np.array([[ 1., 0.],
[ 0., 1.]])
h = np.array([[ 500.],
[ 500.]])

results = qp(
matrix(P),
matrix(q),
matrix(G),
matrix(h),
)
print results # Fails, reaches max_iter, {'status': 'unknown'}
print '***Fails***'



print '-'*70
print 'Case 3:'
P = np.array([[ 0.0021 , 0.00075 ],
[ 0.00075 , 0.000425]])
q = np.array([[-0.54],
[-0.08]])
G = np.array([[ 1., 0.],
[ 0., 1.]])
h = np.array([[ 500.],
[ 500.]])

results = qp(
matrix(P),
matrix(q),
matrix(G),
matrix(h),
)
print results # Works fine, {'status': 'optimal'}
print results['x']
print 'Works fine'

最佳答案

抱歉,我没有足够的声誉来编辑我的问题。

Google 群组中的某人指出了答案。这是我的问题没有很好地扩展。 h 的元素最好接近 1。

因此,将 Gh 除以 500 可以让优化器完美地工作,并在上述所有情况下给出正确的答案。

很奇怪,我在 CVXOPT 文档中找不到任何有关缩放的内容。

无论如何,我希望这个问题和答案对某人有用。

print '-'*70
print 'Case 2:'
P = np.array([[ 0.0042 , 0.0015 ],
[ 0.0015 , 0.00085]])
q = np.array([[-0.48],
[-0.06]])
G = np.array([[ 1., 0.],
[ 0., 1.]])
h = np.array([[ 500.],
[ 500.]])

# Divide by 500 to get scaling correct
G /= 500
h /= 500

results = qp(
matrix(P),
matrix(q),
matrix(G),
matrix(h),
)
print results # Works fine, {'status': 'optimal'}
print 'Works fine'

关于python - Python 中的 CVXPY 无法解决简单的二次规划问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40634536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com