⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timu.cpp

📁 用于m=2 的机器调度问题
💻 CPP
字号:
#include <iostream.h>
#include<new.h>

void couttime(int *pt,int *ps,int n,int m)//计算时间的函数
{
	int i,j,k,rem,t,t_w=0,add_t1,add_t2,total_t;
	int *ji=new int[n];		// 记录
	int *ta=new int[n];		//每个工用了的时间		

	int **biaoji;
	biaoji = new int*[n];
	for (i=0; i<n; i++) 
	{
		biaoji[i] = new int[m];
	}	
		
	i=j=k=0;
	add_t1=add_t2=total_t=0;

	for(i=0;i<n;i++)
	{
		ji[i]=ta[i]=0;
		for(j=0;j<m;j++)
		{
			biaoji[i][j]=1;
		}
	}

	for(t=1;t_w==0&&t<1100;t++)
	{
		for(i=0;i<n;i++)
		{   
			rem=ji[i];
			rem=ps[i*m+rem];
			if(t-ta[i]>=pt[i*m+rem])
			{
				int b=1;
				for(j=0;j<i;j++)
				{
					if(biaoji[j][rem]==1)
					{
						b=0; break;
					}
				}
				if(b==1)//若此工件的前面的工序都完成了
				{
					biaoji[i][rem]=0;
					ji[i]++;
					ta[i]=t;
				}
			}
		}
		t_w=1;
		for(i=0;i<n;i++)
		{
			for(j=0;j<m;j++)
			{
				if(biaoji[i][j]==1)
				{
					t_w=0;	break;
				}
			}
			if(t_w==0)	break;
		}
	}

	total_t=t-1;
	cout<<endl<<"加工花费的时间为 : "<<total_t<<endl<<endl;
}
void main()
{
	int time[2][22]={2,4,8,9,21,23,6,2,8,5,71,13,3,33,17,22,9,1,27,39,3,5,
				     7,5,6,11,7,8,3,9,2,22,69,8,7,42,4,16,9,8,15,14,18,28};
	int biaoji[22]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
	int i,j,k,t,a_or_b,sa_or_b;
	int sa=0,sb=21,shunxu[2][22];

	for(k=0;k<22;k++)
	{
		t=0;
		for(i=0;i<2;i++)            //第 1 步
		{
			for(j=0;j<22;j++)
			{
				if(t==0 && biaoji[j]==1)
				{
					t=time[i][j];
					a_or_b=i;
					sa_or_b=j;
				}				
				if(t>time[i][j]&& biaoji[j]==1)
				{
					t=time[i][j];
					a_or_b=i;
					sa_or_b=j;
				}
			}
		}   
		if(a_or_b==0)				 //第 2 步
		{
			shunxu[0][sa]=sa_or_b;
			sa++;
		}
		else
		{
			shunxu[0][sb]=sa_or_b;
			sb--;
		}
		biaoji[sa_or_b]=0;	//第 3 步

	}
    
	for(k=0;k<22;k++)
	{
		shunxu[1][k]=shunxu[0][k];
	}
	cout<<endl<<endl;

	cout<<"在第一机器上的加工次序为:"<<endl;   //输出结果
	for(i=0;i<22;i++) 
	{
		cout<<shunxu[0][i]+1<<"\t";
	}
	cout<<endl<<endl<<"在第二机器上的加工次序为:"<<endl;
	for(i=0;i<22;i++)
	{
		cout<<shunxu[1][i]+1<<"\t";
	}
	cout<<endl;

	int *pt,*ps;
	pt=time[0];
	ps=shunxu[0];
	couttime(pt,ps,2,22);  //调用函数算出其花费的时间
}



	


		


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -