001
002package org.opengion.penguin.math;
003
004
005/**
006 * HybsGeneticAlgorithmで取り扱うデータ用の実装クラスです。
007 * 
008 * ある程度標準的に利用できるようにで、名称、属性値(実数)、属性値(文字列)、属性値配列(実数)、属性値配列(文字列)を持ちます。
009 *
010 */
011public class HybsGAObjectImpl implements HybsGAObject {
012        private String name;            // 名称
013        private double attr;            // 属性値(実数)
014        private String attrStr;         // 属性値(文字列)
015        private double[] attrArray;     // 属性値配列(実数)
016        private String[] attrStrArray; // 属性値配列(文字列)
017        
018
019        /**
020         * コンストラクタ
021         * @param name 名称
022         * @param attr 属性値(実数)
023         */
024        public HybsGAObjectImpl (final String name, final double attr){
025                this( name, attr, null, null,null);
026        }
027        
028        /**
029         * コンストラクタ
030         * @param name 名称
031         * @param attr 属性値(実数)
032         * @param attrArray  属性値配列(実数)
033         */
034        public HybsGAObjectImpl (final String name, final double attr, final double[] attrArray){
035                this( name, attr, null, attrArray, null);
036        }
037        
038        /**
039         * コンストラクタ
040         * @param name 名称
041         * @param attr 属性値(実数)
042         * @param attrStr 属性値(文字)
043         * @param attrArray  属性値配列(実数)
044         */
045        public HybsGAObjectImpl (final String name, final double attr, final String attrStr, final double[] attrArray){
046                this( name, attr, null, attrArray, null);
047        }
048        
049        /**
050         * コンストラクタ
051         * @param name 名称
052         * @param attr 属性値(実数)
053         * @param attrStr 属性値(文字)
054         * @param attrStrArray 属性値配列(文字)
055         */
056        public HybsGAObjectImpl (final String name, final double attr, final String attrStr, final String[] attrStrArray){
057                this( name, attr, null, null, attrStrArray);
058        }
059        
060        /**
061         * コンストラクタ
062         * @param name 名称
063         * @param attr 属性値(実数)
064         * @param attrStr 属性値(文字)
065         * @param attrArray  属性値配列(実数)
066         * @param attrStrArray 属性値配列(文字)
067         */
068        public HybsGAObjectImpl (final String name, final double attr, final String attrStr, final double[] attrArray, final String[] attrStrArray){
069                this.name = name;
070                this.attr = attr;
071                this.attrStr = attrStr;
072                this.attrArray = attrArray;
073                this.attrStrArray = attrStrArray;
074        }
075        
076        // インタフェイスによる必須メソッド
077        /**
078         * フィットネス用に利用する値
079         * 属性値(実数)を返す
080         */
081        public double getFitness(){
082                return attr;
083        }
084        
085        /**
086         * 文字列表現
087         * [名称]([属性値(実数)])
088         */
089        public String toString(){
090                return name + "(" + attr + ")";
091        }
092        
093        /**
094         * 名称セット
095         * @param name 名称
096         */
097        public void setName (final  String name ){
098                this.name = name;
099        }
100        
101        /**
102         * 名称取得
103         * @return 名称
104         */
105        public String getName (){
106                return this.name;
107        }
108        
109        /**
110         * 属性値セット
111         * @param attr 属性値
112         */
113        public void setAttr (final  double attr ){
114                this.attr = attr;
115        }
116        
117        /**
118         * 属性値取得
119         * @return 属性値(数値)
120         */
121        public double getAttr (){
122                return this.attr;
123        }
124        
125        /**
126         * 属性値(文字)セット
127         * @param attrStr 属性値(文字)
128         */
129        public void setAttrStr (final  String attrStr ){
130                this.attrStr = attrStr;
131        }
132        
133        /**
134         * 属性値(文字)取得
135         * @return 属性値(文字)
136         */
137        public String getAttrStr (){
138                return this.attrStr;
139        }
140        
141        /**
142         * 属性値配列セット
143         * @param attrArray 属性値配列
144         */
145        public void setAttrArray (final  double[] attrArray ){
146                this.attrArray = attrArray;
147        }
148        
149        /**
150         * 属性値配列取得
151         * @return 属性値配列
152         */
153        public double[] getAttrArray (){
154                return this.attrArray;
155        }
156        
157        /**
158         * 属性値配列(文字)セット
159         * @param attrStrArray 属性値配列(文字)
160         */
161        public void setAttrStrArray (final  String[] attrStrArray ){
162                this.attrStrArray = attrStrArray;
163        }
164        
165        /**
166         * 属性値配列(文字)取得
167         * @return 属性値配列(文字)
168         */
169        public String[] getAttrStrArray (){
170                return this.attrStrArray;
171        }
172}