org.mklab.tool.control.system
クラス BlockSystem

java.lang.Object
  上位を拡張 org.mklab.tool.control.system.SystemOperator
      上位を拡張 org.mklab.tool.control.system.BlockSystem
すべての実装されたインタフェース:
Cloneable, ArrayElement<SystemOperator>, GridElement<SystemOperator>
直系の既知のサブクラス:
BlockContinuousSystem, BlockSamplingSystem

public abstract class BlockSystem
extends SystemOperator

ブロックシステムを表わすクラスです。

バージョン:
$Revision: 1.162 $
作成者:
koga

コンストラクタの概要
BlockSystem(SystemOperator[][] elements, List<Integer> inputNodes, List<Integer> outputNodes)
          新しく生成されたBlockSystemオブジェクトを初期化します。
 
メソッドの概要
protected  void calcNodeValue()
          ノードの値を計算します。
 boolean calcOutputOfDirectFeedthroughSystem(SystemOperator[][] matrix, Matrix[] localNodeValue, Matrix[] nodeTmpValue, boolean skip)
          確定したノードの値を用いて各直達項の有るシステムの出力を計算し、その値を仮のノードへ加えます。
protected abstract  Matrix calcOutputOfDirectFeedthroughSystem(SystemOperator system, Matrix u)
          直達項のあるシステムの出力を求めます。
protected abstract  Matrix calcOutputOfNonDirectFeedthroughSystem(SystemOperator system)
          直達項の無いシステムの出力を求めます。
protected abstract  SystemOperator createStrictlyProperLinearDynamicSystem(SystemOperator system)
          強プロパーな線形動的システムを生成します。
 int getInputNodeSize()
          入力ノードの数を返します。
 Matrix getInputNodeValueOf(SystemOperator system)
          システムへ入力するノードの値を返します。
 LinearSystem getLinearSystem()
          線形システムの場合、線形システムの式を返します。
 int getNodeSize()
          ノードの数を返します。
 int getOutputNodeSize()
          出力ノードの数を返します。
protected  Matrix getOutputNodeValue()
          出力ノードの値を返します。
 SystemOperator getSingleSystem()
          単一のシステムであるならば、単一システムを返します。
protected  SystemOperator getSystemOperator(int inputNode, int outputNode)
          指定されたノード間にあるシステムを返します。
 void initialize()
          状態などの初期化を行います。
 boolean isAutoSize()
          自動的に入出力の数を設定するか判定します。
 boolean isSingleSystem()
          単一のシステムであるか判定します。
protected abstract  boolean replaceDynamicSystemList(SystemOperator oldSystem, SystemOperator newSystem)
          動的システムのリストの成分を新しいシステムに入れ替えます。
 void resetAutoSize()
          自動的に入出力の数を設定するシステムの入出力数をリセットします。
protected  void resetNodeValue()
          ノードの値をリセットします。
 void separateDirectFeedthroughAndNonDirectFeedthrough()
          非直達項成分と直達項成分を分離し、2個の隣接行列を生成します。
 void setAutoSize(boolean autoSize)
          自動的に入出力の数を設定するか設定します。
static List<List<Integer>> setBlockMatrix(SystemOperator[][] matrix, int row, int column, BlockSystem blockSystem)
          ブロックシステムを拡張された隣接行列に代入します。
 void setInputNodeValue(Matrix u)
          入力ノードに値を設定します。
 void setInputSize(int inputSize)
          入力の数を設定します。
 void setNodeValueOfNoInputNode(SystemOperator[][] matrix, Matrix[] nodeValue, Matrix[] nodeTmpValue, boolean skipping)
          他のノードから入るエッジがないノードの値を確定します。
 void setOutputSize(int outputSize)
          出力の数を設定します。
 void setZeroSizeToUnDefinedInputPortOutputPort()
          出力数が未定のInputPortの出力数を0に、入力数が未定のOutputPortの入力数を0に設定します。
 
