    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}