AY+BY=Y+Y+Y+Y (13) 此外的其它约束实际上只是一个简单的变量上界约束 下面直接给出LINGO程序 model: sets: num1/1.4/:c1,c2,c3,c4,d1,d2,B,x,Y num2/1,2/:AXY,BXY; endsets c1=94.532.25 c2-158531 c3=1234: c4=2468: d1-1344 d2=1234; enddata max-@sum(n1m1:c1*x+c2*y-c3*A-c4*B)-2*BXY(1)-1,5*AXY(2): @sum(num1:A)-@sum(num2:AXY)=0; @sum(num1:B)-@sum (num2:BXY)=0 AxY(1)+BXY (1)-esum(numl:X)-0 AXY (2)+BXY (2)-@sum (num1:Y)=0 @for (num1:@bnd(0,A,2);@bnd (0,x,2);0bnd (0,B,d1);@bnd (0,Y,d2)); end 求解这个模型,得到如下解答 clobal opt 801 tion tour at iteration 0 objective value: 44.0000 Variable Value Reduced Cost C1t1) 9.000000 0.000000 c1(2) 4.500000 0.000000 0.000000 0.00000 c2(1) 15.00000 0.00000 C2(2) 8.000000 0.000000 C2t3) 5.000000 0.000000 c2(4) 3.000000 0.000000 1.00000 0.000000 2.00000 0.00000 C3(3) 3.000000 0.000000 -353
-353- AY + BY = Y1 + Y2 + Y3 + Y4 (13) 此外的其它约束实际上只是一个简单的变量上界约束。 下面直接给出 LINGO 程序: model: sets: num1/1.4/:c1,c2,c3,c4,d1,d2,A,B,X,Y; num2/1,2/:AXY,BXY; endsets data: c1=9 4.5 3 2.25; c2=15 8 5 3; c3=1 2 3 4; c4=2 4 6 8; d1=1 3 4 4; d2=1 2 3 4; enddata max=@sum(num1:c1*x+c2*y-c3*A-c4*B)-2*BXY(1)-1.5*AXY(2); @sum(num1:A)-@sum(num2:AXY)=0; @sum(num1:B)-@sum(num2:BXY)=0; AXY(1)+BXY(1)-@sum(num1:X)=0; AXY(2)+BXY(2)-@sum(num1:Y)=0; @for(num1:@bnd(0,A,2);@bnd(0,X,2);@bnd(0,B,d1);@bnd(0,Y,d2)); end 求解这个模型,得到如下解答: Global optimal solution found at iteration: 0 Objective value: 44.00000 Variable Value Reduced Cost C1( 1) 9.000000 0.000000 C1( 2) 4.500000 0.000000 C1( 3) 3.000000 0.000000 C1( 4) 2.250000 0.000000 C2( 1) 15.00000 0.000000 C2( 2) 8.000000 0.000000 C2( 3) 5.000000 0.000000 C2( 4) 3.000000 0.000000 C3( 1) 1.000000 0.000000 C3( 2) 2.000000 0.000000 C3( 3) 3.000000 0.000000
c3(4) 4.000000 0.000000 c4t13 2.000000 0.000000 c4(2) 4.000000 0.000000 c4( 3 6.00000 0.00000 c4(4】 8.000000 0.00000 D1(1) 1.000000 0.00000 D1(2) 3.000000 0.000000 D13) 4.000000 0.000000 01( 4.000000 0.00 1 1.00000 0.00000 D2(2) 2.000000 0.000000 D2(3) 3.000000 0.000000 D2(4) 4.000000 0.000000 A(1) 2.000000 -2.000000 A(2 2.0000 -1.00000 2.00000 0.00000 A(4 0.000000 1.000000 B(1 1.000000 -2.500000 3.00000d -0.5000000 B(3) 0.00000 1.500000 B(4 0.00000 3.50000 X(1) 2,000000 -6,00000 x(2 2.000000 -1.500000 XI 3) 0.00000d 0.000000 0.000000 0.75000 1.00000 -10.5000 Y(2) 2.00000 -3.500001 ¥(3 3.000000 -0.5000000 ¥14 0.000000 1.500000 AXY(1) 4.000000 0.000000 AY(2) 2.00000 0.00000 BXY 1 0.00000 3.50000 BXY(2) 4.000000 0.000000 Row slack or Surplus Dual Price 44.00000 1000000 3 0.000000 3 -3.0600 0.00000 -4.50000 4 0.00000 -3.00000( 0.000000 -4.500000 -354
-354- C3( 4) 4.000000 0.000000 C4( 1) 2.000000 0.000000 C4( 2) 4.000000 0.000000 C4( 3) 6.000000 0.000000 C4( 4) 8.000000 0.000000 D1( 1) 1.000000 0.000000 D1( 2) 3.000000 0.000000 D1( 3) 4.000000 0.000000 D1( 4) 4.000000 0.000000 D2( 1) 1.000000 0.000000 D2( 2) 2.000000 0.000000 D2( 3) 3.000000 0.000000 D2( 4) 4.000000 0.000000 A( 1) 2.000000 -2.000000 A( 2) 2.000000 -1.000000 A( 3) 2.000000 0.000000 A( 4) 0.000000 1.000000 B( 1) 1.000000 -2.500000 B( 2) 3.000000 -0.5000000 B( 3) 0.000000 1.500000 B( 4) 0.000000 3.500000 X( 1) 2.000000 -6.000000 X( 2) 2.000000 -1.500000 X( 3) 0.000000 0.000000 X( 4) 0.000000 0.7500000 Y( 1) 1.000000 -10.50000 Y( 2) 2.000000 -3.500000 Y( 3) 3.000000 -0.5000000 Y( 4) 0.000000 1.500000 AXY( 1) 4.000000 0.000000 AXY( 2) 2.000000 0.000000 BXY( 1) 0.000000 3.500000 BXY( 2) 4.000000 0.000000 Row Slack or Surplus Dual Price 1 44.00000 1.000000 2 0.000000 -3.000000 3 0.000000 -4.500000 4 0.000000 -3.000000 5 0.000000 -4.500000
(3)结果解释 可以看到,最优解为A=4=A=X,=X2=2,B=1,B2=3,Y=1, 2=3,=3,AX=BY=4,AY=2,A=B,=B=X=X4==BX=0 也就是说,甲将向丁销售2t产品,丙不会向乙销售。 那么如何才能确定清算价格呢?与例1类似,约束(2)是针对生产商甲的供需平 衡条件,目前的右端项为0,影子价格为一3,意思就是说如果右端项增加一个很少的 量(即甲的供应量增加 一个很少的量),引起的经销商的损失就是这个小量的3.5倍。 可见,此时甲 的销售单价就是3万元,这就是甲面对的清算价格。 完全类似地,可以知道生产商丙面对的清算价格为4.5。自然地,乙面对的清算价 格也是3,丁面对的清算价格也是4.5,因为甲乙位于同一个市场,而丙丁也位于同 个市场。这两个市场的清算价之差正好等于从甲、乙到丙、丁的运输成本(1.5),这 是非常合理的。 (4)模型扩展 可以和1.1一样,将上面的具体模型一般化,即考虑供应函数和需求函数的分段数 不是固定为4,而是任意有限正整数的情形。 很自然地,上面的方法很容易推广到不仅仅是2个市场,而是任意有限个市场的情 形。理论上看这当然没有什么难度,只是这时变量会更多,数学表达式变得更复杂一些。 1.3拍卖与投标问趣 假设 家拍卖行对委托的5类艺术品对外拍卖,采用在规定日期前投标人提 交投标书的方式进行,最后收到了来自4个投标人的投标书。每类项目的数量、投标人 对每个项目的投标价格如表3中所示。例如,有3件第4类艺术品:对每件第4类艺术品, 投标人1,2,3愿意出的最高价分别为6,1,3,2(货币单位,如万元)。此外,假 设每个投标人对每类艺术品最多只能购买1件,并日每个投标人购买的梦术品的总数不 能超过3件。那么 哪些艺术品能够卖出去?卖给谁?这个拍卖和投标问题中每类物: 的清算价应该是多少? 表3拍卖与投标信息 招标项目类形 招标项目的数量 投标人1 9 投标人2 5 投标价格 投标人3 7 投标人4 5 (1)问题分析 这个具体问题在实际中可能可以通过对所有投标的报价进行排序来解决,例如可以 总是将艺术品优先卖给出价最高的投标人。但这种方法不太好确定每类艺术品的清算
-355- (3)结果解释 可以看到,最优解为 A1 = A2 = A3 = X1 = X2 = 2, 1 B1 = , 3 B2 = , 1 Y1 = , 3 Y2 = ,Y3 = 3,AX = BY = 4 ,AY = 2 ,A4 = B3 = B4 = X3 = X4 = Y4 = BX = 0 。 也就是说,甲将向丁销售2t产品,丙不会向乙销售。 那么如何才能确定清算价格呢?与例1类似,约束(2)是针对生产商甲的供需平 衡条件,目前的右端项为0,影子价格为-3,意思就是说如果右端项增加一个很少的 量(即甲的供应量增加一个很少的量),引起的经销商的损失就是这个小量的3.5倍。 可见,此时甲的销售单价就是3万元,这就是甲面对的清算价格。 完全类似地,可以知道生产商丙面对的清算价格为4.5。自然地,乙面对的清算价 格也是3,丁面对的清算价格也是4.5,因为甲乙位于同一个市场,而丙丁也位于同一 个市场。这两个市场的清算价之差正好等于从甲、乙到丙、丁的运输成本(1.5),这 是非常合理的。 (4)模型扩展 可以和1.1一样,将上面的具体模型一般化,即考虑供应函数和需求函数的分段数 不是固定为4,而是任意有限正整数的情形。 很自然地,上面的方法很容易推广到不仅仅是2个市场,而是任意有限个市场的情 形。理论上看这当然没有什么难度,只是这时变量会更多,数学表达式变得更复杂一些。 1.3 拍卖与投标问题 例3 假设一家拍卖行对委托的5类艺术品对外拍卖,采用在规定日期前投标人提 交投标书的方式进行,最后收到了来自4个投标人的投标书。每类项目的数量、投标人 对每个项目的投标价格如表3中所示。例如,有3件第4类艺术品;对每件第4类艺术品, 投标人1,2,3愿意出的最高价分别为6,1,3,2(货币单位,如万元)。此外,假 设每个投标人对每类艺术品最多只能购买1件,并且每个投标人购买的艺术品的总数不 能超过3件。那么,哪些艺术品能够卖出去?卖给谁?这个拍卖和投标问题中每类物品 的清算价应该是多少? 表3 拍卖与投标信息 招标项目类型 1 2 3 4 5 招标项目的数量 1 2 3 3 4 投标人1 9 2 8 6 3 投标人2 6 7 9 1 5 投标人3 7 8 6 3 4 投标价格 投标人4 5 4 3 2 1 (1)问题分析 这个具体问题在实际中可能可以通过对所有投标的报价进行排序来解决,例如可以 总是将艺术品优先卖给出价最高的投标人。但这种方法不太好确定每类艺术品的清算
价,所以我们这里还是借用前面两个例子中的方法,即假设有一个中间商希望最大化自 己的利润,从而建立这个问题的线性规划模型。 (2)的一提法知设 先建立一般的模型,然后求解本例的具体向题,设有类物品需要拍卖,第了类物 品的数量为s,(j广=1,2,.,n):有m个投标者,投标者1(i=1,2,.m)对第j类 物品的投标价格为b。(假设非负)。投标者i对每类物品最多购买一件,且总件数不能 超过C,·我们的目标之一是要确定第j类物品的清算价格P,它应当满足下列假设条 件: 1)成交的第j类物品的数量不超过s,(j=1,2,.,n): ii)对第j类物品的报价低于P,的投标人将不能获得第j类物品 iii)如果成交的第j类物品的数量少于s,(j=L,2,.,n)可以认为p,=0(除 非拍卖方另外指定一个最低的保护价): i)对第j类物品的报价高于P,的投标人有权获得第j类物品,但如果他有权获 得的物品超过3件,那么我们假设他总是希望使自己的满意度最大(满意度可以用他的 报价与市场清算价之差来衡量)。 (3)优化模型 用0-1变量x表示是否分配一件第∫类物品给投标者1,即x=1表示分配,而 X,=0表示不分配。目标函数仍然是虚拟的中间商的总利润(认为这些利润全部是拍 卖行的利润也可以),即 5∑bgy (14) 除变量取值为0或1的约束外,问题的约束条件主要是两类:每类物品的数量限制 和每个投标人所能分到的物品的数量限制,即 2x,≤j=l2,.,n (15) 250f=12m (16) -356
-356- 价,所以我们这里还是借用前面两个例子中的方法,即假设有一个中间商希望最大化自 己的利润,从而建立这个问题的线性规划模型。 (2)问题的一般提法和假设 先建立一般的模型,然后求解本例的具体问题,设有 n 类物品需要拍卖,第 j 类物 品的数量为 j s ( j =1,2,L,n );有 m 个投标者,投标者i (i = 1,2,Lm )对第 j 类 物品的投标价格为bij(假设非负)。投标者i 对每类物品最多购买一件,且总件数不能 超过 i c 。我们的目标之一是要确定第 j 类物品的清算价格 pj ,它应当满足下列假设条 件: i)成交的第 j 类物品的数量不超过 j s ( j =1,2,L,n ); ii)对第 j 类物品的报价低于 pj 的投标人将不能获得第 j 类物品; iii)如果成交的第 j 类物品的数量少于 j s ( j =1,2,L,n )可以认为 pj = 0(除 非拍卖方另外指定一个最低的保护价); iv)对第 j 类物品的报价高于 pj 的投标人有权获得第 j 类物品,但如果他有权获 得的物品超过3件,那么我们假设他总是希望使自己的满意度最大(满意度可以用他的 报价与市场清算价之差来衡量)。 (3)优化模型 用0 −1变量 ij x 表示是否分配一件第 j 类物品给投标者i ,即 xij = 1表示分配,而 xij = 0表示不分配。目标函数仍然是虚拟的中间商的总利润(认为这些利润全部是拍 卖行的利润也可以),即 ∑∑= = m i n j ij ij b x 1 1 (14) 除变量取值为0或1的约束外,问题的约束条件主要是两类:每类物品的数量限制 和每个投标人所能分到的物品的数量限制,即 j m i ij ∑x ≤ s =1 ,j =1,2,L, n (15) i n j ij ∑x ≤ c =1 ,i = 1,2,L,m (16)
模型就是在约束(15)、(16)下最大化目标函数(14)。 (4)模型求解 编写的LINGO程序如下: MODEL: TITLE拍卖与投标: SETS: AUCTION/1.5/:S: BIDDER/1.4/:C; LINK(BIDDER,AUCTION):B,X: ENDSETS DATA: S-12334: C=3333: B= 2 8 6 7 9 1 5 8 6 3 4 4 3 2 1 ENDDATA MAX=@SUM(LINK:B*X); FOR(AUCTION (J): [AUC_LIM]@SUM(BIDDER (I):X(I,J))<S(J) FOR(BIDDER (I) [BID LIM]@SUM(AUCTION(J):X(I,J))<C(I)) @FOR(LINK:@BND(0,X,1)); END 需要指出的是,上面程序中DATA语句的数据表是直接从NORD文档中复制(Ctr +C)后粘贴 (Ctrl+V)过来的,所以显示格式继续保持了wOD文档的风格。 (5)求解结果解释 可以看到,最优解为:投标人1得到艺术品1,3,4,投标人2,3都得到艺术品2, 3,5,投标人4得到艺术品4,5。结果,第4,5类艺术品各剩下1件没有成交。 那么如何才能确定清算价格呢?与例1和例2类似,约束“A0CLIM”是针对每类 艺术品的数量限制的 ,对应的影子价格就是其清算价格:即5类艺术品的清算价格分另 是5,5,3,0,0。第4,5类艺术品有剩余,所以清算价格为0,这是符合前面的假设 的。 可以指出的是:即使上面模型中不要求x,为0-1变量(即只要求取0一1之间的实 -357
-357- 模型就是在约束(15)、(16)下最大化目标函数(14)。 (4)模型求解 编写的LINGO程序如下: MODEL: TITLE 拍卖与投标; SETS: AUCTION/1.5/: S; BIDDER/1.4/ : C; LINK(BIDDER,AUCTION): B, X; ENDSETS DATA: S=1 2 3 3 4; C=3 3 3 3; B= 9 2 8 6 3 6 7 9 1 5 7 8 6 3 4 5 4 3 2 1 ; ENDDATA MAX=@SUM(LINK: B*X); @FOR(AUCTION(J): [AUC_LIM] @SUM(BIDDER(I): X(I,J)) < S(J) ); @FOR(BIDDER(I): [BID_LIM] @SUM(AUCTION(J): X(I,J)) < C(I) ); @FOR(LINK: @BND(0,X,1)); END 需要指出的是,上面程序中DATA语句的数据表是直接从WORD文档中复制(Ctrl +C)后粘贴(Ctrl+V)过来的,所以显示格式继续保持了WORD文档的风格。 (5)求解结果解释 可以看到,最优解为:投标人1得到艺术品1,3,4,投标人2,3都得到艺术品2, 3,5,投标人4得到艺术品4,5。结果,第4,5类艺术品各剩下1件没有成交。 那么如何才能确定清算价格呢?与例1和例2类似,约束“AUC_LIM”是针对每类 艺术品的数量限制的,对应的影子价格就是其清算价格:即5类艺术品的清算价格分别 是5,5,3,0,0。第4,5类艺术品有剩余,所以清算价格为0,这是符合前面的假设 的。 可以指出的是:即使上面模型中不要求 ij x 为0 −1变量(即只要求取0~1之间的实