1、ILOG 求解优化问题,看了一些教程,大多采用 ILOG 自己的帮助文件中的例子,不太适合象我这样的数学思维模式的人,所以把它翻译过来,留个备忘。交流 ILOG 心得, 可以与 联系1,线性规划问题: 1212max3.846,0zxstx以上线性规划问题可以用 ILOG 求解,代码如下:range J 12; /变量的下标,当然也可以用枚举型的range I 13; /约束个数对应的下标float cJ=2,3; /目标函数的系数float AI,J = 1,2,4,0,0,4; / 约束函数的系数矩阵float bI = 8,16,12; /约束函数的右端向量var float+ xJ;
2、 /定义决策变量maximizesum (j in J)cj*xjsubject to forall (i in I) sum(j in J)Ai,j*xj=bi;求解结果:Optimal Solution with Objective Value: 14.0000x1 = 4.0000x2 = 2.00002,运输问题某食品公司经销的主要产品之一是糖果,它下设三个加工厂,每天的产量分别是 7t,4t,9t;该公司把这些糖果分别运往四个地区的门市部销售,各地区每天的销售量分别是 3t,6t,5t,6t;已知各加工厂到各地区门市部的运价如表3-1 所示,问该公司如何调运,使得在满足门市部销售需要
3、的情况下,总的运费支出最少?B1 B2 B3 B4A1 3 11 3 10A2 1 9 2 8A3 7 4 10 5设 表示由 地运往 的运量,则该运输问题的数学模型可以表示为:ijxij-目标函数12134233mn098745xx-运出的约束1212343. 79stxx-运入的约束123131423465x-变量的非负约束0(,;1,24)ijxjILOG 代码:range I 13; / the trans outrange J 14; / the trans infloat CI,J = 3,11,3,10,1,9,2,8,7,4,10,5; / the price matrixfl
4、oat AI = 7,4,9; / the capacity of supplyfloat BJ = 3,6,5,6; / the capacity of demandvar float+ xI,J;minimizesum (i in I,j in J)Ci,j*xi,jsubject to forall (i in I) sum(j in J)xi,j=Ai;forall (j in J) sum(i in I)xi,j=Bj;求解结果:Optimal Solution with Objective Value: 85.0000x1,1 = 0.0000x1,2 = 0.0000x1,3 =
5、 5.0000x1,4 = 2.0000x2,1 = 3.0000x2,2 = 0.0000x2,3 = 0.0000x2,4 = 1.0000x3,1 = 0.0000x3,2 = 6.0000x3,3 = 0.0000x3,4 = 3.00003,指派问题有一份中文说明书,需译成英、日、德、俄四种文字,分别记作A、B、C 、D。现有甲、乙、丙、丁四人,他们将中文说明书译成不同语种的说明书所需时间如下表所示,问如何分派任务,可使总时间最少? 任务人员A B C D甲 6 7 11 2乙 4 5 9 8丙 3 1 10 4丁 5 9 8 2设 ,则该问题的数学模型可表示如下:1,0ij ijx
6、当 指 派 第 个 人 去 完 成 第 项 任 务当 不 指 派 第 个 人 去 完 成 第 项 任 务-目标函数12134234143min675980xx-每个人只能完成一项任务21213434.stxx-每项任务只能由一个人完成123142314234+xx-0-1 变量0(,;1,34)ijxorijILOG 代码:range I 14; / the workerrange J 14; / the missionfloat CI,J = 6,7,11,2,4,5,9,8,3,1,10,4,5,9,8,2; / the price matrixvar int xI,J in 01;minimizesum (i in I,j in J)Ci,j*xi,jsubject to forall (i in I) sum(j in J)xi,j=1;forall (j in J) sum(i in I)xi,j=1;求解结果:Optimal Solution with Objective Value: 15.0000x1,1 = 0x1,2 = 0x1,3 = 0x1,4 = 1x2,1 = 1x2,2 = 0x2,3 = 0x2,4 = 0x3,1 = 0x3,2 = 1x3,3 = 0x3,4 = 0x4,1 = 0x4,2 = 0x4,3 = 1x4,4 = 0