题目:某工厂有100台机器,拟分四个周期使用,在每一周期有两种生产任务。据经验,把机器x1台投入第一种生产任务,则在一个生产周期中将有x1/5台机器作废;余下的机器全部投入第二种生产任务,则有1/10台机器作废。如果干第一种生产任务每台机器可收益10,干第二种生产任务每台机器可收益5。每次周期只能选择一种生产任务。问怎样分配机器,使总收益最大?
结题思路(matlab):
1、由于四个周期,每个周期两种生产任务(1,2),则有4^2的分配情况。
2、用randi整数随机变量得出16种分配情况。
3、用两次行列for循环得出十六次情况的结果。
代码如下:
clear
clc
%sallkey
%设置变量
a=4^2;%周期为4
pr=zeros(100,4);
result=zeros(16,5);
%%
%输出所有组合的可能性
for i=1:100
aa=randi(2,1,4); %整数1-2的随便变量
for j=1:4
pr(i,j)=aa(j) ; %得到一个要求的随机只包含1和2的
end
end
pr = unique(pr,’rows’,’stable’); %删除重复的行
%%
%各种组合的结果
[n,m]=size(pr) ;m%判断是不是4^2
for i=1:n
p=0;value=100; %产品为100个
for j=1:4
if pr(i,j)==1
c=1;s=4/5;
else
c=0.5;s=9/10;
end
p=value*c+p;
value=value*s;
end
result(i,1)=p;
for zz=1:4
result(i,zz+1)=pr(i,zz);
end
end
[Y_col,Ind_row]=max(result);%每列的最大值及行号
result(Ind_row(1),:) %最大值那一行