このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
マルチスタートの開始点を設定する
スタートポイントを設定する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を使用します。
たとえば、50 の ArtificialBound を使用して 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 CustomStartPointSetCustomStartPointSet には StartPointsDimension と NumStartPoints の 2 つのプロパティがあります。これらのプロパティを使用して、CustomStartPointSet オブジェクトを照会できます。たとえば、例の tpoints オブジェクトには次のプロパティがあります。
tpoints.StartPointsDimension
ans =
5tpoints.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);