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         *
099         * @return フィットネス用に利用する値
100         */
101        @Override       // HybsGAObject
102        public double getFitness(){
103                return attr;
104        }
105
106        /**
107         * 文字列表現。
108         *
109         * [名称]([属性値(実数)])
110         *
111         * @return 文字列表現
112         */
113        @Override
114        public String toString(){
115                return name + "(" + attr + ")";
116        }
117
118        /**
119         * 名称セット。
120         *
121         * @param name 名称
122         */
123        public void setName (final  String name ){
124                this.name = name;
125        }
126
127        /**
128         * 名称取得。
129         *
130         * @return 名称
131         */
132        public String getName (){
133                return this.name;
134        }
135
136        /**
137         * 属性値セット。
138         *
139         * @param attr 属性値
140         */
141        public void setAttr (final  double attr ){
142                this.attr = attr;
143        }
144
145        /**
146         * 属性値取得。
147         *
148         * @return 属性値(数値)
149         */
150        public double getAttr (){
151                return this.attr;
152        }
153
154        /**
155         * 属性値(文字)セット。
156         *
157         * @param attrStr 属性値(文字)
158         */
159        public void setAttrStr (final  String attrStr ){
160                this.attrStr = attrStr;
161        }
162
163        /**
164         * 属性値(文字)取得。
165         *
166         * @return 属性値(文字)
167         */
168        public String getAttrStr (){
169                return this.attrStr;
170        }
171
172        /**
173         * 属性値配列セット。
174         *
175         * @param attrArray 属性値配列
176         */
177        public void setAttrArray (final  double[] attrArray ){
178                this.attrArray = attrArray;
179        }
180
181        /**
182         * 属性値配列取得。
183         *
184         * @return 属性値配列
185         */
186        public double[] getAttrArray (){
187                return this.attrArray;
188        }
189
190        /**
191         * 属性値配列(文字)セット。
192         *
193         * @param attrStrArray 属性値配列(文字)
194         */
195        public void setAttrStrArray (final  String[] attrStrArray ){
196                this.attrStrArray = attrStrArray;
197        }
198
199        /**
200         * 属性値配列(文字)取得。
201         *
202         * @return 属性値配列(文字)
203         */
204        public String[] getAttrStrArray (){
205                return this.attrStrArray;
206        }
207}