001 002package org.opengion.penguin.math; 003 004 005/** 006 * HybsGeneticAlgorithmで取り扱うデータ用の実装クラスです。 007 * 008 * ある程度標準的に利用できるようにで、名称、属性値(実数)、属性値(文字列)、属性値配列(実数)、属性値配列(文字列)を持ちます。 009 * 010 */ 011public class HybsGAObjectImpl implements HybsGAObject { 012 private String name; // 名称 013 private double attr; // 属性値(実数) 014 private String attrStr; // 属性値(文字列) 015 private double[] attrArray; // 属性値配列(実数) 016 private String[] attrStrArray; // 属性値配列(文字列) 017 018 019 /** 020 * コンストラクタ 021 * @param name 名称 022 * @param attr 属性値(実数) 023 */ 024 public HybsGAObjectImpl (final String name, final double attr){ 025 this( name, attr, null, null,null); 026 } 027 028 /** 029 * コンストラクタ 030 * @param name 名称 031 * @param attr 属性値(実数) 032 * @param attrArray 属性値配列(実数) 033 */ 034 public HybsGAObjectImpl (final String name, final double attr, final double[] attrArray){ 035 this( name, attr, null, attrArray, null); 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 } 048 049 /** 050 * コンストラクタ 051 * @param name 名称 052 * @param attr 属性値(実数) 053 * @param attrStr 属性値(文字) 054 * @param attrStrArray 属性値配列(文字) 055 */ 056 public HybsGAObjectImpl (final String name, final double attr, final String attrStr, final String[] attrStrArray){ 057 this( name, attr, null, null, attrStrArray); 058 } 059 060 /** 061 * コンストラクタ 062 * @param name 名称 063 * @param attr 属性値(実数) 064 * @param attrStr 属性値(文字) 065 * @param attrArray 属性値配列(実数) 066 * @param attrStrArray 属性値配列(文字) 067 */ 068 public HybsGAObjectImpl (final String name, final double attr, final String attrStr, final double[] attrArray, final String[] attrStrArray){ 069 this.name = name; 070 this.attr = attr; 071 this.attrStr = attrStr; 072 this.attrArray = attrArray; 073 this.attrStrArray = attrStrArray; 074 } 075 076 // インタフェイスによる必須メソッド 077 /** 078 * フィットネス用に利用する値 079 * 属性値(実数)を返す 080 */ 081 public double getFitness(){ 082 return attr; 083 } 084 085 /** 086 * 文字列表現 087 * [名称]([属性値(実数)]) 088 */ 089 public String toString(){ 090 return name + "(" + attr + ")"; 091 } 092 093 /** 094 * 名称セット 095 * @param name 名称 096 */ 097 public void setName (final String name ){ 098 this.name = name; 099 } 100 101 /** 102 * 名称取得 103 * @return 名称 104 */ 105 public String getName (){ 106 return this.name; 107 } 108 109 /** 110 * 属性値セット 111 * @param attr 属性値 112 */ 113 public void setAttr (final double attr ){ 114 this.attr = attr; 115 } 116 117 /** 118 * 属性値取得 119 * @return 属性値(数値) 120 */ 121 public double getAttr (){ 122 return this.attr; 123 } 124 125 /** 126 * 属性値(文字)セット 127 * @param attrStr 属性値(文字) 128 */ 129 public void setAttrStr (final String attrStr ){ 130 this.attrStr = attrStr; 131 } 132 133 /** 134 * 属性値(文字)取得 135 * @return 属性値(文字) 136 */ 137 public String getAttrStr (){ 138 return this.attrStr; 139 } 140 141 /** 142 * 属性値配列セット 143 * @param attrArray 属性値配列 144 */ 145 public void setAttrArray (final double[] attrArray ){ 146 this.attrArray = attrArray; 147 } 148 149 /** 150 * 属性値配列取得 151 * @return 属性値配列 152 */ 153 public double[] getAttrArray (){ 154 return this.attrArray; 155 } 156 157 /** 158 * 属性値配列(文字)セット 159 * @param attrStrArray 属性値配列(文字) 160 */ 161 public void setAttrStrArray (final String[] attrStrArray ){ 162 this.attrStrArray = attrStrArray; 163 } 164 165 /** 166 * 属性値配列(文字)取得 167 * @return 属性値配列(文字) 168 */ 169 public String[] getAttrStrArray (){ 170 return this.attrStrArray; 171 } 172}