クラス CSpider2
- java.lang.Object
-
- CSpider2
-
public class CSpider2 extends java.lang.Object
2021.07.11 spider2アルゴリズムJAVA版
コアと拡張後の直方体を非相似に対応するために、
parametersファイル コアのx-方向の比率(xCoreRatio)を追加
xCoreratioが書かれているとcuboidを書き直す<==よくわからないので使用しない。
2021.07.04
2.vs.1対応
parameters file
Cuboid x y z は最小値を設定する。
例 x: 0 70
y: -40 40
z: -45 45
の場合 cuboid =35 ,35 ,35
2021.05.24
pointsファイルを呼び込んで、コアとの距離を急に離れないように
調整して、pointsファイルに書き込む。
2021.04.16
蜘蛛の巣アルゴリズム(岩上さん)のJAVA版を実装
doExpansion- 作成者:
- ohno
-
-
フィールドの概要
フィールド 修飾子とタイプ フィールド 説明 private sde.to.model.CTS
alpha_val
private CBadCellSampleList
badList
(package private) java.io.BufferedReader
buff
private double
delta_x
x-方向のセルの長さ= (max_x - min_x)/private double
delta_y
private double
delta_z
private sde.to.model.CTS
diff_x
ポイント情報のx座標を格納する。private sde.to.model.CTS
diff_y
private sde.to.model.CTS
diff_z
private java.lang.String
infname
private java.lang.String
infpath
private java.lang.String
inParameterFile
private boolean
isDistortionCalcurate
private boolean
isPointsSave
private boolean
isRatioCalcurate
private java.lang.String
outfname
private java.lang.String
outfpath
(package private) java.io.File
paramfile
private sde.to.model.CTS[]
points
private java.lang.String[]
Points_Header
private int
points_header_line_no
(package private) int
points_no
(package private) java.io.File
pointsfile
(package private) java.io.FileReader
reader
(package private) java.io.PrintWriter
writefile
-
メソッドの概要
すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド 修飾子とタイプ メソッド 説明 private void
changeCuvoid()
xCoreRatioが設定されている場合
Cu = max {|min - p0|_max , |max - p0|_max}
Cuboid_.x = Cu * xCoreRatio
Cuboid_.y = Cu
Cuboid_.z = Cu
CPA.cuboid=Cuboid_private void
checkParam()
パラメータの検証private void
doCalculateCellsDistortion(java.lang.String badCellPointsFilePath)
歪度を各点すべてに計算する。private void
doCalculateCellsRatio(java.lang.String badCellPointsFilePath)
歪度を各点すべてに計算する。(package private) Cell
doExpansion(Cell cell)
Cellの拡張 蜘蛛の巣処理 CellPairで使用private org.apache.commons.math3.linear.RealVector
doExpansion(org.apache.commons.math3.linear.RealVector p)
pointの拡張 蜘蛛の巣処理
原点とのオフセット・正規化、拡張係数による拡大、
正規化の戻し+原点のリセット
β(|(p-p0)/cuboid|max) ((p-p0)/cuboid)+p0private org.apache.commons.math3.linear.RealVector
doExpansionNoCube(org.apache.commons.math3.linear.RealVector p)
pointの拡張 (非立方体)
p_p0/cuboid _x < 0 のとき |p_p0/cuboid|_max >
|getMinValueP_P0DividedByCuboid|であればx方向の倍率はα_xを用いる。private double
expansionRate(double mx, double x, int id)
x-方向の拡大係数 α_xを計算する。private double
expansionRate_linea(double x)
拡大率の計算 オリジナルprivate double
expansionRate2(double x)
拡大率の計算 2次曲線 2021.05.04private org.apache.commons.math3.linear.RealVector[]
get3CellPoints(org.apache.commons.math3.linear.RealVector p)
get3CellPointsprivate org.apache.commons.math3.linear.RealVector
get3dRealVector(double x, double y, double z)
getRealVectorprivate double
getExpansionFactor(org.apache.commons.math3.linear.RealVector p)
拡張係数のみを計算する。(package private) int[]
getIdxFromKey(int key)
key 情報から(i,j,k)情報を返す。private org.apache.commons.math3.linear.RealVector
getMaxValueP_P0DividedByCuboid()
p_p0|x/cuboid_x ...private org.apache.commons.math3.linear.RealVector
getMinValueP_P0DividedByCuboid()
p_p0|x/cuboid_x ...の最小値を求める(package private) org.apache.commons.math3.linear.RealVector
getPointFromKey(int key)
distortion mapのkey 情報から点情報を返す。(package private) void
inFileOpen()
入力ファイルのオープンstatic void
main(java.lang.String[] arg)
mainprivate double
max_abs(org.apache.commons.math3.linear.RealVector p)
|p|_max = max(|x|,|y|,|z|)(package private) void
outFileOpen()
出力ファイルのオープン(package private) void
parameterFileOpen()
パラメータファイルのオープン(package private) org.apache.commons.math3.linear.RealVector
parse3(java.lang.String oneline)
oneline = (px,py,pz)の読み込み
上の形でないときにはnullを返す。(package private) void
parseCuboid(java.lang.String oneline)
oneline = cuboid:(px,py,pz)の読み込み
上の形でないときにはnullを返す。(package private) void
parseOrigin(java.lang.String oneline)
oneline = p0:(px,py,pz)の読み込み
上の形でないときにはnullを返す。(package private) int
parsePointNo(java.lang.String oneline)
点数
上の形でないときは-1をかえす。private boolean
parseValue(java.lang.String oneline)
oneline = xx:実数の読み込み
xx gamma1 or gamma2 or beta or minX or maxX or minY or maxY or minZ or maxZ
or divX or divY or divZ
上の形でないときにはfalseを返す。private void
pointsReadWrite()
ポイントデータの入力
拡張処理
ポイントデータの出力
Spider2 メイン処理(package private) void
print(java.lang.String name, org.apache.commons.math3.linear.RealVector p)
print Point 点情報の印刷private void
printMinMaxDivDelta()
print max_min valprivate void
readParameterFile()
Read Parameter Fileprivate void
readPointsFileAsParameterSet()
入力pointsデータの呼び込み(1回目)
パラメータファイルを呼び込むようになったので、
データ確認程度
poinrtsファイルからmax min情報を取得private void
set_max_min_val(int i, double val)
x_max,x_min..private void
setDelta()
delta_x の設定
-
-
-
フィールドの詳細
-
isPointsSave
private boolean isPointsSave
-
isDistortionCalcurate
private boolean isDistortionCalcurate
-
isRatioCalcurate
private boolean isRatioCalcurate
-
infpath
private java.lang.String infpath
-
infname
private java.lang.String infname
-
inParameterFile
private java.lang.String inParameterFile
-
outfpath
private java.lang.String outfpath
-
outfname
private java.lang.String outfname
-
points
private sde.to.model.CTS[] points
-
badList
private CBadCellSampleList badList
-
points_header_line_no
private final int points_header_line_no
- 関連項目:
- 定数フィールド値
-
points_no
int points_no
-
Points_Header
private java.lang.String[] Points_Header
-
diff_x
private sde.to.model.CTS diff_x
ポイント情報のx座標を格納する。diff_x.size()が x-方向の点の数になる。
使用するのは、readPointsFileAsParameterSet-> set_max_min_val , duv_x
-
diff_y
private sde.to.model.CTS diff_y
-
diff_z
private sde.to.model.CTS diff_z
-
delta_x
private double delta_x
x-方向のセルの長さ= (max_x - min_x)/
-
delta_y
private double delta_y
-
delta_z
private double delta_z
-
pointsfile
java.io.File pointsfile
-
paramfile
java.io.File paramfile
-
reader
java.io.FileReader reader
-
buff
java.io.BufferedReader buff
-
writefile
java.io.PrintWriter writefile
-
alpha_val
private sde.to.model.CTS alpha_val
-
-
コンストラクタの詳細
-
CSpider2
public CSpider2(java.lang.String infpath, java.lang.String infname, java.lang.String inParameterFile, java.lang.String outpath, java.lang.String outfname)
コンストラクタ- パラメータ:
infpath
- 入力ファイルパスinfname
- 入力ファイル名inParameterFile
- パラメータファイル名outpath
- 出力ファイルパスoutfname
- 出力ファイル名
-
CSpider2
CSpider2(double delta_x, double delta_y, double delta_z)
CellPaire から doExpansionを呼ぶ時に使用されるコンストラクタ- パラメータ:
delta_x
- Δxdelta_y
- Δydelta_z
- Δz
-
-
メソッドの詳細
-
inFileOpen
void inFileOpen()
入力ファイルのオープン
-
parameterFileOpen
void parameterFileOpen()
パラメータファイルのオープン
-
outFileOpen
void outFileOpen()
出力ファイルのオープン
-
set_max_min_val
private void set_max_min_val(int i, double val)
x_max,x_min.. の設定- パラメータ:
i
- 0:x 1:y 2:zval
- 値
-
parse3
org.apache.commons.math3.linear.RealVector parse3(java.lang.String oneline)
oneline = (px,py,pz)の読み込み
上の形でないときにはnullを返す。- パラメータ:
oneline
- 一行入力値- 戻り値:
- 点情報(3次元)またはnullをかえす。
-
parseOrigin
void parseOrigin(java.lang.String oneline)
oneline = p0:(px,py,pz)の読み込み
上の形でないときにはnullを返す。- パラメータ:
oneline
- 一行入力値
-
parseCuboid
void parseCuboid(java.lang.String oneline)
oneline = cuboid:(px,py,pz)の読み込み
上の形でないときにはnullを返す。- パラメータ:
oneline
- cuboidの設定
-
parseValue
private boolean parseValue(java.lang.String oneline)
oneline = xx:実数の読み込み
xx gamma1 or gamma2 or beta or minX or maxX or minY or maxY or minZ or maxZ
or divX or divY or divZ
上の形でないときにはfalseを返す。- パラメータ:
oneline
- 入力 実数値- 戻り値:
- true;
-
changeCuvoid
private void changeCuvoid()
xCoreRatioが設定されている場合
Cu = max {|min - p0|_max , |max - p0|_max}
Cuboid_.x = Cu * xCoreRatio
Cuboid_.y = Cu
Cuboid_.z = Cu
CPA.cuboid=Cuboid_
-
parsePointNo
int parsePointNo(java.lang.String oneline)
点数
上の形でないときは-1をかえす。- パラメータ:
oneline
- 一行情報- 戻り値:
- pointsファイルに記述された点の数 ないときは-1
-
pointsReadWrite
private void pointsReadWrite() throws java.io.IOException
ポイントデータの入力
拡張処理
ポイントデータの出力
Spider2 メイン処理- 例外:
java.io.IOException
- ファイルオープンエラー
-
max_abs
private double max_abs(org.apache.commons.math3.linear.RealVector p)
|p|_max = max(|x|,|y|,|z|)- パラメータ:
p
- point data- 戻り値:
- |p|_max
-
expansionRate_linea
private double expansionRate_linea(double x)
拡大率の計算 オリジナル- パラメータ:
x
- 正規化された点の評価値- 戻り値:
- α(x) 値
-
expansionRate2
private double expansionRate2(double x)
拡大率の計算 2次曲線 2021.05.04- パラメータ:
x
- 正規化された点の評価値- 戻り値:
- α(x) 値
-
getExpansionFactor
private double getExpansionFactor(org.apache.commons.math3.linear.RealVector p)
拡張係数のみを計算する。- パラメータ:
p
- 点情報- 戻り値:
- 拡張係数(alpha
-
doExpansion
private org.apache.commons.math3.linear.RealVector doExpansion(org.apache.commons.math3.linear.RealVector p)
pointの拡張 蜘蛛の巣処理
原点とのオフセット・正規化、拡張係数による拡大、
正規化の戻し+原点のリセット
β(|(p-p0)/cuboid|max) ((p-p0)/cuboid)+p0- パラメータ:
p
- 対象点- 戻り値:
- 拡張点
-
getMinValueP_P0DividedByCuboid
private org.apache.commons.math3.linear.RealVector getMinValueP_P0DividedByCuboid()
p_p0|x/cuboid_x ...の最小値を求める- 戻り値:
- p_p0/cuboidの最小値
-
getMaxValueP_P0DividedByCuboid
private org.apache.commons.math3.linear.RealVector getMaxValueP_P0DividedByCuboid()
p_p0|x/cuboid_x ... の最大値を求める- 戻り値:
- p_p0/cuboidの最大値
-
expansionRate
private double expansionRate(double mx, double x, int id)
x-方向の拡大係数 α_xを計算する。
p_p0/cuboid _x < 0 のとき
|p_p0/cuboid|_max > |getMinValueP_P0DividedByCuboid(x)|であればx方向の倍率はα_x= α(|getMinValueP_P0DividedByCuboid(x)|)を用いる。
それ以外は α_maxを用いる
p_p0/cuboid_x >= 0のとき
|p_p0/cuboid|_max > |getMaxValueP_P0DividedByCuboid| であればx方向の倍率はα_x=α(|getMaxValueP_P0DividedByCuboid(x)|)を用いる。- パラメータ:
mx
- |p_p0/cuboid|_maxx
- p-p0/cuboid|x|id
- 0:x 1:y 2:z- 戻り値:
- α_x
-
doExpansionNoCube
private org.apache.commons.math3.linear.RealVector doExpansionNoCube(org.apache.commons.math3.linear.RealVector p)
pointの拡張 (非立方体)
p_p0/cuboid _x < 0 のとき |p_p0/cuboid|_max >
|getMinValueP_P0DividedByCuboid|であればx方向の倍率はα_xを用いる。
p_p0/cuboid_x >= 0のとき |p_p0/cuboid|_max > |getMaxValueP_P0DividedByCuboid|
であればx方向の倍率はα_xを用いる。- パラメータ:
p
- 対象点- 戻り値:
- 拡張点
-
readPointsFileAsParameterSet
private void readPointsFileAsParameterSet() throws java.io.IOException
入力pointsデータの呼び込み(1回目)
パラメータファイルを呼び込むようになったので、
データ確認程度
poinrtsファイルからmax min情報を取得- 例外:
java.io.IOException
- ファイルオープンエラー
-
readParameterFile
private void readParameterFile() throws java.io.IOException
Read Parameter File- 例外:
java.io.IOException
- ファイルオープンエラー
-
checkParam
private void checkParam()
パラメータの検証
-
setDelta
private void setDelta()
delta_x の設定
-
print
void print(java.lang.String name, org.apache.commons.math3.linear.RealVector p)
print Point 点情報の印刷- パラメータ:
name
- 名前p
- 点
-
printMinMaxDivDelta
private void printMinMaxDivDelta()
print max_min val
-
get3CellPoints
private org.apache.commons.math3.linear.RealVector[] get3CellPoints(org.apache.commons.math3.linear.RealVector p)
get3CellPoints- パラメータ:
p
- corner point- 戻り値:
- 他の3点 rtn[0] +delta_x ,rtn[1] +delta_y ,rtn[2]
-
get3dRealVector
private org.apache.commons.math3.linear.RealVector get3dRealVector(double x, double y, double z)
getRealVector- パラメータ:
x
- x-値y
- y-値z
- z-値- 戻り値:
- realvector(x,y,z)
-
doCalculateCellsDistortion
private void doCalculateCellsDistortion(java.lang.String badCellPointsFilePath)
歪度を各点すべてに計算する。
しきい値以上のセルは、badCellPointsFileに書き込む。- パラメータ:
badCellPointsFilePath
- badCellPointsFilePathへのファイルパス
-
doCalculateCellsRatio
private void doCalculateCellsRatio(java.lang.String badCellPointsFilePath)
歪度を各点すべてに計算する。
しきい値以上のセルは、badCellPointsFileに書き込む。- パラメータ:
badCellPointsFilePath
- badCellPointFileへのファイルパス
-
getPointFromKey
org.apache.commons.math3.linear.RealVector getPointFromKey(int key)
distortion mapのkey 情報から点情報を返す。
前提:min max情報および、diff情報が設定されていること。- パラメータ:
key
- マップキー情報- 戻り値:
- 点情報
-
getIdxFromKey
int[] getIdxFromKey(int key)
key 情報から(i,j,k)情報を返す。
前提:min max情報および、diff情報が設定されていること。- パラメータ:
key
- マップキー情報- 戻り値:
- (i,j,k)
-
main
public static void main(java.lang.String[] arg)
main- パラメータ:
arg
- 設定しない
-
-