matlab编程(启发式算法)--关于钢铁轧制批量计划问题
因为之前没有过matlab编程经验,所以一头雾水,希望知道怎么编这个程序的高手能帮帮忙,这个对我很重要。给我一些提示也可以。:@Lmatlab编程(启发式算法)--关于钢铁轧制编制问题
算法设计:
假设共有N类板坯,第i类中有。vi块板坏:共有W种宽度, 设置数组
L,其中L为第w种宽度板坯的轧制长度。
Step0 设置开始变量值i=j=k=r=P=1,L = 0(1~W),fit =0,fitmin =1000
Stepl 将板坯按轧制计划类型分类
Step2 对第i类板坯排序,排序的第一规则为板坯宽度,第二规则为板坯优先级
Step3 寻找第i类第一块未排入计划的板坯I作为基准,放入第k轧制单元,将板坯j标志为已排入计划,依次向下寻找下一块最优连轧板坯,令r=j+l
Step4 假设将板坯:与板坯J连轧,判断板坯r与板坯j是否同宽,否:
转至Step6
Step5 判断k轧制单元内该宽度轧制总长度是否满足同宽最大轧制公里
数R,否:令r=r+1转回Step4
Step6 判断k轧制单元总轧制长度是否满足最大轧制公里数,否:令
r=r+1,转回Step4
Step7 计算当前惩罚值fit,计算方法为板坯r与板坯的宽度、厚度、硬
度跳跃惩罚和优先级差异惩罚之和,判断fit<FITMIN是否成立,是:
令fitmin= fit,记录当前板坯p=r,令r=r+l
Step8 判断r是否等于Ni,否:转Step4
Step9 判断fitmin= 1000是否成立,否:转至Stepll
Step10 判断i类型板坯是否已全部排入计划,是:转Stepl2,否:令k=k+l, 转Step2
Stepll 将第P块板坯放入第j个轧制单元,与板坯j连轧,将第P板坯标志位设置为已排入计划, 累加同宽轧制公里数和轧制单元轧制公里数,令j=k转Step3
Step12 判断i是否等于M,否:令i=i+1,转Step2
Step13 END
[ 本帖最后由 eight 于 2007-5-21 16:56 编辑 ]
页:
[1]