今天完成工程数学作业实验五
实验五: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个工。现在要求为该村制定一个农作物的种植计划,确定每种农作物的种植面积,使得总利润最大。
2、求解从一点(0,0,0)到超平面的最短距离,
其中,,。
通过建模构造二次规划问题,求解以上问题的最优解和最优值。
三、算法步骤、代码、及结果
1. 算法步骤
①、
②、
2. 代码
①、% 定义目标函数的系数(注意:linprog求最小值,故目标函数取负)
f = [-1500, -1200, -1800];
% 定义不等式约束的系数矩阵A和右侧向量b
A = [1 1 1; 450 600 900; 35 25 30; 350 400 300];
b = [100; 63000; 3300; 33000];
% 定义决策变量的下界(非负)
lb = [0, 0, 0];
% 调用linprog函数求解
options = optimoptions('linprog','Algorithm','dual-simplex');
[x, fval] = linprog(f, A, b, [], [], lb, [], options);
% 输出结果
fprintf('最优解为:\n');
disp(x);
fprintf('最大总利润为: %d元\n', -fval); % 注意fval取负
②、% 定义参数
A = [1 2 -1; -1 1 -1];
b = [4; 2];
% 构建二次规划模型
Q = eye(3);
c = [];
lb = [0, 0, 0];
ub = [];
% 使用 linprog 函数求解
options = optimoptions(@linprog, 'Algorithm', 'interior-point');
[x, fval] = linprog(c, [], [], A, b, lb, ub, [], options);
% 输出结果
disp("最优解:");
disp(x);
disp("最优值:");
disp(-fval);
- 结果
①、
②、
四、心得体会
线性规划应用案例
理论联系实践:通过解决农业生产计划的优化问题,我深刻理解了线性规划理论在实际问题中的应用。将抽象的数学概念转化为具体的生产计划,让我认识到数学模型在解决实际问题中的强大作用。
模型构建能力:建立线性规划模型的过程中,我学会了如何将复杂的现实问题抽象为一系列数学关系式。特别是如何根据资源限制和目标函数(本例中为总利润最大化)来准确设置决策变量、目标函数和约束条件,这一过程锻炼了我的逻辑思维和问题分析能力。
工具箱应用:掌握了Matlab优化工具箱中linprog函数的使用,从安装配置到调用参数的设置,如算法选择(双单纯形算法),这不仅提升了我的编程技能,也让我感受到现代软件工具对优化问题求解效率的显著提升。
结果分析:通过观察最优解和最优值,我直观地理解了线性规划解决方案对实际问题决策的指导意义。例如,通过对比不同作物的种植面积分配,我能够评估不同方案对总利润的影响,这对实际农业生产具有重要的经济意义。
二次规划应用案例
模型升级:虽然实验中二次规划部分的代码存在一些误导(实际上应使用quadprog函数而非linprog解决二次规划问题),但这一环节让我意识到了从线性规划到二次规划问题复杂度的提升,以及模型选择对问题解决的重要性。
算法理解:通过尝试理解并应用不同的求解算法(如内点法),我深入学习了不同优化算法的适用场景和性能差异,这对于选择合适的求解策略至关重要。
综合能力提升:二次规划的探索,虽然因代码问题未能直接呈现结果,但这个过程锻炼了我的自学能力和问题解决能力。它促使我去查阅资料,学习如何正确使用Matlab工具箱中的其他函数,如quadprog,来解决非线性优化问题。
实践经验:整个实验过程,从理论学习到实际操作,再到结果的分析与讨论,为我提供了宝贵的实践经验。这种理论与实践相结合的学习方式,极大地增强了我的专业技能和问题解决信心。
综上所述,这次实验不仅巩固了我的理论知识,更重要的是提高了我在面对实际问题时的模型构建、工具应用和结果分析能力。我相信,这些宝贵的经验和技能将在未来的学习和工作中发挥重要作用。
标签:linprog,函数,求解,线性规划,6.15,问题,工具箱 From: https://www.cnblogs.com/zzqq1314/p/18245974