|
Á¦ ¸ñ |
[Q] Callback ÇÔ¼ö ³»¿¡¼ solution value Ç¥½Ã |
|
ÀÛ¼ºÀÚ |
¹ÚÀμø |
ÀÛ¼ºÀÏ |
2002-01-18 |
Á¶È¸¼ö |
1449 ȸ |
|
÷ºÎÆÄÀÏ |
÷ºÎµÈ ÆÄÀϾøÀ½.
|
|
¾È³çÇϼ¼¿ä. CPLEX7.0 concert tech.¸¦ »ç¿ë ÁßÀÎ KAIST ÀüÀÚ°ú ¹ÚÀμøÀÔ´Ï´Ù. Áö³ ¹ø¿¡ ´äº¯Áּż °¨»çÇÕ´Ï´Ù. ±×·±µ¥ ¶Ç ¹®Á¦°¡ »ý°Ü¼¿ä.
ÀÏ´Ü callback ÇÔ¼ö´Â ¸¸µé¾ú½À´Ï´Ù. ÇÔ¼ö ¾È¿¡¼ feasible solutionÀÇ °ªµéÀ» ÀúÀåÇÏ°í ½ÍÀºµ¥¿ä... cplex.getValue()¶ó´Â ÇÔ¼ö¸¦ »ç¿ëÇϴµ¥,
\"0x101b352c¿¡ ÀÖ´Â ¸í·ÉÀÌ 0x00000004ÀÇ ¸Þ¸ð¸®¸¦ ÂüÁ¶Çß½À´Ï´Ù. ¸Þ¸ð¸®´Â writtenµÉ ¼ö ¾ø¾ù½À´Ï´Ù.\"
¶ó´Â ÀÀ¿ë ÇÁ·Î±×·¥ ¿À·ù ¸Þ½ÃÁö°¡ ¶ß´Â±º¿ä... ¾î¶»°Ô ÇØ¾ß ¿À·ù ¸Þ¼¼Áö ¾øÀÌ solutionÀÇ °ªÀ» ¾òÀ» ¼ö ÀÖÀ»±î¿ä?
Á¦°¡ ¸¸µç callback ÇÔ¼ö´Â ´ÙÀ½°ú °°½À´Ï´Ù. ==== #define MIPCALLBACK2(name, type1, x1, type2, x2) \\ class name : public IloCplex::MIPCallback {\\ type1 x1;\\ type2 x2;\\ public:\\ name(type1 xx1, type2 xx2) : x1(xx1), x2(xx2) {}\\ void main();\\ };\\ void name::main()
IloNum newObj, oldObj=100000;
MIPCALLBACK2(MyCallback, IloCplex, cplex, IloNumVarArray, var) { newObj=getIncumbentObjValue(); if (oldObj>newObj){
IloInt i=1; if ( var[i].getName() ) cout << var[i].getName() << cplex.getValue(var[i]) << endl; oldObj=newObj; } }
|
|
|
|