§6.1 定义0-1变量命令INT
1.命令功能:定义当前模型中的0-1型整数变量。
2.命令格式:
:INT[变量名]<CR>
其中的变量名表示将要定义为0-1变量的变量。
3.命令使用:输入一个0-1型整数规划模型的方法,是先按前述的线性规划模型的输入方法进行操作,尔后用INT命令来定义0-1变量。INT命令一般应在对应的线性规划模型输入完毕后立即进行。下面请看有三个0-1变量的整数规划模型的上机操作实例:
MAX3X1+4X2+5X3+3X4+2X5 ?ST
?2X1+3X2+4X3+5X4+X5<11
?3X1+4X2+2X3+X4+3X5<16
?7X1+2X2+5X3+4X4+2X5<19
?END
:INTX1 !定义X1为0-1变量 :INTX2 !定义X2为0-1变量 :INTX3 !定义X3为0-1变量 :LOOK ALL
MAX3X1+4X2+5X3+3X4+2X5 SUBJECTTO 2)2X1+3X2+4X3+5X4+X5<=11 3)3X1+4X2+2X3+X4+3X5<=16 4)7X1+2X2+5X3+4X4+2X5<=19 END
INTEGER-VARIABLES=3 !前三个变量为0-1变量
:GO
LP OPTIMUM FOUND AT STEP 6 !已获得线性规划的最优解
OBJECTIVE FUNCTION VALUE
1)16.4000000 !线性规划的目标函数值
VARIABLE VALUE REDUCEDCOST X1 1.000000 .200000 X2 .800000 .000000 X3 1.000000 1.000000 X4 .000000 1.400000 X5 2.600000 .000000
ROW SLACK DUAL PRICES 2) .000000 .800000 3) .000000 .400000 4) .200000 .000000
NO.ITERATIONS=6 !开始分支定界算法
BRANCHES=0DETERM.=-5.000E0 SET2 TO 1 AT 1 BND=16.333330 TWIN=16.000000 SET1 TO 1 AT 2 BND=16.300000 TWIN=16.000000 SET3 TO 1 AT 3 BND=16.000000 TWIN=16.000000
NEWINTEGER SOLUTION AT BRANCH 3 PIVOT 10
OBJECTIVE FUNCTION VALUE
1)16.0000000 !第一个(0-1)整数解
VARIABLE VALUE REDUCEDCOST X1 1.000000 -1.000000 X2 1.000000 -2.000000 X3 1.000000 -3.000000 X4 .000000 7.000000 X5 2.000000 .000000
ROW SLACK DUAL PRICES 2) .000000 2.000000 3) 1.000000 .000000 4) 1.000000 .000000
NO.ITERATIONS=10 BRANCHES=3DETERM.=1.000E0 BESTREMAINING SOLUTION NO BETTER THAN 16.00000 DELETE3 AT LEVEL 3 DELETE1 AT LEVEL 2 DELETE2 AT LEVEL 1 ENUMERATIONCOMPLETE. BRANCHES = 3 PIVOTS = 10
LASTINTEGER SOLUTION IS THE BEST FOUND!以上整数解是最优解
:
从上例可以看到,求解一个0-1整数规划模型的命令,仍是GO命令。GO命令下的第一步计算结果不是整数的,接着键入回车键,即开始用分支定界法计算整数解(而不是进行灵敏度分析)。
当模型中有很多变量需要定义成0-1变量,可以有以下命令:
:INT<n> 其中n表示模型中的0-1型整数变量数目。使用这命令来定义0-1变量,可以极大地提高键盘输入效率。对于上节的例子,三个0-1变量的定义可以如此操作:
:INT3 使用该命令时须特别注意变量在目标函数中的排列次序。当目标函数中不是包含有全部变量时,应慎用这一命令。命令中的n,是指目标函数中(或模型中先输入的)前n个变量,不注意这一点,就容易出错。
如果要取消已定义的0-1变量,用以下命令:
:INT 0<CR>
键入这一命令后,模型中原有的0-1变量全部被取消,整数规划模型变成线性规划模型,但原有的 0-1变量被限制在区间[0,1]上。如:
:LOOK ALL
MAX 3 X1 + 4 X2 + 5 X3 + 3 X4 + 2 X5 SUBJECT TO
2) 2 X1 + 3 X2 + 4 X3 + X4 + 3 X5 <= 11 3) 3 X1 + 4 X2 + 2 X3 + X4 + 3 X5 <= 16 4) 7 X1 + 2 X2 + 5 X3 + 4 X4 + 2 X5 <= 19 END
INTE 3 :INT 0
:LOOK ALL
MAX 3 X1 + 4 X2 + 5 X3 + 3 X4 + 2 X5 SUBJECT TO
2) 2 X1 + 3 X2 + 4 X3 + X4 + 3 X5 <= 11 3) 3 X1 + 4 X2 + 2 X3 + X4 + 3 X5 <= 16 4) 7 X1 + 2 X2 + 5 X3 + 4 X4 + 2 X5 <= 19 END
SUB X1 1.00000 SUB X2 1.00000 SUB X3 1.00000
:
|