matlab 中如何求解线性规划问题

如题所述

第1个回答  2013-08-06
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是变量的下界约束条件。
它们的返回值分别表示相应的约束条件在优化过程中是否有效。
第2个回答  2013-08-06
一般的线性规划用linprog函数;0-1规划用bitprog函数。

MATLAB线性规划函数求解线性规划
满足条件:矩阵A与向量x的乘积小于等于 b Aeq·x 等于 beq 变量x的下界vlb小于等于 x,并且x的上界vub大于等于x 其中,b, beq为向量,A和Aeq为矩阵,x为变量。A和b定义了线性不等式约束,而Aeq和beq则代表等式约束的系数。在MATLAB中,我们主要依赖linprog函数来求解线性规划问题。以下是三个基本的...

MATLAB11:求解线性规划问题
   语法 [x,fval] = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)    注意:linprog()解决问题的标准格式如下:   根据标准格式, 需要转换例一的问题为最小化问题!   z=-fval=2675 ...

Matlab求解二次线性规划,求命令代码。下图
第一步,创建目标函数,y=myfun(x)。其内容是 y=x1^2+x2^2+8;第二步,创建约束条件函数,[c,ceq]=mycon(x)。其内容是 c(1)=-(x1^2-x2);c(2)=-(x1+x2^2+2);ceq=[];第三步,创建主程序命令,如下 lb=[0;0];ub=[];[x,fval,exitflag]=fmincon(@myfun,x0,[],[],[]...

数模| Matlab求解线性\/整数规划问题之linprog、intlinprog、optimprob...
基于求解器:“参数提前建”。所有输入参数以矩阵形式编写,然后使用求解器进行计算。求解步骤具体求解步骤如下:基于问题:创建优化变量,构建目标和约束表达式,使用solve函数求解。基于求解器:将所有参数整理成矩阵形式,调用linprog或intlinprog函数进行计算。总结本文重点介绍了使用MATLAB求解线性\/整数规划问题...

matlab求一线性规划问题的最优解
求这个线性规划问题,可以用matlab的最小值函数fmincon。fmincon极小值函数适应用于求约束非线性多变量函数的最小值。该问题求解方法如下:1、建立目标函数,即 z=80*x11+90*x12+75*x13+60*x21+85*x22+95*x23+92*x31+80*x32+110*x33;2、建立约束函数,即 ceq(1)=100-(x11+x12+x13);ceq(...

请问一下,这个线性规划如何用matlab求解
题主的线性规划问题,可以用matlab的fmincon函数求解。求解方法:1、首先,建立目标函数 z=4*x(1)+8*x(2)+。。。+10*x(24)2、然后,建立约束函数 ceq(1)=x(1)+。。。+x(8)-(300+x(25))ceq(2)=x(9)+。。。+x(16)-(250+x(26))ceq(3)=x(17)+。。。+x(24)-(200+x(27...

如何用MATLAB处理线性规划问题
利用linprog()函数就可以了,下面是我做的一个题,给你参考一下:求解线性规划问题:min z=-0.9*x1-0.45*x2+0.05*x3-1.4*x4-0.95*x5-0.45*x6-1.9*x7-1.45*x8-0.95*x9 s.t.x1+x2+x3<=2000;x4+x5+x6<=2500;x7+x8+x9<=1200;-0.4*x1+0.6*x2+0.6*x3<=0;-0.2...

如何用matlab解决这个问题?
1、明确线性规划问题的函数式,即 max 0.6x+0.8y %超市获得最大利润 st. x+y≤2 %问题不应该是x+y>2,如是x+y=2.5 x≤1,y≤1.5 2、使用fmincon函数来求解其线性规划问题。即 [k,fval] = fmincon(@(k) myfun(k),k0,[],[],[],[],lb,ub,@(k) mycon(k));这里,x=...

matlab求解线性规划最优解 请大神帮忙
题主的线性规划最优解问题,可以这样来实现。第一步,创建目标函数,fmincon_fun(k),其内容为 a=k(1);b=k(2);c=k(3);S=3.70;P=3.75;K=1.8;R= (S*P*K)\/(S*P+S*K+P*K);ZS=(b+c)-S * a;第二步,创建约束条件函数,fmincon_con(k),其内容为 g=[b + c - R;-...

在约束最优化中,用单纯形法解线性规划的matlab程序
在约束最优化中,单纯形法是一种常用的方法来解线性规划问题。通过一个简单的MATLAB程序,我们可以实现这一算法。下面是一个解线性规划问题的MATLAB函数示例:function [zyj,zyz,k]=ssssimplex(A,N)其中,A是初始单纯形表,N是基本可行解的下标。该函数通过迭代计算找到最优解。初始时,迭代次数k设为...

相似回答