实验五:MATLAB 最优化工具箱的使用
一、实验目的
通过一个农业生产计划优化安排的实例求解,培养学生解决实际线性规划问题的初步能力;熟悉线性规划的建模过程;掌握 Matlab 优化工具箱中线性规划函数的调用。
通过一个投资组合优化问题的实例求解,培养学生解决实际二次规划问题的初步能力;熟悉线 性规划的建模过程; 掌握 Matlab 优化工具箱中线性规划函数的调用。
二、实验内容
1. 线性规划应用案例的求解
某村计划在 100 公顷的土地上种植 a、b、c 三种农作物。可以提供的劳力、粪肥和化肥等资源的数量,种植每公顷农作物所需这三种资源的数量,以及能够获得的利润如表所示。
种植投入产出表
|
用 工 |
粪肥(吨) |
化肥(千克) |
利润(元) |
a |
450 |
35 |
350 |
1500 |
b |
600 |
25 |
400 |
1200 |
c |
900 |
30 |
300 |
1800 |
可提供资源 |
63000 |
3300 |
33000 |
|
其中一个劳动力干一天为 1 个工。现在要求为该村制定一个农作物的种植计划,确定每种农作 物的种植面积, 使得总利润最大。
操作要点:
(1)建立线性规划的数学模型;
(2)安装 Matlab 优化工具箱(Optimization Toolbox),并学习工具箱中求解线性规划的函数;
(3)利用 Matlab 优化工具箱解线性规划问题。
(4)运行该程序,在命令窗记录下最优解 x 和对应的最优值fval。
2.二次规划应用案例的求解
求解从一点(0,0,0)到超平面{x|Ax = b}的最短距离,
其中, A = [1 2 -1;-1 1 -1],b = [4 2]’。
通过建模构造二次规划问题,求解以上问题的最优解和最优值。
操作要点:
(1)建立二次规划的数学模型;
(2)安装 Matlab 优化工具箱(Optimization Toolbox),并学习工具箱中求解二次规划的函数;
(3)利用 Matlab 优化工具箱解二次规划问题。
(4)运行该程序,在命令窗记录下最优解 x 和对应的最优值fval
三、算法步骤、代码、及结果
问题一:
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元
问题二:
- 算法步骤:
该问题可以用二次规划来求解。首先,我们需要确定这个问题的数学模型。
设点( 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最优化工具箱来解决实际问题。该工具箱提供了多种最优化算法,可以帮助我们快速高效地解决各种数学模型和优化问题。
在实现过程中,我首先需要定义目标函数和约束条件等参数,并选择合适的最优化算法进行求解。通过调整算法参数和迭代次数等方式,可以进一步提高算法精度和收敛速度。此外,在使用MATLAB最优化工具箱时,我还学习了如何利用可视化界面来优化算法效果和观察结果的变化趋势。
总之,通过本次实验,我深入理解了MATLAB最优化工具箱的基本原理和使用方法,并掌握了如何在实际应用中灵活运用不同的最优化算法来解决各种复杂问题。这将为我的数学建模和优化研究提供有力的支持。
标签:工程,求解,线性规划,二次,算法,数学,工具箱,优化 From: https://www.cnblogs.com/fuchuchu/p/17472585.html