2.对于如下线性规划问题(有3n 个决策变量(,,)x r s 和2n 个约束):
111111min()..4411
440,2,3,....,440,2,3,....,,,0,1,2,.....n j j j j j j j j j x s t x r x s x x r j n x x s j n x r s j n
----=+=--==++==≥=
请分别对n 的不同取值 (如2,10,50n =等)求解上述规划。
解:分析题意,n x -为目标函数
11..441s t x r -=111x s +=1440,2,3...,j j j x x r j n
---==1444,2,3...,j j j x x s j n -+-==,,0,1,2,....j j j x r s j n ≥=为约束条件。
1.设计程序如下
clear all; clc; syms n
n=input('input n please.(press enter)n=') if (n==1)
a=[4,-4,0;1,0,1]; %j=1时参数矩阵 b=[1;1];
v=zeros(1,3); %最小值
c=[-1;0;0]; %目标矩阵系数矩阵 [x,f]=linprog(c,[],[],a,b,v) Else
a=zeros(2*n,3*n); for j=2:n x=zeros(1,n); r=zeros(1,n); s=zeros(1,n); x(j)=4; x(j-1)=-1; r(j)=-4;
a((j+1),:)=[x,r,s]; x(j)=4; x(j-1)=1; r(j)=0;
s(j)=4;
a((j+n),:)=[x,r,s]; %j+2
end
low=zeros(1,3*n);%最小值显示
c1=-ones(n,1); %c1是xn的系数矩阵c2=zeros(2*n,1);
c=[c1;c2];
x=zeros(1,n);
r=zeros(1,n);
s=zeros(1,n);
x(1)=4; % j=1时,赋予参数值r(1)=-4;
a(1,:)=[x,r,s];
x(1)=1; %第二个式子
r(1)=0;
s(1)=1;
a(2,:)=[x,r,s];
b=zeros(1,2*n); %2n个约束条件for i=1:2*n
if i*2<=2*n
b(i*2)=4;
end
end
b(1)=1;
b(2)=1;
[x,f]=linprog(c,[],[],a,b',low) end
6.某市有甲、乙、丙、丁四个居民区,自来水由A,B,C 三个水库供应。
四
个区每天必须得到保证的基本生活用水量分别为30、70、10、10 千吨,由于水
源紧张,三个水库每天最多只能分别供应50、60、50 千吨自来水。
由于地理位
置的差别,自来水公司从各水库向各区送水所需付出的引水管理费不同(见下表,
其中C 水库与丁区间没有输水管道),其他管理费用都是450 元/千吨。
根据公
司规定,各区用户按照统一标准900 元/千吨收费。
此外,四个区都向公司申请
了额外用水量,分别为每天50、70、20、40 千吨。
该公司应如何分配供水量,
才能获利最多?为了增加供水量,自来水公司正在考虑进行水库改造,使
三个水库每天的最大供水量都提高一倍,问那时供水方案应如何改变?公司利润
设A水库向甲、乙、丙、丁供水量为(1)
x,x(2),x(3),x(4)(单位为kt,以下皆同)。
设
B水库向甲、乙、丙、丁供水量为x(5),x(6), x(7),x(8)。
C水库向甲、乙、丙供水量为
x(9),x(10),x(11)。
设自来水公司的获利为z(单位为元)。
z=(900-450)*(x(1)+x(2)+x(3)+x(4)+x(5)+x(6)+x(7)+x(8)+x(9)+x(10)+x(11))-(160*x(1)
+130*x(2)+220*x(3)+170*x(4)+140*x(5)+130*x(6)+190*x(7)+150*x(8)+190*x(9)+200*x(10) +230*x(11)=290*x(1)+320*x(2)+230*x(3)+280*x(4)+310*x(5)
+320*x(6)+260*x(7)+300*x(8)+260*x(9)+250*x(10)+220*x(11)
约束条件为:x(1)+x(2)+x(3)+x(4)50
≤(1)
≤(2)
x(5)+x(6)+x(7)+x(8)60
≤(3)
x(9)+x(10)+x(11)50
≤(4)
x(1)+x(5)+x(9)30+50
≤(5)
x(2)+x(6)+x(10)70+70
≤(6)
x(3)+x(7)+x(11)10+20
≤(7)
x(4)+x(8)10+40
≤(8)
x(1)+x(5)+x(9)30
≥(9)
x(2)+x(6)+x(10)70
≥ (10)
x(3)+x(7)+x(11)10
≥(11)
x(4)+x(8)10
≥本题要求解z的最大值,即求解(-z)的最小x(i)0, i=1,2,3,4,5,6,7,8,9,10,11 (12)
值。
这是一个线性规划的问题。
用MATLAB求解,程序名为exam8.m,代码如下;c=-[290,320,230,280,310,320,260,300,260,250,220]; %加负号将求极大转化为求极小
part=[eye(3);zeros(1,3)];
A1=[ones(1,4),zeros(1,7);
zeros(1,4),ones(1,4),zeros(1,3);
zeros(1,8),ones(1,3);
eye(4),eye(4),part;-eye(4),-eye(4),-part];
b1=[50,60,50,80,140,30,50,-30,-70,-10,-10]; %右端项向量
v1=[0,0,0,0,0,0,0,0,0,0,0]; %下界
[x,f,exitflag,output,lag]=linprog(c,A1,b1,[],[],v1)
得到最优解为 x=[0,50,0,0,0,50,0,10,40,0,10],最优值为 f=-47600(最大值
若三个水库每天的最大供水量都提高一倍,则目标函数不变,约束条件(4)-(12)不变,(1)-(3)改变,如下:
x(1)+x(2)+x(3)+x(4)100 (1)
≤
≤
x(5)+x(6)+x(7)+x(8)120 (2)
≤
x(9)+x(10)+x(11)100 (3)
用MATLAB求解,程序名为exam82.m,代码如下;
part=[eye(3);zeros(1,3)];
A1=[ones(1,4),zeros(1,7);zeros(1,4),ones(1,4),zeros(1,3);zeros(1,8),o nes(1,3);eye(4),eye(4),part;-eye(4),-eye(4),-part];
b1=[100,120,100,80,140,30,50,-30,-70,-10,-10];
v1=[0,0,0,0,0,0,0,0,0,0,0]; %下界
[x,f,exitflag,output,lag]=linprog(c,A1,b1,[],[],v1)
得到最优解为 x=[0,100,0,0,30,40,0,50,50,0,30],最优值 f=-88700(最大值
多,为88700元,相比之前提高了41100元。
8.某牧场主知道,对于一匹平均年龄的马来说,最低的营养需求为:40磅蛋白质,20磅碳水化合物,45磅粗饲料。
这些营养成分是从不同饲料中得到的,饲料及其价格在下表中列出。
建立数学模型,确定如何以最低的成本满足最低的营
解:设牧场主每天给每匹马喂食:1x 捆草,2x 袋燕麦片,3x 块饲料块,4x 袋高蛋白浓缩料。
每匹马耗费资金z 美元。
则根据题意可得约束条件:12341234123412340.52640,
240.520,52 2.545,0,0,0,0
x x x x x x x x x x x x x x x x +++≥+++≥+++≥≥≥≥≥,目标函数为12341.8 3.50.4z x x x x =+++,MATLAB 的格
式为:
123
4
1234123412341234min
1.8 3.50.4.0.52640,
240.520,52 2.545,0,0,0,0
z x x x x ts x x x x x x x x x x x x x x x x =+++----≤-----≤-----≤-≥≥≥≥所以利用MATLAB 软件(aa.m 文件)可解为17美元。