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, attrStr, attrArray, null);
047        }
048
049        /**
050         * コンストラクタ。
051         * 
052         * @param name 名称
053         * @param attr 属性値(実数)
054         * @param attrStr 属性値(文字)
055         * @param attrStrArray 属性値配列(文字)
056         */
057        public HybsGAObjectImpl (final String name, final double attr, final String attrStr, final String[] attrStrArray){
058                this( name, attr, attrStr, null, attrStrArray);
059        }
060
061        /**
062         * コンストラクタ。
063         * 
064         * @param name 名称
065         * @param attr 属性値(実数)
066         * @param attrStr 属性値(文字)
067         * @param attrArray  属性値配列(実数)
068         * @param attrStrArray 属性値配列(文字)
069         */
070        public HybsGAObjectImpl (final String name, final double attr, final String attrStr, final double[] attrArray, final String[] attrStrArray){
071                this.name = name;
072                this.attr = attr;
073                this.attrStr = attrStr;
074                this.attrArray = attrArray;
075                this.attrStrArray = attrStrArray;
076        }
077
078        // インタフェイスによる必須メソッド。
079        /**
080         * フィットネス用に利用する値。
081         * 
082         * 属性値(実数)を返す
083         *
084         * @return フィットネス用に利用する値
085         */
086        public double getFitness(){
087                return attr;
088        }
089
090        /**
091         * 文字列表現。
092         * 
093         * [名称]([属性値(実数)])
094         *
095         * @return 文字列表現
096         */
097        @Override
098        public String toString(){
099                return name + "(" + attr + ")";
100        }
101
102        /**
103         * 名称セット。
104         * 
105         * @param name 名称
106         */
107        public void setName (final  String name ){
108                this.name = name;
109        }
110
111        /**
112         * 名称取得。
113         * 
114         * @return 名称
115         */
116        public String getName (){
117                return this.name;
118        }
119
120        /**
121         * 属性値セット。
122         * 
123         * @param attr 属性値
124         */
125        public void setAttr (final  double attr ){
126                this.attr = attr;
127        }
128
129        /**
130         * 属性値取得。
131         * 
132         * @return 属性値(数値)
133         */
134        public double getAttr (){
135                return this.attr;
136        }
137
138        /**
139         * 属性値(文字)セット。
140         * 
141         * @param attrStr 属性値(文字)
142         */
143        public void setAttrStr (final  String attrStr ){
144                this.attrStr = attrStr;
145        }
146
147        /**
148         * 属性値(文字)取得。
149         * 
150         * @return 属性値(文字)
151         */
152        public String getAttrStr (){
153                return this.attrStr;
154        }
155
156        /**
157         * 属性値配列セット。
158         * 
159         * @param attrArray 属性値配列
160         */
161        public void setAttrArray (final  double[] attrArray ){
162                this.attrArray = attrArray;
163        }
164
165        /**
166         * 属性値配列取得。
167         * 
168         * @return 属性値配列
169         */
170        public double[] getAttrArray (){
171                return this.attrArray;
172        }
173
174        /**
175         * 属性値配列(文字)セット。
176         * 
177         * @param attrStrArray 属性値配列(文字)
178         */
179        public void setAttrStrArray (final  String[] attrStrArray ){
180                this.attrStrArray = attrStrArray;
181        }
182
183        /**
184         * 属性値配列(文字)取得。
185         * 
186         * @return 属性値配列(文字)
187         */
188        public String[] getAttrStrArray (){
189                return this.attrStrArray;
190        }
191}