Python中输入维度变化时的优化问题
考虑最小化函数Python中输入维度变化时的优化问题,python,list,algorithm,optimization,scipy,Python,List,Algorithm,Optimization,Scipy,考虑最小化函数f(x)的问题,其中x是Python中长度从1到某个整数c的列表。列表中的数字必须是整数并按递增顺序排列。例如,让c=10,x可以 x = [1,5,7] x = [3,5,8,9] x = [1,8] 梯度可用,df(x)表示。我们如何使用现有的Python优化算法对这个问题进行编码?只要您可以修改函数f(x)以接受最大允许大小(c)的NumPy数组并使用特殊值(例如0,-1,np.nan,np.inf)减少维度的数量。我会使用约束求解器,例如,我不知道可以采用动态大小的变量集
f(x)
的问题,其中x
是Python中长度从1到某个整数c的列表。列表中的数字必须是整数并按递增顺序排列。例如,让c=10
,x
可以
x = [1,5,7]
x = [3,5,8,9]
x = [1,8]
梯度可用,
df(x)
表示。我们如何使用现有的Python优化算法对这个问题进行编码?只要您可以修改函数f(x)
以接受最大允许大小(c
)的NumPy数组并使用特殊值(例如0
,-1
,np.nan
,np.inf
)减少维度的数量。我会使用约束求解器,例如,我不知道可以采用动态大小的变量集的算法或工具。我将使用一个二进制变量向量来指示变量k是否在要考虑的集合中。当然,取决于f(x),这可能使这成为一个MINLP问题。@Saj_Eda这个问题是不适定的。在询问如何调整之前,您应该提供有关f(x)
的详细信息。否则,根据函数中包含的数(例如-1
)定义一个函数只是一个计数问题,如果s,则定义一堆。通常我们不想这样做,因为这会使问题高度非凸且不可微。@ErwinKalvelagen,这取决于f(x)
的实际形式。例如,这可能是一个简单的sum()
,其中0
是填充号。在任何情况下,OP表示已知df(x)
。所以这不是问题。回到学校的时刻。任何“如果”都会使问题不可微(某些特殊情况除外)。因此,即使整个模型是完全线性的,我们也不应该做“一堆如果”。