    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        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}