【发布时间】:2017-01-18 01:52:38
【问题描述】:
我正在尝试找到具有二进制项 (0,1) 的优化矩阵,以使我的目标函数最大化。
我的 X 输入是一个包含 0 和 1 项的二维矩阵。
我的目标函数是这样的:
def objective(x):
w=[[2,3],[4,6],[1,0],[2,8]]
return -1* (x[0][0]*w[0][0]+x[0][1]*w[0][1]+x[1][0]*w[1][0]+x[1][1]*w[1][1])
这是我最初的 X:
x0=[[1,0],[1,0],[0,1],[0,0]]
在这里我定义了 X 的边界:
b=(0,1)
bnds=((b,b),(b,b))
最后是最大化问题
sol=minimize(objective2,x0,method='SLSQP',bounds=bnds)
但是我有两个问题:
首先:bnds 的维度与我的 X 不同,因此我收到错误消息。 其次,当我运行最小化函数时,我得到一个错误,指出标量变量的索引无效。
【问题讨论】:
-
我认为您的
x0必须是 1d。我回答了最近的一个问题。 -
@hpaulj 所以你的意思是它不可能是二维的?
-
这不是一个严重的限制,因为您可以根据需要在函数中分解和重塑它。
-
谢谢,但这个问题还没有得到正确回答
标签: python optimization scipy