大众信息网

怎样在matlab中规划求解?

关注:85  答案:2  手机版
解决时间 2021-03-06 07:53
就是简单的多元线性规划求解
不用excel
请告诉我一下用什么函数
谢谢!
最佳答案
用linprog、fminsearch、fmincon、fminbnd等,例如:

% 线性规划--函数linprog()的简单应用示例
%
% 优化问题:
% max -5x1 + 6x2 + 7x3
% s.t. 5x1 - 6x2 + 10x3 <= 20
% x1 + x2 + x3 = 5
% x1 + 5x2 - 3x3 >=15
% x1,x2,x3 >=0
%
% 注意:原问题不是标准形式,要先把原问题转化为最小化标准形式
% Min f'(x)
% s.t. AX <= B
% AeqX = Beq
% LB <= X <= UB
% 即:
% min 5x1 - 6x2 - 7x3
% s.t.
% 5x1 - 6x2 + 10x3 <= 20
% -x1 - 5x2 + 3x3 <=-15
% x1 + x2 + x3 = 5
% x1,x2,x3 >=0

clear all
clc

f = [5 -6 -7]';
A = [5 -6 10
-1 -5 3
0 0 0 ];
b = [20 -15 0]';
Aeq = [1 1 1];
beq = [5];
lb = zeros(3,1);
[x, fval, exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb)
全部回答
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是变量的下界约束条件。 它们的返回值分别表示相应的约束条件在优化过程中是否有效。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!