运筹学实验报告春季Word文档下载推荐.docx

上传人:b****1 文档编号:15327295 上传时间:2022-10-29 格式:DOCX 页数:11 大小:31.55KB
下载 相关 举报
运筹学实验报告春季Word文档下载推荐.docx_第1页
第1页 / 共11页
运筹学实验报告春季Word文档下载推荐.docx_第2页
第2页 / 共11页
运筹学实验报告春季Word文档下载推荐.docx_第3页
第3页 / 共11页
运筹学实验报告春季Word文档下载推荐.docx_第4页
第4页 / 共11页
运筹学实验报告春季Word文档下载推荐.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

运筹学实验报告春季Word文档下载推荐.docx

《运筹学实验报告春季Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《运筹学实验报告春季Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。

运筹学实验报告春季Word文档下载推荐.docx

function[sol,val,k,flag1]=danchunxingbiao(A1,C,N)

M=10000;

[mA1,nA1]=size(A1);

C1=[C,0];

val=zeros(1,length(C));

fori=1:

length(N)

c1(i)=C1(N(i));

end

nA1

a(i)=C1(i)-c1*A1(:

i);

%计算初始检验数

end

A=[A1;

a];

%构造初始单纯形表

[mA,nA]=size(A);

k=0;

%迭代次数

flag=1;

whileflag

fori=1:

(nA-1)

ifA(mA,i)<

=0

flag=0;

else

flag=1;

break;

end

end

ifflag==0%已找到最优解

val1=A(1:

(mA-1),nA)'

;

if(val1(i)~=0&

&

abs(C(N(i)))==M)

disp('

无可行解'

);

sol=inf;

val=inf;

flag3=0;

flag1=1;

flag3=1;

ifflag3

iflength(find(A(mA,1:

(nA-1))==0))>

存在无穷多最优解'

flag1=2;

存在最优解'

flag1=3;

sol=c1*val1'

elseifflag==1

forj=1:

(mA-1)

ifA(j,i)<

flag2=1;

flag2=0;

break;

ifflag==1&

flag2==1

此线性规划问题存在无界解'

val=inf;

flag1=0;

%跳出while循环

maxq=max(A(mA,1:

(nA-1)));

[m,nb]=find(A(mA,:

)==maxq);

%确定入基变量的纵坐标

fors=1:

ifA(s,nb)>

temp(s)=A(s,nA)/A(s,nb);

temp(s)=10000;

k=k+1;

mino=min(temp);

[n,mb]=find(temp==mino);

%确定入基变量的横坐标

iflength(mb)>

1

mb=mb

(1);

ab=A(mb,nb);

A2=A;

nA

ifi==mb

A(mb,j)=A2(mb,j)/ab;

A(i,j)=A2(i,j)-A2(i,nb)*(A2(mb,j)/ab);

N(i)=nb;

c1(i)=C(N(i));

A(mA,i)=C1(i)-c1*A(1:

(mA-1),i);

ifsol~=inf

length(C)

ifi==N(j)

val(i)=val1(j);

End

运行:

clc

A=[1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0;

0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0;

0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0;

-0.4,0.6,0.6,0,0,0,0,0,0,0,0,0,1,0,0,0,0;

-0.2,-0.2,0.8,0,0,0,0,0,0,0,0,0,0,1,0,0,0;

0,0,0,-0.7,0.3,0.3,0,0,0,0,0,0,0,0,1,0,0;

0,0,0,-0.5,0.5,-0.5,0,0,0,0,0,0,0,0,0,1,0;

0,0,0,0,0,0,-0.6,-0.6,0.4,0,0,0,0,0,0,0,1];

b=[2000,2500,1200,0,0,0,0,0]'

Al=[A,b];

C=[0.91.41.90.450.951.45-0.050.450.9500000000];

N=[10:

17];

[sol,val,k,flag1]=danchunxingbiao(Al,C,N)

 

2.求解结果

《运筹学》上机实习(第二次)

2015.04.26

MATLAB实现匈牙利算法

%程序文件xiongyali.m

function[z,ans]=xiongyali(marix)

%//////////////////////////////////////////////////

%输入效率矩阵marix为方阵;

%若效率矩阵中有M,则用一充分大的数代替;

%输出z为最优解,ans为最优分配矩阵;

a=marix;

b=a;

%确定矩阵维数

s=length(a);

%确定矩阵行最小值,进行行减

ml=min(a'

s

a(i,:

)=a(i,:

)-ml(i);

%确定矩阵列最小值,进行列减

mr=min(a);

forj=1:

a(:

j)=a(:

j)-mr(j);

%startworking

num=0;

while(num~=s)%终止条件是“(0)”的个数与矩阵的维数相同

%index用以标记矩阵中的零元素,若a(i,j)=0,则index(i,j)=1,否则index(i,j)=0

index=ones(s);

index=a&

index;

index=~index;

%flag用以标记划线位,flag=0表示未被划线,

%flag=1表示有划线过,flag=2表示为两直线交点

%ans用以记录a中“(0)”的位置

%循环后重新初始化flag,ans

flag=zeros(s);

ans=zeros(s);

%一次循环划线全过程,终止条件是所有的零元素均被直线覆盖,

%即在flag>

0位,index=0

while(sum(sum(index)))

%按行找出“(0)”所在位置,并对“(0)”所在列划线,

%即设置flag,同时修改index,将结果填入ans

t=0;

l=0;

if(flag(i,j)==0&

index(i,j)==1)

l=l+1;

t=j;

if(l==1)

flag(:

t)=flag(:

t)+1;

index(:

t)=0;

ans(i,t)=1;

%按列找出“(0)”所在位置,并对“(0)”所在行划线,

r=0;

r=r+1;

t=i;

if(r==1)

flag(t,:

)=flag(t,:

)+1;

index(t,:

)=0;

ans(t,j)=1;

end%对while(sum(sum(index)))

%处理过程

%计数器:

计算ans中1的个数,用num表示

num=sum(sum(ans));

%判断是否可以终止,若可以则跳出循环

if(s==num)

%否则,进行下一步处理

%确定未被划线的最小元素,用m表示

m=max(max(a));

if(flag(i,j)==0)

if(a(i,j)<

m)

m=a(i,j);

%未被划线,即flag=0处减去m;

线交点,即flag=2处加上m

a(i,j)=a(i,j)-m;

if(flag(i,j)==2)

a(i,j)=a(i,j)+m;

end%对while(num~=s)

%计算最优(min)值

zm=ans.*b;

z=0;

z=sum(sum(zm));

a=[2,10,9,7;

15,4,14,8;

13,14,16,11;

4,15,13,9];

[z,ans]=xiongyali(a)

《运筹学》上机实习(第三次)

2014.06.01

MATLAB实现目标规划的单纯形表

%只需将优先级量化成数量级,此时在使用单纯形表进行求解即可

p1=-1000;

p2=-10;

A=[1,0,1,-1,0,0,0,0;

2,1,0,0,1,-1,0,0;

3,2,0,0,0,0,1,-1];

b=[103080]'

C=[0,0,p1,0,0,p1,p2,0];

N=[3,5,7];

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1