例如: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
matlab中求解线性规划最优解的问题
答案:2 悬赏:40
解决时间 2021-11-29 18:24
- 提问者网友:喵星人荷西
- 2021-11-29 00:09
最佳答案
- 二级知识专家网友:气场征服一切
- 2021-11-29 00:34
用这个程序:
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需要有个上界。但是增加这个上界不改变收敛的结果,所以这个上界并不影响最优解的取值。
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需要有个上界。但是增加这个上界不改变收敛的结果,所以这个上界并不影响最优解的取值。
全部回答
- 1楼网友:我颠覆世界
- 2021-11-29 01:51
bintprog 求解0-1规划问题 格式如下
x = bintprog(f)
x = bintprog(f, a, b)
x = bintprog(f, a, b, aeq, beq)
x = bintprog(f, a, b, aeq, beq, x0)
x = bintprog(f, a, b, aeq, beq, x0, options)
[x, fval] = bintprog(...)
[x,fval, exitflag] = bintprog(...)
[x, fval, exitflag, output] = bintprog(...)
这里x是问题的解向量
f是由目标函数的系数构成的向量
a是一个矩阵,b是一个向量
a,b和变量x={x1,x2,…,xn}一起,表示了线性规划中不等式约束条件
a,b是系数矩阵和右端向量。
aeq和beq表示了线性规划中等式约束条件中的系数矩阵和右端向量。
x0是给定的变量的初始值
options为控制规划过程的参数系列。
返回值中fval是优化结束后得到的目标函数值。
exitflag=0表示优化结果已经超过了函数的估计值或者已声明的最大迭代次数;
exitflag>0表示优化过程中变量收敛于解x,
exitflag<0表示计算不收敛。
output有3个分量,
iterations表示优化过程的迭代次数,
cgiterations表示pcg迭代次数,
algorithm表示优化所采用的运算规则。
在使用linprog()命令时,系统默认它的参数至少为1个,
但如果我们需要给定第6个参数,则第2、3、4、5个参数也必须给出,否则系统无法认定给出的是第6个参数。遇到无法给出时,则用空矩阵“[]”替代。
例如
max=193*x1+191*x2+187*x3+186*x4+180*x5+185*x6; %f由这里给出
st.
x5+x6>=1;
x3+x5>=1;
x1+x2<=1;
x2+x6<=1;
x4+x6<=1;
%a、b由不等关系给出,如没有不等关系,a、b取[]
x1+x2+x3+x4+x5+x6=1; %aep、bep由等式约束给出
代码如下
f=[-193;-191;-187;-186;-180;-185;];
a=[0 0 0 0 -1 -1;0 -1 0 0 -1 0;1 1 0 0 0 0;0 1 0 0 0 1;0 0 0 1 0 1];
b=[-1,-1,1,1,1]';
aeq=[1 1 1 1 1 1];
beq=[3];
x=bintprog(f,a,b,aeq,beq)
注意
目标值为最大值时应乘以-1化为求最小值;
不等约束为>=时应乘以-1化为<=;
linprog 非0-1规划 格式如下
x = linprog(f,a,b)
x = linprog(f,a,b,aeq,beq)
x = linprog(f,a,b,aeq,beq,lb,ub)
x = linprog(f,a,b,aeq,beq,lb,ub,x0)
x = linprog(f,a,b,aeq,beq,lb,ub,x0,options)
x,fval] = linprog(...)
x,lambda,exitflag] = linprog(...)
[x,lambda,exitflag,output] = linprog(...)
[x,fval,exitflag,output,lambda] = linprog(...)
参数说明和使用格式同bintprog
lb和ub是约束变量的下界和上界向量
lambda有4个分量,
ineqlin是线性不等式约束条件,
eqlin是线性等式约束条件,
upper是变量的上界约束条件,
lower是变量的下界约束条件。
它们的返回值分别表示相应的约束条件在优化过程中是否有效。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