001/*
002 * Copyright (c) 2009 The openGion Project.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *     http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
013 * either express or implied. See the License for the specific language
014 * governing permissions and limitations under the License.
015 */
016package org.opengion.penguin.math.ga;
017
018/**
019 * HybsGeneticAlgorithmで取り扱うデータ用の実装クラスです。
020 *
021 * ある程度標準的に利用できるようにで、名称、属性値(実数)、属性値(文字列)、属性値配列(実数)、属性値配列(文字列)を持ちます。
022 *
023 */
024public class HybsGAObjectImpl implements HybsGAObject {
025        private String name;            // 名称
026        private double attr;            // 属性値(実数)
027        private String attrStr;         // 属性値(文字列)
028        private double[] attrArray;     // 属性値配列(実数)
029        private String[] attrStrArray; // 属性値配列(文字列)
030
031        /**
032         * コンストラクタ。
033         *
034         * @param name 名称
035         * @param attr 属性値(実数)
036         */
037        public HybsGAObjectImpl (final String name, final double attr){
038                this( name, attr, null, null,null);
039        }
040
041        /**
042         * コンストラクタ。
043         *
044         * @param name 名称
045         * @param attr 属性値(実数)
046         * @param attrArray  属性値配列(実数)
047         */
048        public HybsGAObjectImpl (final String name, final double attr, final double[] attrArray){
049                this( name, attr, null, attrArray, null);
050        }
051
052        /**
053         * コンストラクタ。
054         *
055         * @param name 名称
056         * @param attr 属性値(実数)
057         * @param attrStr 属性値(文字)
058         * @param attrArray  属性値配列(実数)
059         */
060        public HybsGAObjectImpl (final String name, final double attr, final String attrStr, final double[] attrArray){
061                this( name, attr, attrStr, attrArray, null);
062        }
063
064        /**
065         * コンストラクタ。
066         *
067         * @param name 名称
068         * @param attr 属性値(実数)
069         * @param attrStr 属性値(文字)
070         * @param attrStrArray 属性値配列(文字)
071         */
072        public HybsGAObjectImpl (final String name, final double attr, final String attrStr, final String[] attrStrArray){
073                this( name, attr, attrStr, null, attrStrArray);
074        }
075
076        /**
077         * コンストラクタ。
078         *
079         * @param name 名称
080         * @param attr 属性値(実数)
081         * @param attrStr 属性値(文字)
082         * @param attrArray  属性値配列(実数)
083         * @param attrStrArray 属性値配列(文字)
084         */
085        public HybsGAObjectImpl (final String name, final double attr, final String attrStr, final double[] attrArray, final String[] attrStrArray){
086                this.name = name;
087                this.attr = attr;
088                this.attrStr = attrStr;
089                this.attrArray = attrArray;
090                this.attrStrArray = attrStrArray;
091        }
092
093        /**
094         * フィットネス用に利用する値。
095         *
096         * 属性値(実数)を返す
097         *
098         * @return フィットネス用に利用する値
099         */
100        @Override       // HybsGAObject
101        public double getFitness(){
102                return attr;
103        }
104
105        /**
106         * 文字列表現。
107         *
108         * [名称]([属性値(実数)])
109         *
110         * @return 文字列表現
111         */
112        @Override
113        public String toString(){
114                return name + "(" + attr + ")";
115        }
116
117        /**
118         * 名称セット。
119         *
120         * @param name 名称
121         */
122        public void setName (final  String name ){
123                this.name = name;
124        }
125
126        /**
127         * 名称取得。
128         *
129         * @return 名称
130         */
131        public String getName (){
132                return this.name;
133        }
134
135        /**
136         * 属性値セット。
137         *
138         * @param attr 属性値
139         */
140        public void setAttr (final  double attr ){
141                this.attr = attr;
142        }
143
144        /**
145         * 属性値取得。
146         *
147         * @return 属性値(数値)
148         */
149        public double getAttr (){
150                return this.attr;
151        }
152
153        /**
154         * 属性値(文字)セット。
155         *
156         * @param attrStr 属性値(文字)
157         */
158        public void setAttrStr (final  String attrStr ){
159                this.attrStr = attrStr;
160        }
161
162        /**
163         * 属性値(文字)取得。
164         *
165         * @return 属性値(文字)
166         */
167        public String getAttrStr (){
168                return this.attrStr;
169        }
170
171        /**
172         * 属性値配列セット。
173         *
174         * @param attrArray 属性値配列
175         */
176        public void setAttrArray (final  double[] attrArray ){
177                this.attrArray = attrArray;
178        }
179
180        /**
181         * 属性値配列取得。
182         *
183         * @return 属性値配列
184         */
185        public double[] getAttrArray (){
186                return this.attrArray;
187        }
188
189        /**
190         * 属性値配列(文字)セット。
191         *
192         * @param attrStrArray 属性値配列(文字)
193         */
194        public void setAttrStrArray (final  String[] attrStrArray ){
195                this.attrStrArray = attrStrArray;
196        }
197
198        /**
199         * 属性値配列(文字)取得。
200         *
201         * @return 属性値配列(文字)
202         */
203        public String[] getAttrStrArray (){
204                return this.attrStrArray;
205        }
206}