管路单线图与线性规划
Pipe Isometric Drawing and Linear Programming
一、概述 Introduction
线性规划是运筹学的重要组成部分,也是最基本的部分。自1947年丹齐格(G.B.Dantzig)提出了求解线性规划的一般方法——单纯形法以来,实际上他提出单纯形法最早在第二次世界大战期间,有许多作者在线性规划领域做出了贡献,包括理论研究、算法及其应用。至今,线性规划在理论上趋向成熟,尤其是计算机处理问题的规模及运算速度提高后,线性规划的应用领域更加广泛,无论工业、农业、商业、交通运输、军事、经济计划和管理决策等领域都有应用。大到一个国家、一个地区,小到一个企业、一个车间、一个班组都有运用线性规划后提高经济效益的例子。
二、线性规划问题的数学模型 Math Model
l 每个问题都有一组变量——称为决策变量,一般记为:,对决策变量的每一组值:代表了一种决策方案,通常要求决策变量取非负值,即:;
l 每个问题中都有决策变量需要满足的一组约束条件——线性等式或不等式;
l 都有一个关于决策变量的线性函数——称为目标函数,要求这个目标函数在满足约束条件下实现最大化或最小化。
将约束条件及目标函数都是决策变量的线性函数的规划问题称为线性规划,其一般数学模型为:
称为目标函数,或实现最大化或实现最小化。s.t是subject to的英文缩写,它表示“以……为条件”、“假定”、“满足”之意。
称为约束条件,它可以是不等式也可以是等式。所有变量都要求大于零是非负约束条件,它既是通常实际问题中对决策变更的要求,又是用单纯形法(Simplex)求解过程中的需要,有时也将线性规划问题简称为LP(Linear Programming)问题。
三、线性规划的算法 Algorithm
美国数学家丹齐格(G.B.Dantzig)提出的单纯形法(Simplex)是求解线性规划问题的一种普遍而有效的算法。当单纯形法被精心实现时,在实际中通常能够快速地解决一般的线性规划。然而对于某些刻意仔细设计的输入,单纯形算法可能需要指数时间。线性规划的第一个多项式时间算法是椭圆算法,它在实际中运行缓和慢。第二类指数时间的算法称为内点法。与单纯形算法相比,这些算法在可行区域内部移动,中间解尽管是可行的,便未必是单纯形的顶点,但最终的解是一个顶点。对于大型输入,内点法的性能可与单纯形法相媲美,有时甚至更快。
四、编程的实现 Implementation
在https://sourceforge.net/projects/中有些求解线性规划的开源项目。开源lp_solve项目https://sourceforge.net/projects/lpsolve/功能如下:
l 混合整数线性规划求解;
l 对模型大小无限制;
l 提供源程序并且是免费的;
l 有功能强大的API接口;
l 其它编程语言方便调用;
l ……
五、结论 Conclusion
在绘制无比例的管路单线图(Pipe Isometric Drawing)时,需要保持各连接部件的拓朴结构是个难点,如在单线图中保持真实模型中的回路。处理这类问题就可以使用线性规划的方法。因为对投影后的管线的长度调整可以确保这种回路约束依然成立,且便于后期符号的绘制使用统一的方法。可以把需要生成的图中的所有管子当成决策变量,并建立回路约束、最小管段长度约束等形成数学模型。通过单纯形法对数学模型进行求解,即可得到每段管子投影后适当的长度,使后期程序只需要将管子与其它符号连接上即可。
PDF Version: Pipe Isometric Drawing and Linear Programming
Pudongxin Shanghai China
2012-9-9