% ROWEXCH 実験の D-最適計画 (行交換アルゴリズム)
%
%   [SETTINGS, X] = ROWEXCH(NFACTORS,NRUNS,MODEL) は、要因 NFACTORS に
%   対する NRUNS 実行をもつ D-最適計画を作成します。SETTINGS は、計画に
%   対する要因設定の行列であり、X は、項の値をもつ行列 (計画行列と呼ばれる
%   ことがある) です。MODEL は、オプションの引数で、回帰モデルの次数を
%   制御します。デフォルトでは、ROWEXCH は、定数項をもつ線形加算モデルに
%   対する計画行列を出力します。MODELは、つぎの文字列のいずれかになります。
%
%     'linear'        定数、線形項を含む (デフォルト)
%     'interaction'   定数、線形、クロス積の項を含む
%     'quadratic'     相互作用に二乗項を追加
%     'purequadratic' 定数、線形、二乗項を含む
%
%   さらに、MODEL は、関数 X2FX で使用できる要素構成からなる行列の形式
%   にもなります。
%
%   [SETTINGS, X] = ROWEXCH(...,'PARAM1',VALUE1,'PARAM2',VALUE2,...) は、
%   パラメータ/値の組の設定を通して、計画生成全体を制御できます。利用
%   可能なパラメータは、つぎのとおりです。
%
%      パラメータ   値
%      'bounds'     2×NFACTORS 行列として指定される各要因に対する下限と
%                   上限。さらに、この値は、対応する要因に対する可能な
%                   値のベクトルを指定する各要素である NFACTORS 要素を
%                   含むセル配列にもなります。
%      'categorical'     カテゴリ予測子のインデックス
%      'display'    繰り返しカウンタの表示をコントロールするために、
%                   'on'、あるいは、'off' のいずれかとなります。
%                   (デフォルト = 'on').
%      'init'       NRUNS×NFACTORS 行列としての初期計画
%                   (デフォルトは、無作為に選択された点集合です)。
%      'excludefun' 望ましくない実行を除外する関数
%      'levels'     各要因のレベル数のベクトル
%      'maxiter'    繰り返しの最大回数 (デフォルト = 10).
%      'tries'      おそらく最初を除く各試行に対するランダムポイントを
%                   使用し、新規開始点から計画を生成しようとする回数
%                   (デフォルト 1)。
%
%   関数 ROWEXCH は、行交換アルゴリズムを使用して、D-最適計画を探します。
%   これは、計画に含まれる適格な点の候補集合を最初に生成し、それから
%   繰り返し、この計画を使用して推定される係数の分散を減らすように試みる
%   際に、候補の点に対する計画点を交換します。デフォルトのものと異なる
%   候補集合を使用する必要がある場合、ROWEXCH の代わりに 関数 CANDGEN 
%   と CANDEXCH を呼び出すことができます。
%
%   'excludefcn' 関数が F の場合、シンタックス B=F(S) をサポートしなければ
%   なりません。ここで、S は、設定を含む K×NFACTORS の行列で、B は、
%   K のブール値のベクトルです。B(j) は、S の j 番目の行を除外する必要が
%   ある場合に true になります。
%
%   例:
%      % 2 要因の 2 次モデルに対する計画
%      sortrows(rowexch(2,9,'q'))
%
%      % それぞれ 3 レベルをとる 3 つのカテゴリ要因に対する計画 -- 
%      % 複数の試行は、最良の計画を見つけるために必要になります。
%      sortrows(rowexch(3,9,'linear','cat',1:3,'levels',3,'tries',10))
%
%   参考 CORDEXCH, CANDGEN, CANDEXCH, X2FX.


%   Copyright 1993-2007 The MathWorks, Inc. 
