一.所花时间

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. 算法步骤

(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. 代码

(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. 结果

(1) 最优种植方案为种植A作物60公顷,B作物0公顷,C作物40公顷,总利润16200元

(2)最优点是(0.2857,1.4286,-0.8571),最优值是1.4286

四、心得体会

posted on 2024-05-24 21:40  leapss  阅读(20)  评论(0)    收藏  举报