このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
マルチスタートの開始点を設定する
スタートポイントを設定する4つの方法
ローカル ソルバーに使用する開始点を MultiStart
に指示する方法は 4 つあります。
正の整数
k
を渡します。MultiStart
は、RandomStartPointSet
オブジェクトとproblem
構造体を使用しているかのように、k - 1
開始ポイントを生成します。MultiStart
は、problem
構造体のx0
開始ポイントも使用するため、合計k
開始ポイントが生成されます。RandomStartPointSet
オブジェクト を渡します。CustomStartPointSet
オブジェクト を渡します。RandomStartPointSet
およびCustomStartPointSet
オブジェクトの セル配列 を渡します。実行したい特定のポイントがあるが、MultiStart
に他のランダムな開始ポイントも使用させたい場合は、セル配列を渡します。
メモ
MultiStart
がすべての開始点を使用するか、境界またはその他の不等式制約を満たす点のみを使用するかを制御できます。詳細については、フィルター開始点(オプション)を参照してください。
開始点の正の整数
k
開始点に対してMultiStart
を実行する構文は
[xmin,fmin,flag,outpt,allmins] = run(ms,problem,k);
正の整数 k
は、MultiStart
が使用する開始点の数を指定します。MultiStart
は、問題の次元と problem
構造の境界を使用して、ランダムな開始点を生成します。MultiStart
は、k - 1
のランダムな開始点を生成し、problem
構造の x0
開始点も使用します。
開始点の RandomStartPointSet オブジェクト
次のように RandomStartPointSet
オブジェクトを作成します。
stpoints = RandomStartPointSet;
次のように、RandomStartPointSet
から始めて MultiStart
を実行します。
[xmin,fmin,flag,outpt,allmins] = run(ms,problem,stpoints);
デフォルトでは、RandomStartPointSet
オブジェクトは 10 個の開始点を生成します。NumStartPoints
プロパティを使用して開始点の数を制御します。たとえば、40 個の開始点を生成するには、次のようにします。
stpoints = RandomStartPointSet('NumStartPoints',40);
RandomStartPointSet
の代わりに ArtificialBound
を設定できます。この ArtificialBound
は、問題構造からの境界と連動して機能します。
コンポーネントに境界がない場合、
RandomStartPointSet
は下限として-ArtificialBound
を使用し、上限としてArtificialBound
を使用します。コンポーネントに下限
lb
はあるが上限がない場合、RandomStartPointSet
は上限としてlb + 2*ArtificialBound
を使用します。同様に、コンポーネントに上限
ub
があり、下限がない場合、RandomStartPointSet
は下限としてub - 2*ArtificialBound
を使用します。
たとえば、ArtificialBound
が 50
の 100
開始ポイントを生成するには、次のようにします。
stpoints = RandomStartPointSet('NumStartPoints',100, ... 'ArtificialBound',50);
RandomStartPointSet
オブジェクトは、問題構造内の x0
ポイントと同じ次元の開始点を生成します。list
を参照してください。
開始点の CustomStartPointSet オブジェクト
特定の開始点のセットを使用するには、次のようにポイントを CustomStartPointSet
に配置します。
開始点をマトリックスに配置します。マトリックスの各行は 1 つの開始点を表します。
MultiStart
は、StartPointsToRun
プロパティによるフィルタリングに従って、マトリックスのすべての行を実行します。詳細については、マルチスタートアルゴリズムを参照してください。マトリックスから
CustomStartPointSet
オブジェクトを作成します。tpoints = CustomStartPointSet(ptmatrix);
たとえば、各ポイントのコンポーネントが 10 に等しく、平均が 25 の指数分布変数を加えた 40 個の 5 次元ポイントのセットを作成します。
pts = -25*log(rand(40,5)) + 10; tpoints = CustomStartPointSet(pts);
次のように、CustomStartPointSet
から始めて MultiStart
を実行します。
[xmin,fmin,flag,outpt,allmins] = run(ms,problem,tpoints);
CustomStartPointSet
オブジェクトから元の点の行列を取得するには、list
を使用します。
pts = list(tpoints); % Assumes tpoints is a CustomStartPointSet
CustomStartPointSet
には StartPointsDimension
と NumStartPoints
という 2 つのプロパティがあります。これらのプロパティを使用して、CustomStartPointSet
オブジェクトを照会できます。たとえば、例の tpoints
オブジェクトには次のプロパティがあります。
tpoints.StartPointsDimension
ans = 5
tpoints.NumStartPoints
ans = 40
開始点のオブジェクトのセル配列
特定の開始点のセットとランダムに生成されたいくつかの点を使用するには、RandomStartPointSet
または CustomStartPointSet
オブジェクトのセル配列を渡します。
たとえば、開始点の CustomStartPointSet オブジェクト の 40 個の特定の 5 次元ポイントと RandomStartPointSet
の 40 個の追加の 5 次元ポイントの両方を使用するには、次のようにします。
pts = -25*log(rand(40,5)) + 10;
tpoints = CustomStartPointSet(pts);
rpts = RandomStartPointSet('NumStartPoints',40);
allpts = {tpoints,rpts};
allpts
セル配列から MultiStart
を実行します。
% Assume ms and problem exist
[xmin,fmin,flag,outpt,allmins] = run(ms,problem,allpts);