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}