X(4)?(3.95?0.04,7.5?0.5)T?(3.95,8.0)T,X(4)点在可行域内是可行的,此时f(X(4))?27.97>26.85,有所改善。
⑥再在X(4)?(3.99,8.0)T作线性展开,得
(X(4))?3X1?2X2 Maxf(4))?1.98X1?X2?15.9201?0 约束于 g(1X(4))?7.98X1?16X2?159.9201?0 g(2X(4) g(X)?3?X1?0 3~~~~(4))?2?X2?0 g(4X~(5)T~(4)~用单纯形法求解该线性规划问题的最优解X?(4.0,8.0)。X点对原问
题是可行的。所以X?(4.0,8.0)T是原问题的最优解,此时最大值为28。
4.某单位有A、B两座机井,可以同时灌溉a、b两块农田。泵的抽水费用如图2所示,A、B两井的最大出水量分别为100和80m3/h,并已知灌溉时的水量损失百分数分别是SAa?10%,SAb?8%,SBa?5%,SBb?6%,SAa表示A井对a农田灌水的灌溉水量损失百分数,其余类推。要求在24h内,对a、b两块农田分别供水2000和1000m3。A、B井对a、b两块农田的供水流量多大时抽水费用最低?
图2 A、B两机井的抽水费用图
解:假设A井对a、b两块农田的供水流量分别为x1,x2 m/h; B井对a、b两块农田的供水流量分别为x3,x4 m3/h。
约束条件
3
x1+x2?100 x3?x4?80
24?0.9x1?24?0.95x3?2000
24?0.92x2?24?0.94x4?1000 x1?0,x2?0,x3?0,x4?0
然后建立流量~抽水量方程,用MATLAB进行数据拟合,用自定义模型为 y?ax3?bx2?cx?d
(1)A井方程的建立,在命令窗口中输入 x1=[20 40 60 80 100 120 140];
y1=[0.02 0.018 0.02 0.028 0.043 0.064 0.089]; cftool(x1,y1)
得到一系列点;然后在curve fitting tool中点击fitting来绘制自定义的一元三次曲线(cubic polynomial);在results中得到下列结果:
Linear model Poly3:
f(x) = p1*x^3 + p2*x^2 + p3*x + p4 Coefficients (with 95% confidence bounds):
p1 = -7.263e-023 (-2.017e-008, 2.017e-008) p2 = 7.262e-006 (2.377e-006, 1.215e-005) p3 = -0.0005869 (-0.0009343, -0.0002395) p4 = 0.02914 (0.02226, 0.03603) Goodness of fit: SSE: 1.667e-006 R-square: 0.9996
Adjusted R-square: 0.9992 RMSE: 0.0007454 由此可知A井的方程为
y??7.263?10?23x3?7.262?10?6x2?0.0005869x?0.02914 (2)同A井对B井用同样的方法建立方程 x2=[20 40 60 80 100 120 140];
y2=[0.035 0.031 0.032 0.038 0.045 0.058 0.072]; cftool(x2,y2)
得到一系列点;然后在curve fitting tool中点击fitting来绘制自定义的一元三次曲线(cubic polynomial);在results中得到下列结果:
Linear model Poly3:
f(x) = p1*x^3 + p2*x^2 + p3*x + p4 Coefficients (with 95% confidence bounds):
p1 = -1.042e-008 (-3.015e-008, 9.321e-009) p2 = 7.024e-006 (2.245e-006, 1.18e-005) p3 = -0.0005768 (-0.0009167, -0.0002369) p4 = 0.04371 (0.03698, 0.05045) Goodness of fit: SSE: 1.595e-006 R-square: 0.9989
Adjusted R-square: 0.9977 RMSE: 0.0007292 由此可知B井的方程为
y??1.042?10?8x3?7.024?10?6x2?0.0005768x?0.04371 (3)目标函数为
3minz?(?7.263?10?23x1?7.262?10?6x12?0.0005869x1?0.02914)?x1?
32(?7.263?10?23x2?7.262?10?6x2?0.0005869x2?0.02914)?x2?
32(?1.042?10?8x3?7.024?10?6x3?0.0005768x3?0.04371)?x3?
32(?1.042?10?8x4?7.024?10?6x4?0.0005768x4?0.04371)?x4
编一个M文件myfun.m,返回x处的函数值f。 function f=myfun(x)
f=(-7.236*10.^(-23)*x(1).^3+7.262*10.^(-6)*x(1).^2-0.0005869*x(1)+0.02914)*x(1)*24
+(-7.236*10.^(-23)*x(2).^3+7.262*10.^(-6)*x(2).^2-0.0005869*x(2)+0.02914)*x(2)*24 +(-1.042*10.^(-8)*x(3).^32+7.024*10.^(-6)*x(3).^2-0.0005768*x(3)+0.04371)*x(3)*24 +(-1.042*10.^(-8)*x(4).^32+7.024*10.^(-6)*x(4).^2-0.0005768*x(4)+0.04371)*x(4)*24
下一步给定初值,并调用优化过程。 x0=[50;50;40;40]; A=[1 1 0 0;0 0 1 1]; b=[100;80];
Aeq=[21.6 0 22.8 0;0 22.08 0 22.56]; beq=[2000;1000]; vlb=zeros(4,1); 然后调用fmincon函数
[x,fval]=fmincon(@myfun,x0,A,b,Aeq,beq,vlb) x = 8.1481 45.2899 80.0000 0 fval = 4.8576
由上可知当A井对a、b两块农田的供水流量分别为8.1481、45.2899m3/h, B井对a、b两块农田的供水流量分别为80.0000、0 m3/h时,抽水费用最低为4.8576元。
5.某灌区有一条灌溉干渠、四条灌溉支渠同时配水,各支渠最大过水能力如表3。如果各支渠因引水灌溉面积而获得的净效益如表4所示,试问当干渠由水源引水10(m3/s)时,在各支渠间如何配水,才能使灌区总净效益最大? 表3 各支渠最大过水能力表 支渠名称 最大过水能力(m3/s)
表4 各支渠净效益表 (1 6 2 8 3 4 4 6 1 m)2 3 4 30 2 4 6 8 10
0 120 180 220 250 250 0 60 140 230 300 300 0 90 160 160 160 160 0 120 190 230 240 240 解:(一)建立数学模型
1.阶段变量
每条支渠分配一定的水量的过程可视作一个阶段,共有N个阶段,阶段变量n=1,2,…,N。
2.状态变量和决策变量
状态变量为各阶段支渠可用于分配的水量,以q表示;决策变量为分配给每条支渠的水量,以xn表示。
3.系统方程