运筹学最优化

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab在最优化问题中的应用

**

(**大学*学院**班)

摘要:通过对最优化问题的研究可知,在解最优化问题时的运算量非常大,

并且很复杂,运用MATLAB工具编程并解决一些实际问题(生产计划安排、指派问题)

关键词:最优化 MATLAB 生产计划安排指派问题

引言:

在实际生活中有很多问题,需要运用到最优化,以达到我们的要求。例如求最大利润、最佳安排等。

1.提出问题:

⑴某制造厂利用金属薄板生产4种产品,其生产系统有5个车间:冲压、

钻孔、装配、喷漆和包装。它们的生产数据和产品利润及市场销售量如表1和表2所示。现已知下月制造乙和丁产品的金属板的最大供应量为2000㎡,产品乙每个需2㎡.产品丁每个需1.2㎡.现要求拟定下月实现最大利润的产品搭配计划。

⑵ 4个工人分派做4项工作,规定每人只能做1项工作,每项工作只能1个人做。现设每个工人做每项工作所消耗的时间如表3所示,求总耗时最少的分派方案。

2. 建立模型:

⑴设1x 、2x 、3x 、4x 分别为产品甲、乙、丙、丁的月生产数,则从表1、表2可得问题的数学模型:

Max z=4*1x +10*2x +5*3x +6*4x

s.t.⎪⎪⎪⎪⎪

⎪⎪⎩⎪⎪⎪⎪

⎪⎪

⎪⎨⎧≤≤≤≤≤≤≤≤≤+≤+++≤+++≤+++≤++≤+++1000

1003000

50050006000100020002.1240005.002.006.002.045012.003.02.004.050012.005.01.005.0400

1.01

2.006.04001.005.015.00

3.043

21424321432143214214321x x x x x x x x x x x x x x x x x x x x x x x x x

⑵ 本题是一个平衡的分配问题。设指派问题的效益矩阵为4*4)(ij c ,其元素ij c 表示指派第i 个人去做第j 项工作是的效率(耗时)。设问题的决策变量为

ij x ,是0-1变量,即

⎩⎨

⎧=项工作

人去做第当不指派第,

项工作人去做第当指派第j i 0j i ,1ij x

则其数学模型为:

Min ∑∑===41i 4

1

z

j ij

ij x c

s.t.⎪⎪⎪⎪⎩

⎪⎪⎪⎪⎨⎧======∑∑==)(或4,3,2,1,10)4,3,2,1(1)4,3,2,1(14

1

4

1j i x j x i x ij i ij j ij

3. 求解模型:

求解上述模型时,运用matlab 工具中的linprog ()函数。 ⑴ 将模型进行改为标准型: Min z ’=-4*1x -10*2x -5*3x -6*4x

s.t.⎪⎪⎪⎪⎪

⎪⎪⎩⎪⎪⎪⎪

⎪⎪

⎪⎨⎧≤≤≤≤≤≤≤≤≤+≤+++≤+++≤+++≤++≤+++1000

1003000

50050006000100020002.1240005.002.006.002.045012.003.02.004.050012.005.01.005.0400

1.01

2.006.04001.005.015.00

3.043

21424321432143214214321x x x x x x x x x x x x x x x x x x x x x x x x x 前5个式子为不等式约束

则该线性规划的matlab 程序: >> f=[4 10 5 6]';f=-f;

>> a=[0.03 0.15 0.05 0.1;0.06 0.12 0 0.1;0.05 0.1 0.05 0.12;0.04 0.2 0.03 0.12];

>> a=[a;0.02 0.06 0.02 0.05;0 2 0 1.2]; %构成a >> b=[400 400 500 450 400 2000]';

>> lb=[1000 0 500 100]'; %决策变量下界 >> ub=[6000 500 3000 1000]'; %决策变量上界 >>

[x,fval,exitflag,output,lambda]=lin prog(f,a,b,[],[],lb,ub); %[]表示缺少等式约束中的aeq 和beq

Optimization terminated successfully. %最优化成功的结束 >> exitflag exitflag =

1 %表示线性规划有最优解

>>x

x =

1.0e+003 *

5.5000

x的值为5500

1

0.5000

x的值500

2

3.0000

x的值3000

3

0.1000

x的值100

4

>> fval

fval =

-4.2600e+004 最小值

由以上结果可得下月计划的最优方案为:生产甲产品5500件,乙产品500件,丙产品3000件,丁产品100件,此时利润最大为42600元。

⑵下面给出该题的matlab语言程序:

>> e=[15 18 21 24;19 23 22 18;26 17 16 19;19 21 23 17]; %效率矩阵>> a=e';f=a(:); %f是目标函数

>> o=ones(1,4);z=zeros(1,4);y=eye(4); %o中元素均为1,eye()为单位阵

>> aeq=[o,z,z,z;z,o,z,z;z,z,o,z;z,z,z,o];

>> aeq=[aeq;y,y,y,y]; %形成矩阵aeq

>> beq=ones(8,1);lb=zeros(16,1);

>> [x,fval,exitflag,output,lambda]=linprog(f,[],[],aeq,beq,lb);

%无不等式约束,a,b用[]表示

Optimization terminated successfully. %最优化成功结束

>> xv=reshape(x,4,4);xx=xv'; %xx为指派方阵

>> xx0=round(xx); %xx0为xx取整后的方阵>> xe=xx0.*e;

>> fv=sum(sum(xe)); %取整后的最优值

>> fval %最优值

fval =

70.0000

>> fv %总耗时

fv =

70

>> xx %未取整时的指派方阵

xx =

0.4834 0.5166 0.0000 0.0000

0.5166 0.0000 0.0000 0.4834

0.0000 0.0000 1.0000 0.0000

0.0000 0.4834 0.0000 0.5166

相关文档
最新文档