0

次のコードを使用して実験を行い、DE を使用してより複雑な問題を最適化する方法の学習を開始します。整数を扱うことができるオプティマイザーが必要です。

from scipy.optimize import differential_evolution
def objfun(x):
    print('N')
    return x[0]+2*x[1]**-4*x[2]
solution=differential_evolution(objfun,bounds=((1,10000),(1,200000),(1,50000)),popsize=0,maxiter=3,polish=False,disp=True)

popsize を設定すると問題が発生します。予想よりも多くの人口を取得し、それを 0 に設定すると、最初の人口に対して 10 個の要素が取得され、次に他の人口に対して 5 つの要素が取得され、maxiter に到達します。

これは、上記のコードで得られる出力の例です

runfile('D:/PYTHON/untitled0.py', wdir='D:/PYTHON')
N
N
N
N
N
N
N
N
N
N
differential_evolution step 1: f(x)= 318.074
N
N
N
N
N
differential_evolution step 2: f(x)= 169.667
N
N
N
N
N
differential_evolution step 3: f(x)= 169.667

私が間違っていることを本当に理解していません。少なくとも popsize=0 でエラーが発生すると予想していました。さらに、編集する必要がある初期人口サイズを設定するための他の隠しパラメーターはありますか?

私はまだ初心者です。数週間前に Python を使い始めたので、簡単な説明に本当に感謝しています。

時間を割いて回答してくださった皆さん、どうもありがとうございました。

スティーブ

4

2 に答える 2