matlab求最优解问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 13:46:06
某养鸡场饲养一批小鸡,对小鸡成长的基本营养元素有A、B、C三种,市场供应的饲料有甲乙两种,这批小鸡每日对这三种元素最低需要量与各种饲料价格与所含营养元素如表所示。饲养员希望得到甲乙两种饲料的最优比率,既能满足小鸡的营养需求,又能降低饲料的购买费用。

营养元素 小鸡最低需求 甲饲料(5元/kg营养含量 乙饲料(4元/kg)营养含量

A 12单位 2 4
B 36单位 2 1
C 24(过量有害) 2 9

这种题一般只要写出它的目标函数,以及约束条件就可以通过MATLAB求解。

设购买甲x(1)Kg, 购买乙x(2)Kg
这里的目标函数很明显是:费用最低
min 5*x(1)+4*x(2)
约束条件:
(1)A元素大于等于12: 2*x(1)+4*x(2)>=12
(2)B元素大于等于36: 2*x(1)+x(2)>=36
(3)C元素等于24: 2*x(1)+9*x(2)=24
(4)物理意义: x(1)>=0,x(2)>=0

不过我没有读懂你的B与C两个条件,我觉得这两个有点矛盾,最好你再核实一下。

以下Matlab程序:
f=[5;4]; %这个是你的目标函数是系数
A=[-1,-4;-2,-1]; %这里是约束的左边系数,注意这里是A*x<=b,所以你的条件中要化为小于等于,所以这里只选了第1和第2个条件
b=[-12;-36]; %约束的右边系数
Aeq=[2,9]; %这个是等式约束,上式中的条件3
beq=[24];
xmin=[0;0]; %变量的最小值,就是上面的条件(4)
xmax=[inf;inf] %变量的最大值,此例中无,设为无穷大
x0=xmin; %计算的初值
[x,fmin]=linprog(f,A,b,Aeq,beq,xmin,xmax,x0);
x,fmin