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