
ã¯ããã«
åãã¾ãã¦ãä»å¹´åº¦SEã¨ãã¦NRIãããã³ã ã«å ¥ç¤¾ãã竹å ã§ãã çç©ç³»ã®å¦ç§ã忥ãã¦ITã®ä¸çã«é£ã³è¾¼ãã§ããããããã1å¹´ã«ãªãã¾ãã
忥ç ç©¶ã§ã¯Javaã使ã£ã¦çç©ã®é²åãã·ãã¥ã¬ã¼ã·ã§ã³ããããã°ã©ã ã使ããã»ã¨ãã©ç¬å¦ã§ãåºã¦ã»ããçµæãåºãã³ã¼ãããæ¸ããããã«ãªãã¾ããã
ããããå ¥ç¤¾å¾ã®Javaç ä¿®ã§ã¯ä»ã¾ã§èãããã¨ã®ãªãã£ãææ³ãæ¬¡ã ã«å¦ã³ããã³ã¼ããæ¸ãã®ã«æ¬å½ã«ãããªé¢åãªã«ã¼ã«ãå¿ è¦ãªã®ï¼ãã¨æã£ãã®ãè¦ãã¦ãã¾ãã
ãããªç§ã®èããå¤ããã®ããä¿å®æ§ãã¨ããè¨èã§ããã
å®éã«Javaã§ã³ã¼ããæ¸ããã¬ãã¥ã¼ãåããä¸ã§ããã®ãé¢åãªã«ã¼ã«ããããä¿å®æ§ãæ ä¿ããããã«å¿ è¦ã§ããããã¼ã éçºã«æ¬ ãããªããã®ã ã¨æ°ä»ããã®ã§ãã
ãã®è¨äºã§ã¯ãç§ãå¤§å¦æä»£ã«æ¸ããã³ã¼ãã®å¤±æãä¾ã«ããã¼ã éçºã«ãããä¿å®æ§ã®éè¦æ§ã¨ãããé«ããããã®å ·ä½çãªãã¤ã³ããç´¹ä»ãã¾ãã
â»Javaã顿ã¨ãã¦ãã¾ãããä»è¨èªã«ãå¿ç¨å¯è½ãªå 容ã«ãªã£ã¦ãã¾ãã
ä¿å®æ§ã¨ã¯ï¼
ä¿å®æ§ã¨ã¯ãã³ã¼ãããçè§£ãããããä¿®æ£ãããããæ¡å¼µãããããç¶æ ã«ä¿ã¤ãã¨ã§ãã
ãã¼ã éçºã§ã¯1ã¤ã®ã³ã¼ãã«å¯¾ãã¦è¤æ°äººãã¬ãã¥ã¼ã»ä¿®æ£ãè¡ãã¾ããã¾ãã仿§å¤æ´ããã°ä¿®æ£ã¯å¿ ãçºçãããã®ã§ãã
ãã®ããã人ã«èªã¾ããã»ä¿®æ£ããããã¨ãåæã¨ãã¦ã³ã¼ããæ¸ãå¿ è¦ãããã¾ãã
ä¿å®æ§ãä½ãã³ã¼ãã¯çè§£ãã«ãããä¿®æ£ã«æéããããããã°ãå¢ããéçºã³ã¹ããè¨ããåå ã«ãªãã¾ãã
ãããããã åãã¦çµæãåºãã³ã¼ããæ¸ãã°ããã£ã大妿代ã¨ã®å¤§ããªéãã§ããã
ããããã¯ãç§ãç ä¿®ã§å¦ãã ä¿å®æ§ãé«ããææ³ã«ã¤ãã¦ç´¹ä»ãã¾ãã
ä¿å®æ§ãé«ããææ³
å½åè¦å
夿°åãã¡ã½ããåã¯ãã³ã¼ããèªã人ããä½ã表ãã¦ãããããä¸ç®ã§çè§£ã§ããããã«ãããã¨ãéè¦ã§ãã
ã¾ããå½åãè¦ååãããã¨ã§ã³ã¼ãå ¨ä½ã®ä¸è²«æ§ãä¿ãããã¬ãã¥ã¼ãä¿®æ£ããããããªãã¾ãã
å½åã®ãã¤ã³ã
æå³ãä¼ãããªãååã¯é¿ãã
å½åã¹ã¿ã¤ã«ãçµ±ä¸ããï¼ã¡ã½ããã»ã¡ã³ã夿°ã¯ãã£ã¡ã«ã±ã¼ã¹ãçï¼
ã¡ã½ããåã¯åè©ã§å§ããåä½ãæ¨æ¸¬ã§ãããã®ã«ãã
ãªã¹ãåã¯æ«å°¾ã«Listãã¤ãã
ç§ã®å¤±æ
for æã®ã¤ã³ããã¯ã¹ã i, j, k ...ã¨ãã¦ãã
âã©ã®ã¤ã³ããã¯ã¹ãä½ã®ã«ã¼ãã表ãããããã«ãã
âå ¥ãåæ§é ãä¿®æ£ããéã¯ã¤ã³ããã¯ã¹ãæ¯ããªããå¿ è¦ããããä¿®æ£ã³ã¹ãã大ãã
for (int i = 0; i < chromosomes.length; i++) { for (int j = 0; j < genes.length; j++) { //å¦ç } }
解決ç
ã¤ã³ããã¯ã¹ãå«ããå ¨ã¦ã®å¤æ°ãæå³ã®ããååã«ãã
for (int chrIndex = 0; chrIndex < chromosomes.length; chrIndex++) { for (int geneIndex = 0; geneIndex < genes.length; geneIndex++) { //ã¤ã³ããã¯ã¹ãä½ãæããä¸ç®ã§ããã //å¦ç } }
ã¡ã½ããåãåºããå ±éå
ä½åº¦ãåºã¦ããå¦çã¯ã¡ã½ããåãããã¨ã§ã³ã¼ããç°¡æ½ã«ãªããçè§£ãããããªãã ãã§ãªããè¤æ°å使ãã¾ãããã¨ãã§ãã¾ãã
ããã«ãè¨è¼ã®éè¤ãæ¸ããããä¿®æ£æã¯è©²å½ã¡ã½ããã ãã夿´ããã°ããç¶æ ã«ãªãã¾ããããã«ããããã°çºçã®ãªã¹ã¯ãæ¸ãããã¨ãã§ãã¾ãã
ã¡ã½ããåãåºãã®ãã¤ã³ã
ã¡ã½ããå ã«å¦çãå¤ãã¨ãã¯åãåºãã¦ã¡ã½ããåãã
1ã¤ã®ã¡ã½ããã¯1ã¤ã®è²¬åã«çµã
ä¼¼ã¦ããå¦çã¯å¼æ°ã工夫ãã¦å ±éåãã
ç§ã®å¤±æ
ã¡ã½ãããä½ãããå ¨ã¦ã®å¦çãã¡ã¤ã³ã¡ã½ããã«æ¸ãã¦ãã
âãããã¸ãã¯ã夿´ãããã¨ããã©ãããã©ãã¾ã§ä¿®æ£ããã°ãããããããªã
âåããããªå¦çãè¤æ°ååºã¦ãã¦èªã¿ã«ãã
//ä¼¼ãå¦çãè¤æ°ååºã¦ãã for (int geneIndex = 0; geneIndex < genes.length; geneIndex++) { chromosome1[geneIndex]=0; } for (int geneIndex = 0; geneIndex < genes.length; geneIndex++) { chromosome2[geneIndex]=1; }
解決ç
ä¼¼ã¦ããå¦çãè¤æ°ååºã¦ããã¨ãã¯ã¡ã½ããã¨ãã¦åãåºããå ±éåãã
//å¦çã使ãã¾ãã initializeChromosome(chromosome1, 0); initializeChromosome(chromosome2, 1); //å ±éåããã¡ã½ãã public void initializeChromosome(int[] chromosome, int gene) { for (int geneIndex = 0; geneIndex < chromosome.length; geneIndex++) { chromosome[geneIndex] = gene; } }
宿°å
æ°åã¯ãã¿ã«æ¸ãããå¿ ã宿°åãã¦ä¸ç®ã§ãããããã«æå³ããããã¾ãã
宿°ã¨ã¯ãä¸åº¦è¨å®ããã¨å¤æ´ã§ããªãå¤ã®ãã¨ã§ãfinal修飾åãä»ä¸ãã¦è¡¨ãã¾ãã
æ°åã夿´ãããå ´åã¯ã宿°ã夿´ããã ãã§ã³ã¼ãå ¨ä½ã䏿¬ã§ä¿®æ£ãããã¨ãã§ãã¾ãã
宿°åã®ãã¤ã³ã
ã»æ°åã¯final修飾åãä»ä¸ãã大æåã¹ãã¼ã¯ã±ã¼ã¹ã§å®æ°åãã
ã»ã«ã¼ãåæ°ãé åã®é·ãã¯å®æ°åããæ°åã使ã£ã¦æå®ãã
ç§ã®å¤±æ
é åã®é·ããã«ã¼ãåæ°ã«ç´æ¥æ°åã使ã£ã¦ãã
â æ°åãä½ãæå³ãã¦ããã®ãä¸ç®ã§ããããªã
â æ°åã夿´ãããã¨ããä»ã®ç®æã«åãæå³ã®æ°åãããã°ãã¹ã¦ä¿®æ£ããå¿ è¦ããã
int[] chromosome = new int[1000];//1000ãä½ãè¡¨ãæ°åãããããªã
解決ç
ã«ã¼ãåæ°ãé åã®é·ãã¯å®æ°åããæ°åã使ã£ã¦æå®ãã
public static final int GENES_PER_CHROMOSOME = 1000; int[] chromosome = new int[GENES_PER_CHROMOSOME];//æè²ä½(chromosome)ã¯1000ã®éºä¼å(gene)ããæãé åã ã¨ããã
åæåï¼Enum
ææ¥ãå¹²æ¯ã®ãããªãããããæ±ºã¾ã£ãå¤ã®éåã¯ãEnumã§å®ç¾©ãããã¨ã§æå³ã®ããååã§ç®¡çãããã¨ãã§ããééã£ãå¤ã使ããã¨ãé²ããã¨ãã§ãã¾ããEnumã®ä¸ã§åæãããå¤ã¯ã¯ã©ã¹åæåæã«1ã¤ãã¤ã¤ã³ã¹ã¿ã³ã¹ãçæããããã®ã¤ã³ã¹ã¿ã³ã¹ãåç §ããå½¢ã§å ±æããã¾ãã
Enumã®ãã¤ã³ã
public修飾åãã¤ãã1ã¤ã®ãã¡ã¤ã«å ã«åé¢ããã¨ä»ã¯ã©ã¹ãã使ãããã
ãã£ã¼ã«ãã¯finalãã³ã³ã¹ãã©ã¯ã¿ã¯privateã«ãã¦ãä¸åº¦å®ç¾©ãããå¤ã夿´ãããªãããã«ãã
getterã使ããå®å ¨ã«æ å ±ã«ã¢ã¯ã»ã¹ã§ããããã«ãã
ç§ã®å¤±æ
ééãéºä¼åã®ç¨®é¡ãæ°åï¼intåï¼ã§ç®¡çãã¦ãã
âã©ã®æ°åãä½ã表ããä¸ç®ã§ããããªã
âæåã§åºåãããå ´åãæ°åãæåã«å¤æããå¦çãå¥éå®è£ ããå¿ è¦ããã
int geneType = 0; //ã³ã¡ã³ãããªãã¨ä½ã表ããããããªã
解決ç
å¤ã®éåã¯Enumã§ååãã¤ãã¦ç®¡çãã
Gene geneType = Gene.X; // ä¸ç®ã§æå³ãããã
public enum Gene { X(0, "Xæè²ä½"), Y(1, "Yæè²ä½"), ããO(2, "ãªã"); private final int code; private final String label; private Gene(int code, String label) { this.code = code; this.label = label; } public String getLabel() { //æåã§åºåããgetter return label; } public int getCode() { //æ°åã§åºåããgetter return code; } }
ãããã«
ä¸è¦é¢åãªã«ã¼ã«ã«æããããããã¾ããããä»åç´¹ä»ãã工夫ãåãå ¥ãããã¨ã§é·æçã«ä¿å®ããããã³ã¼ããæ¸ããã¨ãã§ãã¾ãã
æå¾ã«ä½è«ã§ããããã®æ°ã¥ãã忥ç ç©¶ã®å çã«ã話ãããæ©ä¼ãããã¾ããã
ãã®ã¨ãå çã¯ããã£ã¨æ°ã¥ãããï¼ã¨ç¬ããªãããã
ãæåã¯ã©ããªã³ã¼ãã§ãåãããã°ãããæ°ã¥ãã¦å¾ããç´ãã°ãããã ãããã
ã¨è¨ã£ã¦ãã ããã¾ããã
ãã®è¨èã§ãåãã ãã®ã³ã¼ããç®æãã¦ããææãç¡é§ã§ã¯ãªããæ¬¡ã®ã¹ãããã¨ãã¦ä¿å®æ§ãæèãã¦åãå ¥ããæé·ããããã»ã¹ã大åã ã¨æãã¾ããã
ç§ã¨åãæ°äººSEãããããSEãç®æãã¨ããæ¹ãããªãã¨ãªãæ¸ãããã©ãã䏿©å ã«é²ã¿ããï¼ãã¨ããæ¹ã®åèã«ãªãã°å¹¸ãã§ãã