一.所花时间
0.6h
二.代码量
30行
三.博客量
1篇
四.了解到的知识点
一、实验目的
通过一个农业生产计划优化安排的实例求解,培养学生解决实际线性规划问题的初步能力;熟悉线性规划的建模过程;掌握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)设x1,x2,x3分别表示农作物A,B,C的种植面积
问题模型:
max z = 1500x1 + 1200x2 + 1800x3
s.t. x1 + x2 + x3 = 100
450 x1 + 600 x2 + 900 x3 <=63000
35 x1 + 25 x2+ 30 x3 <=3300
350 x1+ 400 x2 + 300 x3 <=33000
x1, x2, x3 >= 0
(2)问题模型:
min{ f(x) = ½(x-x0)T(x-x0)}
s.t. Ax=b
因为x0=(0,0,0) 所以问题模型化为二次规划的约束优化问题
min{f(x) = ½xTHx}
s.t. Ax=b
其中H是单位矩阵
利用优化工具箱中的quadprog函数即可得出答案
- 代码
(1)%命令行输入
>>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]=linprog(f,a,b,aeq,beq,lb)
(2)
>>A=[1 2 -1;-1 1 -1];
>>b=[4;2];
>>H=eye(3);
>>f=zeros(3,1);
>>[x,fval]=quadprog(H,f,[],[],A,b,[])
- 结果
(1) 最优种植方案为种植A作物60公顷,B作物0公顷,C作物40公顷,总利润16200元
(2)最优点是(0.2857,1.4286,-0.8571),最优值是1.4286
四、心得体会
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
2023-05-24 每日打卡-31