赞
踩
目标函数及约束条件均为线性函数,故被称为线性规划问题。线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题。
2021.8.4笔记
线性规划的目标函数可以是求最大值,也可以是求最小值。约束条件的不等号可以是小于号也可以是大于号。为了避免这种开形式多样性带来的不便,Matlab 中规定线性规划的概准形式为(求最大值加负号)

其中 c,x,b,beq,lb,ub为列向量,c称为价值向量,b称为资源向量,A,Aeq为矩阵。
Matlab中求解线性规划的命令为
[x,fval] = linprog(c,A,b)
[x,fvall = linprog(c,A,b,Aeq,beq)
[x,fvall = linprog(c,A,b,Aeq,beq,lb,ub)
其中x返回的是决策向量的取值,fval返回的是目标函数的最优值,c为价值向量,A,b对应的是线性不等式约束,Aeq,beq 对应的是线性等式约束,Ib 和ub分别对应的是决策向量的下界向量和上界向量。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1miTRlfl-1628044124873)()]](https://img-blog.csdnimg.cn/c0bbaf5cbacc4d7cb6076085f7e19a36.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L05ld2JpZUpf,size_16,color_FFFFFF,t_70)
% 线性规划 c = [-2;-3;-5]; a = [-2,5,-1;1,3,1]; % 不等式约束的左边如果是>=号先做变化两边同乘-1 b =[-10;12]; aeq = [1,1,1]; beq = 7; [x,y] = linprog(c,a,b,aeq,beq,zeros(3,1)) % 没有上线ub空着 x,y = -y Optimization terminated. x = 3.0000 0.0000 4.0000 y = -26.0000 x = 3.0000 0.0000 4.0000 y = 26.0000












% 线性规划题目模型一 clc; clear; a=0; hold on; while a<0.05 c=[-0.05,-0.27,-0.19,-0.185,-0.185]; A=[zeros(4,1),diag([0.025,0.015,0.055,0.026])]; b=a*ones(4,1); Aeq=[1,1.01,1.02,1.045,1.065]; beq=1; LB=zeros(5,1); [x,Q]=linprog(c,A,b,Aeq,beq,LB) Q=-Q; plot(a,Q,'*k'); a=a+0.001; end xlabel('a'); ylabel('Q');


任务分配问题:某车间有甲、乙两台机床,可用于加工三种工件.假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表.问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低?


c = [13;9;10;11;12;8] aeq = [ 1,0,0,1,0,0; 0,1,0,0,1,0; 0,0,1,0,0,1; ]; beq = [400;600;500]; a = [ 0.4,1.1,1,0,0,0; 0,0,0,0.5,1.2,1.3 ]; b = [800;900]; [x,y] = linprog(c,a,b,aeq,beq,zeros(6,1)) c = 13 9 10 11 12 8 Optimization terminated. x = 0.0000 600.0000 0.0000 400.0000 0.0000 500.0000 y = 1.3800e+04
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。