当前位置:   article > 正文

数学规划求解器lp_solve超详细教程

lpsolver 矩阵

数学规划求解器lp_solve超详细教程

前言

最近小编学了运筹学中的单纯形法。
于是,很快便按奈不住跳动的心。
这不得不让我拿起纸和笔思考着,
一个至关重要的问题:
如何用单纯形法装一个完备的13?

恰巧,在我坐在图书馆陷入沉思的时候,
一位漂亮的小姐姐靠过来,
说:“同学,你是在看线性规划吗?
你能帮我看看这道题该怎么解好吗?”

纳尼?还真是瞌睡来了送枕头。
但是,尽管心里万马奔腾,
还是要装作若无其事的样子,蛋蛋一笑。
“这个啊,简单!让我来算算。”

但是一拿到题目之后,扫了一眼。
惊得差点没把笔吞下去。
这……城里人都这么会play的吗?
我*,25个变量。
看着那一堆约束条件,
看着这堆变量x1,x2,x3,…,x25。
总感觉,这次真的是玩脱了。

用Table?开什么国际玩笑,
且不说这得算到猴年马月,
在这期间如果搞错一个数,
那简直比吃了老坛酸菜牛肉面还酸爽。

用C++,
写个Simple algorithm用电脑跑一跑?
但是,像小编这种,
上不知虚函数,下不晓纯虚函数,
左不清explicit,右不明volatile。
连虚函数表都说不清道不明的小白,
打个simple algorithm的拼写还差不多。

气氛陷入了尴尬的沉默,
沉默是今晚的康桥。
在我快急哭了的时候,
小姐姐却淡淡一笑。

“解不出来吗?”
“嗯……这个是有点麻烦。”
“哈哈~解不出来也没关系啦。
哎,学弟你想考托福雅思吗?”
小姐姐话锋一转。“嗯哼???”
“我知道有几家托福雅思的培训机构,
那里的老师很厉害,
你可以了解一下哦。”
“……”
“……”

imageimage

不过话说回来,
对于复杂的线性规划问题,
特别是变量很多的那种,
有什么办法呢?
难道真的要亲自撸一遍单纯形法?
那你就真的是out了。

今天给大家介绍一款神器:lpsolve
一款狂拽炫酷吊炸天阿姆斯特朗回旋加速棒棒的神器。

imageimage

Part1

科普篇

lpsolve是什么?

lpsolve是sourceforge下的一个开源项目,它的介绍如下:
Mixed Integer Linear Programming (MILP) solver lp_solve solves pure linear, (mixed) integer/binary, semi-cont and special ordered sets (SOS) models.lp_solve is written in ANSI C and can be compiled on many different platforms like Linux and WINDOWS

它的特点有:

  • Linear and Integer programming solver
  • Sensitivity analysis
  • Very strong API with many programming language examples
  • IDE
  • Open source
  • Pure C code
  • Windows, Unix, Linux, Mac OSX
  • 32 and 64 bit
  • Also precompiled binaries provided

它是一个混合整数线性规划求解器,可以求解纯线性、(混合)整数/二值、半连续和特殊有序集模型。并且经过实际验证,有极高的求解效率。

应用领域:科学与研究,高级用户终端,程序开发等

开发语言:C

应用平台:可应用于Linux和WINDOWS等所有平台。

相关资源sourceforge主页:http://sourceforge.net/projects/lpsolve/?source=directory

有关lpsolve的所有资源都可以在这个主页上找到。
包括本文后面介绍的所有文件。

imageimage

有关lpsolve的详细说明文档http://web.mit.edu/lpsolve/doc/

Part2

入门篇

简单上手

看完了上面的介绍,相信大部分小伙伴还是一脸懵逼。说了这么多牛逼,转了半天,还没告诉我怎么用呢!(汗)

小编也不指望大家能耐下心来好好去读那让人头大的英语说明文档了。今天,本编就带领大家一步一步上手这个神器的求解器……

说到这里,可能有小伙伴又不乐意了,不会又要撸代码吧?呃……不撸代码是不可能了,这辈子都不可能了。

好在,天无绝人之路,lpsolver也提供了一个简易的IDE(别问我什么是IDE。IDE就是集成开发环境Integrated Development Environment ),提供给像小编这种小白使用。下面就给大家慢慢道来。

LPSolve

IDELPSolve

DE可谓是大大方便了各位新手朋友了。它的界面还算友好,功能十分强大。

界面如下:

imageimage

它的介绍如下:
The LPSolve IDE (Integrated Development Interface) is a very user friendly Windows interface to the lpsolve API. All functionality of lpsolve can be accessed via a graphical and very user friendly application.

Many thanks to Henri Gourvest for making this nice interface to lpsolve and making it available to the community.

它的几个特点如下:

  • Everything is graphical and mouse controled
  • Enter your lp model in all supported formats and even via an XLI interface (See External Language Interfaces)
  • Convert your lp model from any supported format to another supported format and even via an XLI interface (See External Language Interfaces)
  • Very user friendly editor to enter/change the model with syntax highlight.
  • Syntax checking of the model
  • Solve the model
  • See the results in grids
  • Control every possible lpsolve option (tolerances, presolve, scaling, …)
  • View the matrix in grids
  • Export model to HTML, RTF, LaTeX output
  • Export matrix to CSV, HTML, RTF output
  • Export results to CSV, HTML, RTF output
  • Show statistics about the model.

…只需要把需要求解的线性规划问题输入到求解器里面,然后点一下绿色的run按钮,就能马上出结果了。

imageimage

如下面所示:

imageimage

关于x,y的取值和目标最优值已经求出来了。还可以进行灵敏度等相关分析:

imageimage

上面对应每个约束的条件的影子价格,以及变化范围等等一应俱全。此外,lpsolveIDE还提供了很多选项,大家根据自己的需要勾选相应的功能即可。

imageimage

IDE的使用很简单,在这里不再详细说明了。另外输入语法格式等问题,可以点下面的链接查看详细说明:http://web.mit.edu/lpsolve/doc/
在左侧列表定位到lp file format 即可。

另外,lpsolve还支持其他求解器的语法格式。具体有以下:

  • MPS file format
  • CPLEX lp file format
  • LINDO lp file format
  • GNU MathProg file format
  • LPFML XML file format

具体说明也可以点击上面提供的链接,左侧定位到
Formulation of an lp model in lpsolve 即可。

怎样?是不是很神奇?

Part3

进阶篇

MPL下调用lpsolve

有些同学问我MPL是什么,我……,MPL就是Mathematical Programming Language 数学编程语言。lpsolve支持很多数学编程语言,有:

  • AMPL
  • MATLAB
  • O-Matrix
  • Sysquake
  • Scilab
  • Octave
  • FreeMat
  • Euler
  • Python
  • Sage
  • PHP
  • R
  • Microsoft Solver Foundation

碍于文章篇幅等原因,小编选取几种常用的数学编程语言,来给大家演示怎么在程序里使用lpsolve求解相关线性规划问题。

matlab下使用lpsolve环境配置在sourceforge网站(

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/593153
推荐阅读
相关标签
  

闽ICP备14008679号