• 大小: 5.61MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-01
  • 语言: C/C++
  • 标签: AOE  关键路径  

资源简介

用C++实现的代码,求AOE网络的关键路径,有详细注释

资源截图

代码片段和文件信息

#include
#include
using namespace std;

class AOE//AOE类
{

private:
int Num_Vex;//节点个数
int Num_Ace;//路径数目
char *Vex;//节点名称
int * *Matrix;//有向路径矩阵
int *Ve;//Ve数组
int *Vl;//Vl数组
int sum;//最短工期

public:
    AOE(int nint m)//构造函数,为指针开辟内存
{
Num_Vex=n;
Num_Ace=m;

sum=0;

Vex=new char[Num_Vex+1];

Matrix=new int *[Num_Vex+1];
for(int i=0;i<=Num_Vex;i++)
Matrix[i]=new int[Num_Vex+1];//为Matrix矩阵开辟内存

Ve=new int[Num_Vex+1];
Vl=new int[Num_Vex+1];
}

~AOE()//析构函数
{
;
}

void Input_Data()//输入数据
{
cout<<“Please input the vertex“< for(int i=1;i<=Num_Vex;i++)
cin>>Vex[i];//依次读入节点名称
getchar();//清空,防止对下面读入数据产生影响

cout<<“Please input the infomation between two vertex“< for(int i=1;i<=Num_Ace;i++)
{
int mnweight;
cin>>m>>n;//读入某条边的两个端点
cin>>weight;//读入有向权值
Matrix[m][n]=weight;//将权值置入对应矩阵,m表示起点,n表示终点
}
}

void Init_Data()//初始化数据
{
for(int i=0;i<=Num_Vex;i++)
for(int j=0;j<=Num_Vex;j++)
Matrix[i][j]=0;//之前将矩阵所有元素赋值为0

for(int i=0;i<=Num_Vex;i++)
Vex[i]=‘0‘;//初始化节点数组

for(int i=1;i<=Num_Vex;i++)
Ve[i]=0;//Ve数组初始化为0
}

void Create_Path()//构建关键路径,求各个节点的Ve和Vl
{
for(int i=1;i<=Num_Vex;i++)
for(int j=1;j<=Num_Vex;j++)
if(Matrix[i][j]!=0)//矩阵中某个位置不为0,说明从i节点到j节点有路径
if(Ve[i]+Matrix[i][j]>Ve[j])
Ve[j]=Ve[i]+Matrix[i][j];//发现对于节点j有更早的开始时间,修改

for(int i=1;i<=Num_Vex;i++)
Vl[i]=Ve[Num_Vex];//初始化Vl数组,每个都初始化为Ve[Num_Vex]

for(int i=Num_Vex;i>=1;i--)
for(int j=1;j<=Num_Vex;j++)
if(Matrix[i][j]!=0)//矩阵中某个位置不为0,说明从i节点到j节点有路径
if(Vl[i]>Vl[j]-Matrix[i][j])
Vl[i]=Vl[j]-Matrix[i][j];//发现对于节点j有更晚的结束时间,修改
}

void Count_Path()//求关键路径
{
int el;
cout<<“The result is“< for(int i=1;i<=Num_Vex;i++)
{
e=Ve[i];//e等于某事件开始节点对应的Ve
for(int j=1;j<=Num_Vex;j++)
{
if(Matrix[i][j]!=0)//矩阵中某个位置不为0,说明从i节点到j节点有路径
{
l=Vl[j]-Matrix[i][j];//l等于某事件结束节点对应的Vl减去完成该事件用去的时间
if(e==l)//如果e等于l,那么这个事件的路径就是关键路径的一部分
cout<<“(“< }
}
}
cout< }

void Print_Result()//打印结果
{
cout<<“The matrix is“< for(int i=1;i<=Num_Vex;i++)
{
for(int j=1;j<=Num_Vex;j++)
cout< cout< }

cout<<“The Ve is“< for(int i=1;i<=Num_Vex;i++)
cout< cout<
cout<<“The Vl is“< for(int i=1;i<=Num_Vex;i++)
cout< cout< }

void Perform()//执行函数
{
Init_Data();//初始化

Input_Data();//输入数据

Create_Path();//求Ve和Vl

Print_Result();//打印结果

Count_Path();//求关键路径
}
};

int main()
{
int nm;

cout<<“Please input the number of vertexs and edges for AOE net“< cin>>n>>m;
AOE aoe(nm);//构造AOE类的对象aoe

aoe.Perform();//执行

aoe.~AOE();

system(“pause“);
return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-06-10 09:30  AOE网络关键路径\
     目录           0  2012-06-10 09:30  AOE网络关键路径\AOE网络关键路径\
     文件     6639616  2012-05-30 15:58  AOE网络关键路径\AOE网络关键路径.sdf
     文件         930  2012-05-12 19:22  AOE网络关键路径\AOE网络关键路径.sln
     文件        9728  2012-05-30 15:58  AOE网络关键路径\AOE网络关键路径.suo
     文件        3364  2012-05-19 20:20  AOE网络关键路径\AOE网络关键路径\AOE网络关键路径.cpp
     文件        3948  2012-05-12 20:43  AOE网络关键路径\AOE网络关键路径\AOE网络关键路径.vcxproj
     文件         959  2012-05-12 20:43  AOE网络关键路径\AOE网络关键路径\AOE网络关键路径.vcxproj.filters
     文件         143  2012-05-12 19:22  AOE网络关键路径\AOE网络关键路径\AOE网络关键路径.vcxproj.user
     目录           0  2012-06-10 09:30  AOE网络关键路径\AOE网络关键路径\Debug\
     文件         406  2012-05-12 20:43  AOE网络关键路径\AOE网络关键路径\Debug\AOE网络关键路径.exe.embed.manifest
     文件         472  2012-05-12 20:43  AOE网络关键路径\AOE网络关键路径\Debug\AOE网络关键路径.exe.embed.manifest.res
     文件         381  2012-05-12 22:49  AOE网络关键路径\AOE网络关键路径\Debug\AOE网络关键路径.exe.intermediate.manifest
     文件          73  2012-05-12 22:49  AOE网络关键路径\AOE网络关键路径\Debug\AOE网络关键路径.lastbuildstate
     文件        2141  2012-05-12 22:49  AOE网络关键路径\AOE网络关键路径\Debug\AOE网络关键路径.log
     文件       72469  2012-05-12 22:49  AOE网络关键路径\AOE网络关键路径\Debug\AOE网络关键路径.obj
     文件         208  2012-05-12 20:43  AOE网络关键路径\AOE网络关键路径\Debug\AOE网络关键路径_manifest.rc
     文件         682  2012-05-12 22:49  AOE网络关键路径\AOE网络关键路径\Debug\cl.command.1.tlog
     文件        7750  2012-05-12 22:49  AOE网络关键路径\AOE网络关键路径\Debug\CL.read.1.tlog
     文件         374  2012-05-12 22:49  AOE网络关键路径\AOE网络关键路径\Debug\CL.write.1.tlog
     文件           2  2012-05-12 22:49  AOE网络关键路径\AOE网络关键路径\Debug\link-cvtres.read.1.tlog
     文件           2  2012-05-12 22:49  AOE网络关键路径\AOE网络关键路径\Debug\link-cvtres.write.1.tlog
     文件        1544  2012-05-12 22:49  AOE网络关键路径\AOE网络关键路径\Debug\link.command.1.tlog
     文件        2802  2012-05-12 22:49  AOE网络关键路径\AOE网络关键路径\Debug\link.read.1.tlog
     文件         804  2012-05-12 22:49  AOE网络关键路径\AOE网络关键路径\Debug\link.write.1.tlog
     文件         406  2012-05-12 22:49  AOE网络关键路径\AOE网络关键路径\Debug\mt.command.1.tlog
     文件         338  2012-05-12 22:49  AOE网络关键路径\AOE网络关键路径\Debug\mt.read.1.tlog
     文件         338  2012-05-12 22:49  AOE网络关键路径\AOE网络关键路径\Debug\mt.write.1.tlog
     文件         564  2012-05-12 20:43  AOE网络关键路径\AOE网络关键路径\Debug\rc.command.1.tlog
     文件         310  2012-05-12 20:43  AOE网络关键路径\AOE网络关键路径\Debug\rc.read.1.tlog
     文件         318  2012-05-12 20:43  AOE网络关键路径\AOE网络关键路径\Debug\rc.write.1.tlog
............此处省略27个文件信息

评论

共有 条评论