算法 批处理作业调度
来源:互联网 发布:fanuc编程模拟软件 编辑:程序博客网 时间:2024/05/21 13:18
题目
给定n个作业的集合J={J1,J2,…,Jn}。每一个作业有两项任务分别在两台机器上完成。每个作业必须先由机器1处理,再由机器2处理。作业Ji需要机器j的处理时间为tji,i=1,2,…n,j=1,2。对于一个确定的作业调度,设Fji是作业i在机器j上完成处理的时间。则所有作业在机器2上完成处理的时间和f=F21+F22+…+F2n称为该作业调度的完成时间和。
批处理作业调度问题要求,对于给定的n个作业,制定最佳的作业调度方案,使其完成时间和最小。
#include <stdio.h> #include <math.h> #define n 2int a[n+1][2]={0,0,1,2,3,4};int f1=0;//机器1完成的处理时间int *f2;//第i阶段机器2完成的时间int bValue=0;//当前完成用的时间int bestValue=1000;//最优时间 int *bOrder; //作业顺序;int *bestOrder;//最优作业顺序 void backtrack(int t){ int i,j; int temp; if(t>n){ for(i=0;i<=n;i++) bestOrder[i]=bOrder[i]; bestValue=bValue; }else{ for(j=t; j<=n; j++){//j从i开始,控制分支数 f1+=a[bOrder[j]][0];//在第1台机器上的完成处理时间 f2[t]=(f2[t-1]>f1?f2[t-1]:f1)+a[bOrder[j]][1];//在机器2上的完成处理时间,f2[0]初值为0 bValue+=f2[t];//总的完成时间和 if(bValue<bestValue){ temp=bOrder[t]; bOrder[t]=bOrder[j]; bOrder[j]=temp; backtrack(t+1); temp=bOrder[t]; bOrder[t]=bOrder[j]; bOrder[j]=temp; } f1-=a[bOrder[j]][0]; bValue-=f2[t]; } } } int main(){ int i,j,k; f2=new int[n+1]; bOrder=new int[n+1]; bestOrder=new int[n+1]; for(i=0;i<=n;i++){ f2[i]=0; bOrder[i]=i; } // backtrack(1); //输出 for(i=1;i<=n;i++) printf("%d\t",bestOrder[i]); printf("\n%d",bestValue); return 0; }
0 0
- 算法 批处理作业调度
- 操作系统实验 批处理作业的调度算法
- 回溯算法之批处理作业调度
- 算法作业-批处理作业调度-回溯|分支限界法
- 批处理作业调度
- 批处理作业调度
- 批处理作业调度问题
- 批处理作业调度
- 批处理作业调度
- 批处理作业调度问题
- 批处理作业调度问题
- 批处理作业调度问题
- 批处理作业调度问题
- 批处理作业调度
- 批处理作业调度问题
- 算法java实现--回溯法--批处理作业调度问题
- 算法java实现--分支限界法--批处理作业调度问题
- 批处理作业调度-----回溯法
- solr6.3从文档建立索引
- 复制构造函数(2)
- 还是没有题目
- 通用代码管理
- Linux Tab键无法补全
- 算法 批处理作业调度
- CentOS下如何完全卸载MySQL
- shiro 再次通过源码谈谈登录的流程,之前理解的不是很清楚!
- 12.玩转Spring Boot 事务管理
- erdaicms首款基于weui(微信网页开发样式库)的前端模版上线
- CVPR 2016-12-20
- 卷积神经网络反向传播推导
- VxWorks -- 信号量
- Python爬虫包 BeautifulSoup 学习(三) 实例