これは、単純化すると私のコードがどのように見えるかです:
# This function returns some value depending on the index (integer)
# with which it is called.
def funct(index):
value <-- some_process[index]
# Return value for this index.
return value
許可されたインデックスはリストに格納されます。
# List if indexes.
x = [0,1,2,3,...,1000]
の最小値をx
返すインデックスを見つける必要があります。ブルート フォース アプローチを適用し、新しいリストにすべての値を格納する完全なリストをループしてから、次のように最小値を見つけるだけです。funct
x
np.argmin()
list_of_values = []
for indx in x:
f_x = funct(x)
list_of_values.append(f_x)
min_value = np.argmin(list_of_values)
私はこれを試してみましたが、機能しますがx
、要素が多すぎるとかなり高価になります。このプロセスを最適化する方法を探しています。
scipy.optimizeには、アニールやベイスンホッピングなどのグローバルな最小値を見つけるための最適化関数がいくつかあることは知っていますが、それらをコードに正しく適用できませんでした。
これらの最適化ツールは、関数を整数 (インデックス) でしか呼び出せない場合に使用できますか? または、関数が連続している必要がありますか?