李 渊,郭兴明,苏 芳
(1.山西大同大学机电工程学院,山西大同 037003;2.山西大同大学建筑与测绘工程学院,山西大同 037003)
约束函数和目标函数都是线性函数的优化问题,称作线性规划问题[1]。线性规划是运筹学、优化设计(包括机械优化设计)中研究较早、应用广泛、方法较成熟的一个重要分支,是辅助人们进行科学管理生产生活的一种数学方法。在工农业生产、经济管理、交通运输等经济活动中,一般都要求提高经济效果,有2 种途径:①技术方面的改进,例如,使用新设备、新型原材料和改善生产工艺;②生产组织与计划的改进,即合理安排人力物力资源。例如,在下料优化设计方面,秦旭辉[2]在圆形件的剪切排样现有的需求约束下的板材用量的线性规划模型进行分析,并提出了无多余量的线性规划模型。陈立畅[3]运用线性规划对钢板弹簧的下料工序进行分析,以节省材料为目标,建立优化模型,利用软件WinQSB 求解,得出最优方案。刘鑫[4]建立了用于规划直角边零件下料问题的混合整数规划模型,并求出其松弛问题的解。在齿轮优化设计方面,宋相男[5]提出了一种基于有限元及线性规划计算斜齿面齿轮齿面接触区域载荷分布及啮合刚度的方法。张少军[6]针对一类载荷系数一定的直齿圆柱齿轮传动设计的优化问题,建立了非线性优化模型,而后等价地转化为含混合变量的线性规划模型,并给出全局优化方法。卜忠红[7-8]利用基于线性规划法计算啮合刚度和载荷分布的改进方法。此外,在铁路运输方面,如占曙光[9]针对高速铁路受干扰影响导致某区间在一段时间内部分丧失通过能力的情况,建立考虑动车组接续的列车运行调整混合整数线性规划模型,采用商业优化软件CPLEX 对模型进行求解。在装配方面,杨楠楠[10]依据起重机装配工艺建立装配作业优先顺序图,采用线性规划法建立模型,运用Lingo 软件进行求解,而后重新分配各工序,有效解决了起重机的装配流水线平衡问题。
某车间有一批长180 cm 的棒料,根据所加工零件的要求,需从这批棒料中成套截取70 cm 长的毛坯不少于100 根,52 cm长的毛坯不少于100 根,35 cm 长的毛坯不多于100 根。要求合理设计下料方案,使剩下的边角料总长度最短。根据初步估算,可能的下料方案见表1。
设计变量:以xi表示第i 种下料方案所需原材料的根数(i=1~8)。
目标函数:F(X)=5x1+6x2+23x3+5x4+24x5+6x6+23x7+5x8→min。
约束条件:g1(X)=2x1+x2+x3+x4≥100,g2(X)=2x2+x3+3x5+2x6+x7≥100,g3(X)=x1+x3+3x4+2x6+3x7+5x8≤100。
该上述一般形式的模型转化为标准形式为:求X=(x1x2x3x4x5x6x7x8x9x10x11)T,使F(X)=5x1+6x2+23x3+5x4+24x5+6x6+23x7+5x8→min。并且满足h(X)=2x1+x2+x3+x4-x9≥100,h2(X)=2x2+x3+3x5+2x6+x7-x10≥100,h3(X)=x1+x3+3x4+2x6+3x7+5x8+x11≥100,xi≥0(i=1~11)。
在数学模型的一般形式转换为标准形式过程中,需要注意的一些问题可以参考文献[1]。
基于数值法求解线性规划问题的软件主要有Matlab、Lingo等。本文着重介绍高版本Matlab 软件中用于求解混合整数线性规划intlinprog 函数。其用法基本和linprog 相差不大。Matlab 中,该模型的标注写法如下。
式中,f,x,b,beq,lb,ub,intcon 是向量,A 和Aeq 是矩阵,基本语法为x=intlinprog(f,intcon,A,b,Aeq,beq,lb,ub)。与linprog 相比,多了参数intcon,代表整数决策变量所在的位置。例如,x1和x3是整数变量,则有intcon=[1,3]。编程过程中需要注意以下事项。
(1)熟悉intlinprog 函数的基本语法,将对应参量按照一定的顺序带入语法,没有涉及到的,可以用[]表示;
(2)如果是函数求极大值,那么需要乘以-1,转化成求极小值;
(3)如果不等式是大于等于的,那么两端需要乘以-1,转化成小于等于的。
基于上述实例的2 种形式,分别基于intlinprog 函数进行编程,求解如下:
2.2.1 一般形式
2.2.2 标准形式
结果分析:两者模型的编程结果都显示,采用第一种方案下料25 根,采用第二种方案下料50 根,可以满足加工零件的需求,同时使得余料最少,为425 cm。
本文基于机械优化设计中的棒料下料实际案例,建立了线性规划的一般模型,并转化为标准形式;然后简单介绍Matlab软件中的intlinprog 函数,以及一些编程注意事项;最后基于intlinprog 函数对上述案例的2 种模型进行编程求解,结果一致,相互验证其正确性。