ILOG logo
KSTEC ȸ¿øÀ¸·Î °¡ÀÔÇϼ¼¿ä¤Ó»õ¼Ò½Ä | ·Î±×ÀÎ
 
title element1
License
- ¶óÀ̼¾½º
- ¶óÀ̼¾½º °ü¸®
Maintenance
Training
FAQ
Q&A

Q & A ... °Ô½ÃÆÇ  (Optimization)


¡Ø ¾È³çÇϽʴϱî..?
    ÀúÈñ KSTECÀÇ Á¦Ç°À̳ª ¼­ºñ½º¿¡ ´ëÇØ ±Ã±ÝÇϽŠÁ¡À̳ª ±â¼úÁö¿øÀ» ¿øÇϽô °í°´´ÔÀº ȸ»ç¸í,
    ºÎ¼­¸í, ¼º¸í, »ç¿ëÁ¦Ç°¸í, Á¦Ç° VERSIONÀ» ¸í½ÃÇÏ¿© Áֽñ⠹ٶø´Ï´Ù.

¡Ø °Ô½ÃÇϽг»¿ë¿¡ ´ëÇØ¼­´Â ½Å¼ÓÇÏ°Ô ´äº¯ÇØ µå¸®°Ú½À´Ï´Ù.
¡Ø ÇØ´çµÇ´Â Á¦Ç°±ºÀ» ¼±ÅÃÇϽŠÈÄ ÇÏ°í ½ÍÀ¸½Å ¸»¾¸À» Àû¾î ÁֽʽÿÀ.

Á¦ ¸ñ
[RE]Áú¹®ÀÖ½À´Ï´Ù.
ÀÛ¼ºÀÚ
Àӽºó
ÀÛ¼ºÀÏ
2008-10-06
Á¶È¸¼ö 1290 È¸
÷ºÎÆÄÀÏ Ã·ºÎµÈ ÆÄÀϾøÀ½.
¾È³çÇϼ¼¿ä.

¿ì¼± ù ¹øÂ° ¹®Á¦ºÎÅÍ ¸»¾¸µå¸®ÀÚ¸é,

Objective¿¡ »ó¼ö°ªÀ» ÃÖ´ëÈ­ ÇÏ´Â ÇüŰ¡ µÇ¾î Àֳ׿ä(º¯¼ö°¡ ¾øÀ½).

¼öÁ¤ ³»¿ëÀº ´ÙÀ½°ú °°½À´Ï´Ù.

°áÁ¤º¯¼ö:
varX_i - i¹øÂ° ´Ü¾î°¡ ¼±ÅõǸé 1, ¾Æ´Ï¸é 0 (0-1 integer)

»ó¼ö:
S1_i - i¹øÂ° ´Ü¾îÀÇ Ã¹¹øÂ° ±ÛÀÚ ¼öÄ¡
S2_i - i¹øÂ° ´Ü¾î µÎ¹øÂ° ±ÛÀÚ ¼öÄ¡
S3_i - i¹øÂ° ´Ü¾î ¼¼¹øÂ° ±ÛÀÚ ¼öÄ¡

¸ñÀû½Ä:
´Ü¾î ¼öÄ¡ ÇÕÀ» ÃÖ´ë·Î ÇÏ´Â º¯¼ö ¼±ÅÃ

Á¦¾à½Ä :
1. ¼±ÅõǴ ´Ü¾î´Â ÃÑ 8°¡Áö
2. ù¹øÂ° ±ÛÀÚ´Â µÎ¹øÂ° ±ÛÀÚº¸´Ù ÀÛÀº ¼ö
3. ù¹øÂ° ±ÛÀÚ´Â ¼¼¹øÀç ±ÛÀÚº¸´Ù ÀÛÀº ¼ö

°á°ú:
// solution (optimal) with objective 259
varX = [0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];

¼±ÅõǴ ´Ü¾î´Â 4, 5, 6, 12, 13, 14, 16, 18 ¹øÂ° ´Ü¾îÀÔ´Ï´Ù.


´ÙÀ½À¸·Î µÎ ¹øÂ° ¹®Á¦ Ç®ÀÌ´Â ´ÙÀ½°ú °°½À´Ï´Ù.

¹°°ÇÀº weight ´ÜÀ§·Î Âɰ³Áú ¼ö ¾ø´Ù¶ó´Â Á¶°ÇÀÌ °áÁ¤º¯¼ö¸¦ Á¤Çϴµ¥ Áß¿äÇÑ ¿ªÇÒÀ» ÇÑ´Ù°í »ý°¢µÇ¾îÁý´Ï´Ù.

