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