クラス org.mklab.tool.control.system.SystemOperator から継承されたメソッド
clone, compare, createArray, createArray, createGrid, createGrid, createZero, equals, getInputSize, getOutputSize, getParameter, getParameters, getStateSize, hasDirectFeedthrough, hashCode, isDynamic, isForecdSystem, isInlet, isLinear, isOutlet, isSISO, isSizeDefined, isStatic, isTransformableFrom, isTransformableTo, isZero, setDynamic, setForcedSystem, setHasDirectFeedthrough, setInlet, setLinear, setOutlet, setParameter, setStateSize, setupParameters, toString, toString, transformFrom, transformTo
 
クラス java.lang.Object から継承されたメソッド
finalize, getClass, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

BlockSystem

public BlockSystem(SystemOperator[][] elements,
                   List<Integer> inputNodes,
                   List<Integer> outputNodes)
新しく生成されたBlockSystemオブジェクトを初期化します。

パラメータ:
elements - 隣接行列
inputNodes - 入力ノードの番号のリスト(番号は1から始まります)
outputNodes - 出力ノードの番号のリスト(番号は1から始まります)
メソッドの詳細

setZeroSizeToUnDefinedInputPortOutputPort

public void setZeroSizeToUnDefinedInputPortOutputPort()
出力数が未定のInputPortの出力数を0に、入力数が未定のOutputPortの入力数を0に設定します。


setNodeValueOfNoInputNode

public void setNodeValueOfNoInputNode(SystemOperator[][] matrix,
                                      Matrix[] nodeValue,
                                      Matrix[] nodeTmpValue,
                                      boolean skipping)
他のノードから入るエッジがないノードの値を確定します。

ノードの仮の値を正式の値へコピーします。

パラメータ:
matrix - 隣接行列を転置した行列
nodeValue - ノードの値
nodeTmpValue - 仮のノードの値
skipping - 値が決まっているノードについての処理をスキップするならばtrue、そうでなければfalse

setInputNodeValue

public void setInputNodeValue(Matrix u)
入力ノードに値を設定します。

パラメータ:
u - 入力ノードの値

getOutputNodeValue

protected Matrix getOutputNodeValue()
出力ノードの値を返します。

戻り値:
出力ノードの値

getInputNodeValueOf

public Matrix getInputNodeValueOf(SystemOperator system)
システムへ入力するノードの値を返します。

パラメータ:
system - 入力するノードの値を調べるシステム
戻り値:
システムへ入力するノードの値

getNodeSize

public int getNodeSize()
ノードの数を返します。

戻り値:
ノードの数

getInputNodeSize

public int getInputNodeSize()
入力ノードの数を返します。

戻り値:
入力ノードの数

getOutputNodeSize

public int getOutputNodeSize()
出力ノードの数を返します。

戻り値:
出力ノードの数

resetNodeValue

protected void resetNodeValue()
ノードの値をリセットします。


calcOutputOfNonDirectFeedthroughSystem

protected abstract Matrix calcOutputOfNonDirectFeedthroughSystem(SystemOperator system)
                                                          throws SolverStopException
直達項の無いシステムの出力を求めます。

パラメータ:
system - 直達項の無いシステム
戻り値:
直達項の無いシステムの出力
例外:
SolverStopException - ソルバーが停止された場合

calcOutputOfDirectFeedthroughSystem

protected abstract Matrix calcOutputOfDirectFeedthroughSystem(SystemOperator system,
                                                              Matrix u)
                                                       throws SolverStopException
直達項のあるシステムの出力を求めます。

パラメータ:
system - 直達項のあるシステム
u - 入力
戻り値:
直達項のあるシステムの出力
例外:
SolverStopException - ソルバーが停止された場合

createStrictlyProperLinearDynamicSystem

protected abstract SystemOperator createStrictlyProperLinearDynamicSystem(SystemOperator system)
強プロパーな線形動的システムを生成します。

パラメータ:
system - バイプロパーな線形動的システム
戻り値:
強プロパーな線形動的システム

replaceDynamicSystemList

protected abstract boolean replaceDynamicSystemList(SystemOperator oldSystem,
                                                    SystemOperator newSystem)
動的システムのリストの成分を新しいシステムに入れ替えます。

パラメータ:
oldSystem - リストに登録されている旧システム
newSystem - リストに登録する新システム
戻り値:
入れ替えが成功した場合true

calcOutputOfDirectFeedthroughSystem

