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