每人连续工作6小时。下表是一天8班次所需值班警员的人数统计。在不考虑时间段中间有警员上班和下班的情况下,该城市110巡警大队至少需多少警员才能满足值班要求?
班次 1 2 3 4 时间段 6:00-9:00 9:00-12:00 12:00-15:00 15:00-18:00 人数 70 80 65 90 班次 5 6 7 8 时间段 18:00-21:00 21:00-24:00 24:00-3:00 3:00-6:00 人数 80 100 120 90 4、某工厂生产每件产品需经A,B,C三个车间,每个车间所需的工时数如下表所示, 车间 生产单位甲产品需工时数 生产单位乙产品需工时数 一周可用工时数 A 2 1 10 B 1 1 8 C 0 1 7 已知生产单位甲产品工厂可获利4万元,生产单位乙产品工厂可获利3万元,问该厂如何安排生产才能使每周获得的利润最大? 5、用MATLAB解决的线性规划问题的标准形式为:
min f?xx?Rn
sub.to:A?x?b Aeq?x?beq lb?x?ub
其中f、x、b、beq、lb、ub为向量,A、Aeq为矩阵。其它形式的线性规划问题都可经过适当变换化为此标准形式。 函数 linprog
格式 x = linprog(f,A,b) %求min f ' *x sub.to A?x?b线性规划的最优解。
x = linprog(f,A,b,Aeq,beq) %等式约束Aeq?x?beq,若没有不等式约束
A?x?b,则A=[ ],b=[ ]。
x = linprog(f,A,b,Aeq,beq,lb,ub) %指定x的范围lb?x?ub,若没有等式约束
Aeq?x?beq ,则Aeq=[ ],beq=[ ]
x = linprog(f,A,b,Aeq,beq,lb,ub,x0) %设置初值x0
x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options) % options为指定的优化参数
35
[x,fval] = linprog(?) % 返回目标函数最优值,即fval= f ' *x。 [x,lambda,exitflag] = linprog(?) % lambda为解x的Lagrange乘子。 [x, lambda,fval,exitflag] = linprog(?) % exitflag为终止迭代的错误条件。 [x,fval, lambda,exitflag,output] = linprog(?) % output为关于优化的一些信息
说明 若exitflag>0表示函数收敛于解x,exitflag=0表示超过函数估值或迭代的最大数字,exitflag<0表示函数不收敛于解x;若lambda=lower 表示下界lb,lambda=upper表示上界ub,lambda=ineqlin表示不等式约束,lambda=eqlin表示等式约束,lambda中的非0元素表示对应的约束是有效约束;output=iterations表示迭代次数,output=algorithm表示使用的运算规则,output=cgiterations表示PCG迭代次数。 例5-1 求下面的优化问题
min ?5x1?4x2?6x3 sub.to x1?x2?x3?20 3x1?2x2?4x3?42 3x1?2x2?30
0?x1,0?x2,0?x3
解:
>>f = [-5; -4; -6];
>>A = [1 -1 1;3 2 4;3 2 0]; >>b = [20; 42; 30]; >>lb = zeros(3,1);
>>[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb)
结果为:
x = %最优解 0.0000 15.0000 3.0000 fval = %最优值 -78.0000
exitflag = %收敛
36
1 output =
iterations: 6 %迭代次数 cgiterations: 0
algorithm: 'lipsol' %所使用规则 lambda =
ineqlin: [3x1 double] eqlin: [0x1 double] upper: [3x1 double] lower: [3x1 double] >> lambda.ineqlin ans = 0.0000 1.5000 0.5000 >> lambda.lower ans = 1.0000 0.0000 0.0000
表明:不等约束条件2和3以及第1个下界是有效的 三、实验作业
1、把实验内容里面的例2、3、4完成好。
2、在教材课后习题中任选两个应用题,建立模型并用软件求解。
37
38