非单位时间任务安排问题

非单位时间任务安排问题

ID:26820095

大小:378.67 KB

页数:12页

时间:2018-11-29

非单位时间任务安排问题_第1页
非单位时间任务安排问题_第2页
非单位时间任务安排问题_第3页
非单位时间任务安排问题_第4页
非单位时间任务安排问题_第5页
资源描述:

《非单位时间任务安排问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、非单位时间任务安排问题肖瑶逸计科1101问题描述: 具有截止时间和误时惩罚的任务安排问题可描述如下:给定n个任务的集合S={1,2,3...,n}; 完成任务i需要ti时间,1≤i≤n; 任务i的截止时间di,1≤i≤n,即要求任务i在时间di之前结束; ④任务i的误时惩罚wi,1≤i≤n,即任务i未在时间di之前结束将招致wi的惩罚;若按时完成则无惩罚。任务安排问题要求确定S的一个时间表(最优时间表)使得总误时惩罚达到最小。算法分析:首先将其任务依其截止时间递增排序。 设对任务1,2,3,...,i,截止时间为d的最小误时惩罚为p(i,d),则p(i,d)具有

2、最优子结构性质且满足如下递归式: p(i,d)=min{p(i-1,d)+w(i),p(i-1,min{d,di}-ti)} 20,t1≤d p(1,d)= w(1),t1>d算法设计:和递推法相仿,贪心法也是从问题的某一个初始解出发,向给定的目标递推。但不同的是,推进的每一步不是依据某一固定的递推式,而是做一个局部的最优选择,即贪心选择(在例中,这种贪心选择表现为选择一行中的最大整数),这样,不断的将问题归纳为若干相似的子问题,最终产生出一个全局最优解。局部贪心的选择是否可以得出全局最优是能否采用贪心法的关键数据输入:由文件input.txt给出输入数据。第1行是

3、1个整数n,表示任务数。接下来的n行中,每行有3个整数a,b,c,表示完成相应任务需要时间a,截止时间b,误时时间c。 结果输出(示例):将计算的总误时惩罚输出到文件output.txt。 输入文件示例输出文件示例 input.txtoutput.txt 7110 14706 2260 1450 1340 1130 1420 3680代码实现:#include"stdafx.h" #include"stdio.h" #include #include"conio.h" usingnamespacestd; intn;//定义工作数 inttt[9

4、9]; intf[99][99]; intd;//最大需求时间 //结构体数组 structtsk{ intkk[3]; }tsk[99]; structpass{ intpp[3]; }pass[99];//归并排序 voidmerge(intdata[],intp,intq,intr) { inti,j,k,n1,n2; n1=q-p+1; n2=r-q; intL[99]; intR[99]; for(i=0,k=p;i

5、r(k=p,i=0,j=0;iR[j]){ data[k]=L[i]; i++;} else{ data[k]=R[j]; j++;} } if(j

6、r(inti=0;i<=d;i++) if(tsk[0].kk[0]<=i) f[0][i]=0; else f[0][i]=tsk[0].kk[2]; for(inti=1;ij?j:tsk[i].kk[1]; if(jj>tsk[i].kk[0]&&f[i][j]>f[i-1][jj-tsk[i].kk[0]]) f[i][j]=f[i-1][jj-tsk[i].kk[0]]; } } }int_tma

7、in(intargc,_TCHAR*argv[]) { cout<<"pleaseputyourworknum"; cin>>n;//工作数 for(intm=0;m>tsk[m].kk[0]; cout<<"pleaseputyour"<>tsk[m].kk[1]; cout<<"pleaseputyour"<>tsk[m].kk[2];

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。