°áÁ¤º¯¼ö:
X_b_i - b ºó¿¡ i ¹øÂ° ¹°°ÇÀÌ µé¾î°¡¸é 1, ¾Æ´Ï¸é 0
Y_b - b ºóÀÌ »ç¿ëµÇ¸é 1, ¾Æ´Ï¸é 0

¸ñÀû½Ä:
»ç¿ëµÇ´Â ºóÀÇ °³¼ö ÃÖ¼ÒÈ­

Á¦¾à½Ä:
1. °¢ ºó¿¡ µé¾î°¡´Â ¹°°ÇÀº ºó ¿ë·®ÀÇ ÃÖ´ë¼öÄ¡¸¦ ³ÑÀ» ¼ö ¾øÀ½
2. ¸ðµç ºó ¾È¿¡ ¹°°ÇÀº Çѹø¸¸ µé¾î°¥ ¼ö ÀÖÀ½

°á°ú:
// solution (optimal) with objective 3
Y = [0 1 1 1 0];
X = [[0 0 0 0 0 0 0 0]
[0 1 0 0 1 0 0 0]
[1 0 0 0 0 1 0 0]
[0 0 1 1 0 0 1 1]
[0 0 0 0 0 0 0 0]];

»ç¿ëµÇ´Â ºó ¼ö: 3°³
ºó 1 - 66, 19
ºó 2 - 80, 9
ºó 3 - 23, 17, 21, 32


±¸Ã¼ÀûÀº ¸ðµ¨ ³»¿ëÀº ¾Æ·¡¿Í °°½À´Ï´Ù.
1¹ø¹®Á¦:

range Index = 1..47;

int A=1; int B=2; int C=3; int D=4; int E=5;
int F=6; int G=7; int H=8; int I=9; int J=10;
int K=11; int L=12; int M=13; int N=14; int O=15;
int P=16; int Q=17; int R=18; int S=19; int T=20;
int U=21; int V=22; int W=23; int X=24; int Y=25;
int Z=26;

int S1[Index] = [ A, A, B, B, C, C, D, D, E, E,
F, F, G, G, H, H, H, I, I, J,
J, K, L, L, L, M, M, N, N, O,
O, P, P, Q, Q, R, R, S, S, T,
T, U, V, W, X, Y, Z ];

int S2[Index] = [ D, F, E, K, C, I, E, I, A, G,
A, I, H, O, A, O, U, O, V, C,
O, E, K, I, Y, O, T, E, T, I,
S, I, R, M, U, O, U, T, I, U,
V, T, I, H, I, E, I ];

int S3[Index] = [ V, T, T, S, W, R, R, P, T, O,
R, N, Q, O, T, I, G, N, E, S,
E, N, K, P, E, L, G, S, H, L,
F, P, F, G, E, E, G, G, P, E,
A, E, P, O, N, S, P ];


dvar int varX[Index] in 0..1;

maximize
sum(i in Index)
(S1[i] + S2[i] + S3[i]) * varX[i];

subject to {

const_1:
sum(i in Index)
varX[i] == 8;

const_2:
forall(i in Index)
S1[i] * varX[i] <= S2[i] * varX[i];

const_3:
forall(i in Index)
S1[i] * varX[i] <= S3[i] * varX[i];

}




2¹ø¹®Á¦:

int NbItems = 8;
int NbBins = 5;

int BoxWeight = 93;

range Items = 1..NbItems;
range Bins = 1..NbBins;

int WeightItems[Items] = [ 80, 66, 23, 17, 19, 9, 21, 32 ];

dvar int Y[Bins] in 0..1;
dvar int X[Bins][Items] in 0..1;

minimize
sum(b in Bins)
Y[b];
subject to {

const_1:
forall(b in Bins)
sum(i in Items)
WeightItems[i] * X[b][i] <= BoxWeight * Y[b];



const_2:
forall(i in Items)
sum(b in Bins)
X[b][i] == 1;

}
°ü·Ã±Û º¸±â
"[RE]Áú¹®ÀÖ½À´Ï´Ù."¿Í(°ú) °ü·ÃµÈ ±ÛÀÌ  1°Ç ÀÖ½À´Ï´Ù.
Áú¹®ÀÖ½À´Ï´Ù. ÃÖ¸íÁø 2008-10-06
[RE]Áú¹®ÀÖ½À´Ï´Ù. Àӽºó 2008-10-06