matlab中求解线性规划最优解的问题

例如:F(a,b)=|0.3a+0.57b|+|0.23b-0.376b|,其中a+b=1
求函数F(a,b)取最小值时a,b的值,
怎样用matlab计算求解,求各位大侠指导!!
F(a,b)=|0.3a+0.57b|+|0.23a-0.376b|,其中a+b=1

a>=0;b>=0

第1个回答  2013-07-24
用这个程序:
clear all;clc
F=@(a)abs(0.3*a+0.57*(1-a))+abs(0.23*a-0.376*(1-a));
[a,fval,exitflag]=fminbnd(F,0,1e+7);
a
b=1-a
fval

运行后可见结果。这里用0<=a<=10的7次方来替代a>=0,因为a需要有个上界。但是增加这个上界不改变收敛的结果,所以这个上界并不影响最优解的取值。追问

a+b=1

a>=0;b>=0

说明a的上限为1,b也是如此
其中exitflag=1,说明了什么?

追答

恩,我没考虑到,a的上限应该改成1。
exitflag=1表示这个函数最值在0<=a<=1中是唯一的。

追问

对于这样的一个程序,我运行结果都是exitflag>1的,怎么样调呢?
x0=[0;0];
A=[]; b=[];
Aeq=[1,1];beq=1;
VLB=[0;0]; VUB=[1;1];
[x,fval,exitflag]=fmincon('ztiaohe4',x0,A,b,Aeq,beq,VLB,VUB)

追答

exitflag的值对于不同的函数有不同的意义。不同的exitflag值其实指示着不同的程序终止的原因。因为matlab做的是数值运算,所以得到的最优解都是满足某种误差要求的近似解。

对于fminbnd, 只有得到exitflag=1才能说明解的可用性。但是对于fmincon,只要exitflag不是0或-1,解都是可用的。只是不同的数值代表了不同的误差设置。你可以在命令窗口输入doc fmincon查看具体数值的含义。

第2个回答  2013-07-17
首先把约束条件去掉,则原方程转换为F(b)=|0.3+0.27b|+|0.23-0.606b|,然后用solve函数解得b的值,那么a的值也就显然了追问

能给个具体的程序吗?matlab不怎么会