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