6.15

今天完成工程数学作业实验五

实验五: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);

 

 

  1. 结果

①、 

 

②、 

 

 

四、心得体会

 

线性规划应用案例

理论联系实践:通过解决农业生产计划的优化问题,我深刻理解了线性规划理论在实际问题中的应用。将抽象的数学概念转化为具体的生产计划,让我认识到数学模型在解决实际问题中的强大作用。

模型构建能力:建立线性规划模型的过程中,我学会了如何将复杂的现实问题抽象为一系列数学关系式。特别是如何根据资源限制和目标函数(本例中为总利润最大化)来准确设置决策变量、目标函数和约束条件,这一过程锻炼了我的逻辑思维和问题分析能力。

工具箱应用:掌握了Matlab优化工具箱中linprog函数的使用,从安装配置到调用参数的设置,如算法选择(双单纯形算法),这不仅提升了我的编程技能,也让我感受到现代软件工具对优化问题求解效率的显著提升。

结果分析:通过观察最优解和最优值,我直观地理解了线性规划解决方案对实际问题决策的指导意义。例如,通过对比不同作物的种植面积分配,我能够评估不同方案对总利润的影响,这对实际农业生产具有重要的经济意义。

二次规划应用案例

模型升级:虽然实验中二次规划部分的代码存在一些误导(实际上应使用quadprog函数而非linprog解决二次规划问题),但这一环节让我意识到了从线性规划到二次规划问题复杂度的提升,以及模型选择对问题解决的重要性。

算法理解:通过尝试理解并应用不同的求解算法(如内点法),我深入学习了不同优化算法的适用场景和性能差异,这对于选择合适的求解策略至关重要。

综合能力提升:二次规划的探索,虽然因代码问题未能直接呈现结果,但这个过程锻炼了我的自学能力和问题解决能力。它促使我去查阅资料,学习如何正确使用Matlab工具箱中的其他函数,如quadprog,来解决非线性优化问题。

实践经验:整个实验过程,从理论学习到实际操作,再到结果的分析与讨论,为我提供了宝贵的实践经验。这种理论与实践相结合的学习方式,极大地增强了我的专业技能和问题解决信心。

综上所述,这次实验不仅巩固了我的理论知识,更重要的是提高了我在面对实际问题时的模型构建、工具应用和结果分析能力。我相信,这些宝贵的经验和技能将在未来的学习和工作中发挥重要作用。

posted @ 2024-06-13 15:26  七安。  阅读(11)  评论(0编辑  收藏  举报