资源

一个调度问题(lp13)

/****************************************************************//*S A S S A M P L E L I B R A R Y*//*                                                              *//*姓名:LP13*//*标题:一个调度问题(lp13)*//*产品:或*//*系统:所有*//*钥匙:LP*//*项目:LP*//*数据:*//*                                                              *//*支持:更新:*//*参考编号:*//*其他:*//*                                                              *//****************************************************************/原始数据;输入名称$hour slot mon-tue-wed-thu-fri;数据线;3月20 1 10 10 10 103月20 2 9 9 9 93月20日3月8日8月8日3月20日4月11日11日3月20日5月11日11日3月20日6月11日11日3月20日7月11日11日3月20日8月11日11日迈克20 1 10 9 8 7 6迈克20 2 10 9 8 7 6迈克20 3 10 9 8 7 6迈克20 4 10 3 3 3 3迈克20 5 11 11迈克20 6 1 2 3 4 5迈克20 7 1 2 3 4 5迈克20 8 1 2 3 4 5账单20 1 10 10 10 10账单20 2 9 9 9 9账单20 3 8 8 8 8账单20 4 0 0 0 0账单20 5 1 1 1 1账单20 6 1 1 1 1 1 1账单20 7 1 1 1 1账单20 8 1 1 1 1鲍勃20 1 10 9 8 7 6鲍勃20 2 10 9 8 7 6鲍勃20 3 10 9 8 7 6鲍勃20 4 10 3 3 3 3鲍勃20 5 1 1 1 1鲍勃20 6 1 2 3 4 5鲍勃20 7 1 2 3 4 5鲍勃20 8 1 2 3 4 5;数据模型;数组工作周{5}周一周二周四周五;数组小时{4}小时1小时2小时3小时4;保留小时1小时4;设置原始结束=eof;长度低$8_col_$8_type_$8;保留类型引用;如果name='marc',则i=1;否则,如果name='mike',则i=2;否则,如果名称=“比尔”,则i=3;否则,如果name='bob',则i=4;小时{i}=小时;/*构建目标函数*/do k=1到5;_col_='x'||放置(i,1.)||放置;_row_=“对象”;_coef=工作周{k}*1000;产出;_row_='uper';如果工作周{k}^=0,则coef=1;产出;_row_=‘整数’;_系数=1;产出;结束;/*构建模型的其余部分*/如果eof,那么do;_系数=。;_col_='';_type_=“上部”;_row_=“上部”;产出;_type_='max';_row_=“对象”;产出;_type_=“int”;_row_=‘整数’;产出;/*每小时1人工作*/do j=1至8;do k=1到5;_row_='work'||put(j,1.)||put(k,1.);_type_='eq';_col_='_RHS_';_系数=1;产出;_系数=1;_type_='';do i=1至4;_col_='x'|放置(i,1.)|放置(j,1.)||放置(k,1.);产出;结束;结束;结束;/*每人吃一顿午餐*/do i=1至4;do k=1到5;_row_='lunch'| |放置(i,1.)|放置(k,1.);_type_='le';_col_='_RHS_';_系数=1;产出;_系数=1;_type_='';_col_='x'||放置(i,1.)||'4'||放(k,1.);产出;_col_='x'||放置(i,1.)||'5'||放(k,1.);产出;结束;结束;/*最多连续工作2个插槽*/do i=1至4;do k=1到5;do l=1到6;_row_='seq'|put(i,1.)|put(k,1.)| put(l,1.);_type_='le';_col_='_RHS_';_系数=2;产出;_系数=1;_type_='';do j=0到2;_col_='x'|放置(i,1.)|放置(l+j,1.)||放置(k,1.);产出;结束;结束;结束;结束;/*一周最多工作n小时*/do i=1至4;_row_='capacit'|放置(i,1.);_type_='le';_col_='_RHS_';_coef=小时{i};产出;_系数=1;_type_='';do j=1至8;do k=1到5;_col_='x'|放置(i,1.)|放置(j,1.)||放置(k,1.);产出;结束;结束;结束;结束;运行;/*求解线性规划*/proc lp sparedata noprint primalout=解决方案时间=1000 maxit1=1000 maxit 2=1000;运行;/*报告解决方案*/标题“报告的解决方案”;数据报告;集合解;保留姓名插槽mon-tue-wed-thu-fri;如果substr(_var,1,1)='x',则do;如果_value_>0,则执行;n=子(变量,2,1);槽=子(_var_,3,1);d=子项(_var_,4,1);如果n='1',则name='marc';否则,如果n='2',则name='mike';否则,如果n='3',则name='bill';其他名称='bob';如果d='1',则mon=1;否则,如果d='2',则tue=1;否则,如果d='3',则wed=1;否则,如果d='4',则thu=1;其他fri=1;产出;结束;结束;运行;proc格式;值xfmt 1=“xxx”;运行;proc制表数据=报告;类名槽;var mon——周五;表(插槽*名称),(周一至周二至周五)*sum=''*f=xfmt。/misstext=“”;运行;%放&_orlp;