|
Á¦ ¸ñ |
Á¤¼öÇØ¸¦ ãÀ» ¶§¸¶´Ù µ¿ÀÛÇÏ´Â ·çƾ |
|
ÀÛ¼ºÀÚ |
¼Ò°æÃ¶ |
ÀÛ¼ºÀÏ |
2002-01-14 |
Á¶È¸¼ö |
1465 ȸ |
|
÷ºÎÆÄÀÏ |
÷ºÎµÈ ÆÄÀϾøÀ½.
|
|
´äº¯ÀÌ ´Ê¾î¼ Á˼ÛÇÕ´Ï´Ù. ¸ÕÀú, (1)¹ø¿¡ ´ëÇÑ ÆÇ´ÜÀ» Çϱâ À§Çؼ´Â getIncumbentObjValue() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ½Ã¸é µË´Ï´Ù. ÀÌ ÇÔ¼ö°¡ ÇÏ´Â ¿ªÇÒÀº ÇöÀç ½ÃÁ¡¿¡¼ °¡Àå ÁÁÀº Á¤¼öÇØ¸¦ return ÇØÁÖ´Â °ÍÀÔ´Ï´Ù.
Callback ÇÔ¼ö ³»¿¡¼, »õ·Î¿î Á¤¼öÇØ¸¦ ãÀ»¶§¸¶´Ù ȸ鿡 ±× ¶§ÀÇ ¸ñÀûÇÔ¼ö °ª°ú ±×¶§±îÁöÀÇ Å½»öȽ¼ö¸¦ Âï´Â ¾ÆÁÖ °£´ÜÇÑ ÇÁ·Î±×·¥ÀÇ ¿¹¸¦ º¸¿©µå¸®°Ú½À´Ï´Ù. ¿©±â¿¡¼, oldObj¿Í newObj´Â callback ÇÔ¼ö ¹Û¿¡¼ Àü¿ªº¯¼ö·Î ¼±¾ðÇØ¾ß ÇÕ´Ï´Ù.
newObj = getIncumbentObjValue();
if (oldObj > newObj) { cout() << \"========================================\" << endl; cout() << \"Solution value = \" << newObj << endl; cout() << \"Iterations = \" << getNiterations() << endl; cout() << \"========================================\" << endl; oldObj = newObj; }
ÀÌ·± ½ÄÀ¸·Î ±¸¼ºÇÏ°Ô µÇ¸é, »õ·Î¿î Á¤¼öÇØ¸¦ ãÀ» ¶§¸¶´Ù if ¹® ¾ÈÀÇ ³»¿ëÀÌ ½ÇÇàµÇ°Ô µË´Ï´Ù. ÀÌ if ¹®¾È¿¡ (2)¿¡ ÇØ´çÇÏ´Â ±â´ÉÀ» ³ÖÀ¸½Ã¸é µË´Ï´Ù.
:¹ÚÀμø´ÔÀÇ ±ÛÀÔ´Ï´Ù.
:¸ÕÀú ´äº¯ °¨»çµå¸³´Ï´Ù. :±Ý¹æ µÉ °Í °°À¸¸é¼ Àß ¾ÈµÇ´Â±º¿ä... :¾ÆÁ÷ ¹®Àç°¡ ÇØ°áµÇÁö ¾Ê¾Ò½À´Ï´Ù. :±Ã±ÝÇÑ °Ô ¶Ç À־ä... : :ÀÏ´Ü Á¦°¡ ÇϰíÀÚ ÇÏ´Â ÀÏÀ» °£´ÜÈ÷ ¸»¾¸µå¸®¸é... : :MIP·Î ÃÖÀûÈÇÒ ¶§ ´ÙÀ½°ú °°ÀÌ :cplex.setParam(IloCplex::MIPDisplay, 1); :³õ°í Çϸé, feasible solution ÀÌ ¹ß»ý ÇÒ ¶§¸¸ display°¡ ÀÌ·ç¾î Áý´Ï´Ù. Á¦°¡ ÇϰíÀÚ ÇÏ´Â °ÍÀº display¿Í µ¿½Ã¿¡ ¹ß»ýÇÑ feasible solutionÀ» ÀúÀåÇϰíÀÚ ÇÏ´Â °Ì´Ï´Ù. µû¶ó¼ callback À» ÀÌ¿ëÇϴµ¥, callback ÇÔ¼öÀÇ :³»¿ëÀº ´ÙÀ½°ú °°½À´Ï´Ù. : :if (1. Integer feasible solution ¹ß»ý) then (2. ÀúÀå) : :(Áú¹®). À§ÀÇ (1)À» Á¤È®È÷ ¾î¶² °É·Î ä¿ö¾ß ÇÒÁö ¸ð¸£°Ú½À´Ï´Ù. :Âü°í·Î IloCplex::MIPCallback ÀÇ ¸â¹ö ÇÔ¼öÀÇ isIntegerFeasible()Àº \"ÇöÀç±îÁöÀÇ integer feasible solution ¹ß»ý À¯¹«\"¸¦ Ç¥½ÃÇÏ´õ±º¿ä.°á±¹ ù¹øÂ° feasible solution ÀÌ ¹ß»ýÇÑ ÀÌÈÄ¿¡´Â Ç×»ó true°¡ µÇ¾î Á¦°¡ ¿øÇÏ´Â °á°ú¸¦ ÁÖÁö ¸øÇÕ´Ï´Ù. : |
|
|
|