|
Á¦ ¸ñ |
[RE][RE]Àǵµ´ë·Î ±¸ÇöµÇ¾ú´ÂÁö °ËÅä°¡ ÇÊ¿äÇÕ´Ï´Ù |
|
ÀÛ¼ºÀÚ |
Àӽºó |
ÀÛ¼ºÀÏ |
2008-03-13 |
Á¶È¸¼ö |
1377 ȸ |
|
÷ºÎÆÄÀÏ |
÷ºÎµÈ ÆÄÀϾøÀ½.
|
|
¾È³çÇϼ¼¿ä.
º¸³»ÁֽŠ¼Ò½º¿¡ array ÂüÁ¶ ¿¡·¯°¡ ÀÖ½À´Ï´Ù.
void createGraph(IloEnv env, char * nodeFileName); ¸Þ¼µå ºÎºÐ¿¡ ÇÊ¿¬ÀûÀ¸·Î ¿¡·¯°¡ ¹ß»ýÇÏ°Ô ±¸¼ºµÇ¾îÀÖ½À´Ï´Ù.
/////////////////////////////////////////// // Generate Distance between Nodes
for(IloInt i=0; i < nbNodes ; i++){ node[i].distance = IloNumArray(env, nbNodes); for(IloInt j =0; j <= nbNodes ; j++){ double dist = (node[i].x - node[j].x )*(node[i].x - node[j].x ) + (node[i].y - node[j].y )*(node[i].y - node[j].y ) ; node[i].distance[j] = sqrt(dist); } }
ºÎºÐÀ» º¸½Ã¸é,
node[i].distance = IloNumArray(env, nbNodes);
distance °¹¼ö¸¦ nbNodes ¸¸Å »ý¼ºÇ϶ó°í ¼±¾ðµÇ¾î ÀÖÀ½¿¡µµ ºÒ±¸Çϰí,
node[i].distance[j] = sqrt(dist);
ÂüÁ¶´Â nbNodes+1 ÀÌ µÇ¾îÀÖ½À´Ï´Ù.
node[i].distance = IloNumArray(env, nbNodes); ºÎºÐÀ»
node[i].distance = IloNumArray(env, nbNodes+1); ·Î ¼öÁ¤ÇϽøé ÇØ°áµÉ °Í °°½À´Ï´Ù.
ÀÌ¿Í °ü·ÃµÈ ¿¡·¯°¡ ¶Ç ÀÖ½À´Ï´Ù.
void firstRoute(IloEnv env, IloArray & firstroute, IloNumArray& objCoef);
ºÎºÐ¿¡ º¸½Ã¸é,
// heuristic ÀÌ¿ëÇÏ¿© ÃʱâÇØ °áÁ¤ ...> ÃʱâÇØ°¡ ÁÁÀ» ¼ö·Ï Ǫ´Â ¼Óµµ°¡ »¡¶óÁø´Ù.
IloArray > RouteLabel(env, nbNodes+1) ; IloNumArray label(env, nbNodes + 4);
IloIntArray nodeque(env); nodeque.add(0); IloArray successor(env, nbNodes) ;
for(IloInt i=0; i< nbNodes+1 ; i++){ RouteLabel[i] = IloArray (env); if(i==0) RouteLabel[i].add(label);
successor[i] = IloIntArray(env); for(IloInt j=1; j< nbNodes+1; j++){ if(i ==0 && j == nbNodes ) continue; if(i!=j) successor[i].add(j); } }
IloArray successor(env, nbNodes) ;
successorµµ array ÂüÁ¶¿¡·¯°¡ ³¯ ¼ö ¹Û¿¡ ¾ø½À´Ï´Ù.
ÀÌ ¹Û¿¡µµ °è¼Ó ÀûÀ¸·Î array ÂüÁ¶ ¿¡·¯°¡ Àִµ¥ ¸ðµÎ ¼öÁ¤À» ÇØ ÁÖ¼Å¾ß ÇÕ´Ï´Ù.
ÀüüÀûÀ¸·Î º»ÀÎÀÇ Àǵµ¿Í array size°¡ Á¤»óÀûÀ¸·Î ¸ÅÄ¡°¡ µÇ¾ú´ÂÁö È®ÀÎÀÌ ÇÊ¿äÇÒ µí ½Í³×¿ä.
±× ÈÄ¿¡ °á°ú ºÐ¼®À» ÇÏ½Ã´Â°Ô ÁÁÀ» µí ½Í½À´Ï´Ù.
»ç¿ëÇÏ´Â ÄÄÆÄÀÏ·¯¿¡ µû¶ó ÂüÁ¶¿¡·¯¸¦ ¹«½ÃÇÏ°Ô µÇ´Â °æ¿ìµµ ÀÖ±ä ÇÏÁö¸¸, ÀÌ·± °æ¿ì Á¤»óÀûÀÎ °á°ú¸¦ ¾ò±â Èûµé °ÍÀ¸·Î ¿¹»óµË´Ï´Ù.
°¨»çÇÕ´Ï´Ù. |
|
|
|