public boolean calcOutputOfDirectFeedthroughSystem(SystemOperator[][] matrix,
                                                   Matrix[] localNodeValue,
                                                   Matrix[] nodeTmpValue,
                                                   boolean skip)
                                            throws SolverStopException
確定したノードの値を用いて各直達項の有るシステムの出力を計算し、その値を仮のノードへ加えます。

そして、そのシステムを隣接行列から削除します。

パラメータ:
matrix - 隣接行列を転置した行列
localNodeValue - ノードの値
nodeTmpValue - 仮のノードの値
skip - 値が決定しているノードについて計算をスキップする場合true
戻り値:
隣接行列から削除されたシステムがある場合true
例外:
SolverStopException - ソルバーが停止された場合

calcNodeValue

protected void calcNodeValue()
                      throws SolverStopException
ノードの値を計算します。

例外:
SolverStopException - ソルバーが停止された場合

getLinearSystem

public LinearSystem getLinearSystem()
クラス SystemOperator の記述:
線形システムの場合、線形システムの式を返します。

オーバーライド:
クラス SystemOperator 内の getLinearSystem
戻り値:
線形システムの式
関連項目:
SystemOperator.getLinearSystem()

initialize

public void initialize()
クラス SystemOperator の記述:
状態などの初期化を行います。

定義:
クラス SystemOperator 内の initialize
関連項目:
SystemOperator.initialize()

separateDirectFeedthroughAndNonDirectFeedthrough

public void separateDirectFeedthroughAndNonDirectFeedthrough()
非直達項成分と直達項成分を分離し、2個の隣接行列を生成します。


isSingleSystem

public boolean isSingleSystem()
単一のシステムであるか判定します。

戻り値:
単一のシステムならばtrue、そうでなければfalse

getSingleSystem

public SystemOperator getSingleSystem()
単一のシステムであるならば、単一システムを返します。

戻り値:
単一システム
例外:
RuntimeException - 単一のシステムでない場合

setBlockMatrix

public static List<List<Integer>> setBlockMatrix(SystemOperator[][] matrix,
                                                 int row,
                                                 int column,
                                                 BlockSystem blockSystem)
ブロックシステムを拡張された隣接行列に代入します。

パラメータ:
matrix - 拡張された隣接行列
row - ブロックシステムの行番号
column - ブロックシステムの列番号
blockSystem - ブロックシステムの成分
戻り値:
Sourceが接続されているノードのリスト、Sinkが接続されているノードのリスト

getSystemOperator

protected SystemOperator getSystemOperator(int inputNode,
                                           int outputNode)
指定されたノード間にあるシステムを返します。

パラメータ:
inputNode - 入力ノード番号
outputNode - 出力ノード番号
戻り値:
指定されたノード間にあるシステム

isAutoSize

public boolean isAutoSize()
クラス SystemOperator の記述:
自動的に入出力の数を設定するか判定します。

オーバーライド:
クラス SystemOperator 内の isAutoSize
戻り値:
自動的に入出力の数を設定するならばtrue、そうでなければfalse
関連項目:
SystemOperator.isAutoSize()

setAutoSize

public void setAutoSize(boolean autoSize)
クラス SystemOperator の記述:
自動的に入出力の数を設定するか設定します。

オーバーライド:
クラス SystemOperator 内の setAutoSize
パラメータ:
autoSize - 自動的に入出力の数を設定するならばtrue、そうでなければfalse
関連項目:
SystemOperator.setAutoSize(boolean)

resetAutoSize

public void resetAutoSize()
クラス SystemOperator の記述:
自動的に入出力の数を設定するシステムの入出力数をリセットします。

オーバーライド:
クラス SystemOperator 内の resetAutoSize
関連項目:
SystemOperator.resetAutoSize()

setInputSize

public void setInputSize(int inputSize)
クラス SystemOperator の記述:
入力の数を設定します。

オーバーライド:
クラス SystemOperator 内の setInputSize
パラメータ:
inputSize - 入力の数
関連項目:
SystemOperator.setInputSize(int)

setOutputSize

public void setOutputSize(int outputSize)
クラス SystemOperator の記述:
出力の数を設定します。

オーバーライド:
クラス SystemOperator 内の setOutputSize
パラメータ:
outputSize - 出力の数
関連項目:
SystemOperator.setOutputSize(int)