工程数学实验5
算法步骤
问题1:
设x1,x2,x3分别表示农作物A,B,C的种植面积
问题模型:
max z = 1500x1 + 1200x2 + 1800x3
s.t.
x1 + x2 + x3 = 100
450x1 + 600x2 + 900x3 <=63000
35x1 + 25x2 + 30x3 <=3300
350x1 + 400x2 + 300x3 <=33000
x1, x2, x3 >= 0
2. 代码
>>f=[1500 1200 1800]';
>> f=-f;
>> a=[450 600 900;35 25 30;350 400 300];
>> b=[63000 3300 33000]';
>> acq=[1 1 1];
>> aeq=[1 1 1];
>> beq=[100];
>> lb=zeros(3,1);
>> [x,fval,exitflag,output,lamdba]=linprog(f,a,b,aeq,beq,lb)
3. 结果
x =
60.0000
0.0000
40.0000
fval =
-1.6200e+05
exitflag =
1
output =
iterations: 5
algorithm: 'interior-point-legacy'
cgiterations: 0
message: 'Optimization terminated.'
constrviolation: 1.8917e-10
firstorderopt: 1.6385e-08
lamdba =
ineqlin: [3x1 double]
eqlin: -1.1927e+05
upper: [3x1 double]
lower: [3x1 double]
最优种植方案为种植A作物60公顷,B作物0公顷,C作物40公顷,总利润16200元
问题2:
步骤
该问题可以用二次规划来求解。首先,我们需要确定这个问题的数学模型。
设点( Xi , X , Xy )到超平面 Ax = b 的最短距离为 d .则该问题的目标是求最短距离 d ,即:
 min 
而约束条件为点(,,)在超平面 Ax = b 上,因此有:
 Ax = b 
同时, d 表示所求的距离,可以表示为:
 df =
将 of 表示成决策变量的形式,得到:
 d = xTx 
其中 X =[ X ],为,为 g ] T ,为决策变量。因此,我们可以列出如下的二次规划模型:
 min XX 
 s . t . Ax = b 
 xERs 
接下来,使用 MATLAB 的二次规划函数 quadprog 求解该模型:
代码
% 构造二次规划模型
H = 2 * eye(3);
f = zeros(3,1);
Aeq = [1 1 0; 1 0 1];
beq = [1;0];
x0 = [0; 0; 0];
% 调用quadprog函数求解
[x,fval] = quadprog(H, f, [], [], Aeq, beq, [], [], x0);
结果
x =
0.3333
0.3333
-0.6667
fval =
0.6667
四、心得体会
本次实验主要学习了MATLAB最优化工具箱在线性规划和二次规划问题中的应用。通过实例求解,掌握了利用函数linprog和quadprog求解线性规划、二次规划问题的方法。
实验中,我们需要先将问题转化为数学模型,定义目标函数和约束条件,并注意限制面积、非负等特殊条件的处理。然后,我们就可以使用工具箱中对应的函数进行求解,得到最优解和最优值。
通过本次实验,我不仅更加熟悉了Matlab优化工具箱的使用,也提高了自己解决实际问题的能力,期待在以后的学习和工作中有更多机会应用所学知识。
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号