13.7 水资源分配问题 13.7.1 问题描述 设水库可分配水资源量为7个单位,供给3个用户,个用户在分配水量q k下的效益函数为gi (q k), i = 1,2,3,如表13-3所示。求水资源量的最优分配方案。 表13-3 效益函数表 q k gi (q k) 0 1 2 3 4 5 6 7 g 1 (q k) 0 5 15 40 80 90 95 100 g 2 (q k) 0 5 15 40 60 70 73 75 g 3 (q k) 0 4 26 40 45 50 51 53 此类题目过去多采用动态规划法逐步计算出最优解,而使用LINGO求解相对简便。 13.7.2 LINGO 模型 根据题意,建立下列LINGO模型: SETS: !用户; USER/1..3/; !水量; WATER_AMOUNT/1..8/; !分配方案; ARCS(USER,WATER_AMOUNT):BENEFIT,SELECTION,STATUS; ENDSETS DATA: !效益; BENEFIT = 0 5 15 40 80 90 95 100 0 5 15 40 60 70 73 75 0 4 26 40 45 50 51 53 ; !待定分配量; STATUS = 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 ; ENDDATA MAX = @ SUM(ARCS(I,J):BENEFIT(I,J) * SELECTION(I,J)); @ FOR(ARCS:@ BIN(SELECTION)); @ FOR(USER(I):@ SUM(ARCS(I,K):SELECTION(I,K)) = 1); @ SUM(ARCS(I,J):STASUS(I,J)*SELECTION(I,J)) = 7; 在建立此模型时,使用了一个小技巧,就是为ARCS集合添加了SELECTION和STATUS属性。通过决策变量SELEVTION和已知量STATUS的联合使用,不仅轻松表达了总水量的约束,而且为离散取值最优化问题的求解提供了一个有效的思路。