任务排程

一、总体结构
全局变量
Map per (key=pk value=前置任务列表)// 前置任务列表
Map prix(key=pk value=后置任务列表)// 后置任务列表
List firstTask //初始任务列表
List allTasks;//全任务列表
private UFDate startDate;排程开始时间
private UFDate endDate;排程结束时间
private int type;//排程类型
1.获得末级任务
a)获得末级所有任务,并将他们的排程时间置为空。
Task[] getLastLevelTask()
{
Buildsql();//拼写SQL
allTask s =Query()//查询
}

b)获得所有末级任务的前置任务列表。
getRelatedTasks(){//获得任务的前置任务和后置任务列表

}
c)
2.根据末级任务获得网络图
a)获得所有没有前置任务的任务列表,作为网络图的起始点。
getNoPerTask()
{
//根据map per中没有KEY的取值
Return firstTask;
}
b)计算网络图
计算方法:从起始任务列表中获得一个任务 ,然后获得它的前置任务和后置任务,然后对它的前置任务和后置任务分别找它们的前置任务和后置任务,再依次找他们的前置任务和后置任务,直到找不到新的前置任务和后置任务(没有前置后置任务或前置后置任务在前面查找前置后置任务时已经被查到。)。如果找到的任务在起始任务列表中,该任务则不在作为起始任务计算网络图。
做完上面工作后从起始任务列表中重复上面的工作直到起始任务都执行。

List InterNetMap()
//获得一条网络图并存储到InternetMap中,并将放到网络图中的task从leavetasks中删除,获得网络图方法为获得firstTask相关联的所有前置任务和后置任务(如果计算某个任务的前置任务和后置任务都不存在于leavetasks中,计算完毕,否则把找到的任务从leavetasks删除,并计算找到任务的前置任务和后置任务列表,进行刚才的判断。如果找到任务在firstTask中,从firstTask删除此任务)
{
List leavetasks//没有放到网络图的task
List InternetMap//存储网络图的List
For(firstTask)
{
List InternetList=new ArrayList();
If(tasks(前置或后置任务中))
{

InternetList.add(task);
Leavetasks.remove(task);
}
InternetMap.add(InternetList);

}
Return InternetMap;
}

3.根据网络图进行排程
排程的方法为对每个网络图进行排程,排程的方法为从网络图中拿到根结点任务列表以它为起点进行排程。当某一结点有前置任务时,先算别的路径的任务,直到任务到达这个结点。
Void queueTasks(InternetMap)
{
根据排程类型判断排程方式
If(type)
{
}
Else
{
}
………
}
}

Void perqueueTasks(InternetMap)
{
For (InternetMap)//计算没一条路径的排程时间
{
FirstList=getFirstList()//获得该网络的开始任务列表
While(InternetMap.get(i)中task为空)
{
For(FirstList)
{
执行每个FirstList下可执行的任务
}
}
排程的方法为从网络图中拿到根结点任务列表以它为起点进行排程。当某一结点有前置任务时,先算别的路径的任务,直到任务到达这个结点。根据我们使用的排程方式比较获得需要的时间
记录时间
获得endtime
If(getEndTime>endtime)
{
Endtime= getEndTime;//取所有网络图最早结束时间最晚的为最早结束时间。
}
}
4.获得关键路径
根据排程获得的时间对网络图根据时间进行倒推,获得关键路径。
List perqueueTaskRoad()//以正排为例
{
根据endDate根据时间寻找前一个任务
}
二、情景数据推演
1.正排
2.倒排
3.排程锁定
4.未完成参与正排
5.未完成参与倒排

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值