Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中输入维度变化时的优化问题_Python_List_Algorithm_Optimization_Scipy - Fatal编程技术网

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)
。所以这不是问题。回到学校的时刻。任何“如果”都会使问题不可微(某些特殊情况除外)。因此,即使整个模型是完全线性的,我们也不应该做“一堆如果”。