Python GLPK interfaces

來源:互聯網
上載者:User

下載:

http://www.dcc.fc.up.pt/~jpp/code/python-glpk/

安裝:

http://en.wikibooks.org/wiki/GLPK/Python

 

 

 

 

 

Google: python GLPK

 

http://spokutta.wordpress.com/the-gnu-linear-programming-kit-glpk/

 

There are several interfaces for Python:

Python:
python-glpk

(see also GLPK’s Wikipedia page

).
PyGLPK:

PyGLPK


PyMathProg:

Python MathProg (GMPL)

Java:
GLPK-java

is an interface for Java.

YALMIP:
YALMIP

is a free Matlab interface/Matlab modeling environment for various solvers which can also access GLPK using GLPKMEX.

Many more interface can be found on GLPK’s Wikipedia page

.

 

python 開發工具介紹:

http://www.builder.com.cn/2007/0915/507553.shtml

SWIG Python

http://www.swig.org/Doc1.3/Python.html

 

 

 

just follow the steps of the makefile
bottom to upper, build sequentially

=======================================================================================
PYVERS := $(shell pyversions -d)
DIR := $(shell basename `pwd`)

all:    _glpkpi.so glpkpi.py

glpkpi.py:    glpkpi.i glpkpi.c glpkpi.h Makefile
   

_glpkpi.so:    glpkpi.py glpkpi.o glpkpi_wrap.o
    gcc -Wall -shared glpkpi.o  glpkpi_wrap.o -lm -lglpk  -o _glpkpi.so

glpkpi.o:    glpkpi.c
    gcc -Wall -c -fPIC glpkpi.c -DHAVE_CONFIG_H -I D:/Program Files/Python27
glpkpi_wrap.o:    glpkpi_wrap.c
    gcc -Wall -c -fPIC glpkpi_wrap.c -DHAVE_CONFIG_H -I D:/Program Files/Python27

clean:
    rm -f *.o *~ *.pyc *.pyo _*.so glpkpi_wrap.c glpkpi.py

=======================================================================================

D:/TDDownload/pros/_Eclipse Workspace/python-glpk-0.4.43/swigwin-2.0.1>swig -pyt
hon glpkpi.i
./glpk.h(916) : Warning 314: 'in' is a python keyword, renaming to '_in'

Pydev could also finish that.

=======================================================================================

when "swig" or "gcc" shows up, just copy all the relevant files to the folders containing "swig.exe" or "gcc.exe",
D:/TDDownload/pros/_Eclipse Workspace/python-glpk-0.4.43/swigwin-2.0.1>swig -python glpkpi.i
D:/Program Files/MinGW/bin>gcc -Wall -c -fPIC glpkpi_wrap.c

need to install MinGW and add D:/Program Files/MinGW/bin to the path environment variable
c.f.
解決“Unable to find vcvarsall.bat”錯誤
   1. 首先安裝MinGW,在MinGW的安裝目錄下找到bin的檔案夾,找到mingw32-make.exe,複製一份更名為make.exe;
   2. 把MinGW的路徑添加到環境變數path中,比如我把MinGW安裝到D:/MinGW/中,就把D:/MinGW/bin添加到path中;
   3. 開啟命令列視窗,在命令列視窗中進入到要安裝代碼的目錄下;
   4. 輸入如下命令就可以安裝了。
setup.py install build --compiler=mingw32
=======================================================================================

Download GLPK
edit Build_GLPK_with_VC9.bat as (c.f. http://glpk.blogspot.com/):
----------------------------------------------------------------------------------------
rem Build GLPK with Microsoft Visual Studio Express 2008

rem NOTE: Make sure that HOME variable specifies correct path
set HOME="D:/Program Files/Microsoft Visual Studio 2005/VC"

call %HOME%/bin/vcvars32.bat
copy config_VC config.h
%HOME%/bin/nmake.exe /f Makefile_VC
%HOME%/bin/nmake.exe /f Makefile_VC check

pause
----------------------------------------------------------------------------------------

It should be OK now (glpk.lib and glpsol.exe are obtained)
----------------------------------------------------------------------------------------
        ./glpsol.exe --mps ../examples/plan.mps
GLPSOL: GLPK LP/MIP Solver, v4.45
Parameter(s) specified in the command line:
 --mps ../examples/plan.mps
Reading problem data from `../examples/plan.mps'...
Problem: PLAN
Objective: VALUE
8 rows, 7 columns, 48 non-zeros
54 records were read
GLPK Simplex Optimizer, v4.45
8 rows, 7 columns, 48 non-zeros
Preprocessing...
7 rows, 7 columns, 41 non-zeros
Scaling...
 A: min|aij| = 1.000e-002  max|aij| = 1.000e+000  ratio = 1.000e+002
GM: min|aij| = 2.534e-001  max|aij| = 3.946e+000  ratio = 1.557e+001
EQ: min|aij| = 6.422e-002  max|aij| = 1.000e+000  ratio = 1.557e+001
Constructing initial basis...
Size of triangular part = 7
      0: obj =  6.500000000e+002  infeas = 3.788e+003 (0)
*     2: obj =  4.376770833e+002  infeas = 0.000e+000 (0)
*    10: obj =  2.962166065e+002  infeas = 0.000e+000 (0)
OPTIMAL SOLUTION FOUND
Time used:   0.0 secs
Memory used: 0.0 Mb (51150 bytes)

D:/TDDownload/pros/_Eclipse Workspace/python-glpk-0.4.43/glpk-4.45/w32>pause
----------------------------------------------------------------------------------------

whenever there are path problems, simply change it to the absolute path...
setup.py
==========================================================================================
# Directory containing libglpk
GLPK_LIB_DIR = 'D:/TDDownload/pros/_Eclipse Workspace/python-glpk-0.4.43/glpk-4.45/lib'      

# Directory containing glpk.h
GLPK_INC_DIR = 'D:/TDDownload/pros/_Eclipse Workspace/python-glpk-0.4.43/glpk-4.45/include' 

# Directory containing Python.h
D:/Program Files/Python27/include/Python.h
==========================================================================================

install PLY
setup.py --help-commands

Standard commands:
  build            build everything needed to install
  build_py         "build" pure Python modules (copy to build directory)
  build_ext        build C/C++ extensions (compile/link to build directory)
  build_clib       build C/C++ libraries used by Python extensions
  build_scripts    "build" scripts (copy and fixup #! line)
  clean            clean up temporary files from 'build' command
  install          install everything from build directory
  install_lib      install all Python modules (extensions and pure Python)
  install_headers  install C/C++ header files
  install_scripts  install scripts (Python or otherwise)
  install_data     install data files
  sdist            create a source distribution (tarball, zip file, etc.)
  register         register the distribution with the Python package index
  bdist            create a built (binary) distribution
  bdist_dumb       create a "dumb" built distribution
  bdist_rpm        create an RPM distribution
  bdist_wininst    create an executable installer for MS Windows
  upload           upload binary package to PyPI
  check            perform some checks on the package

usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
   or: setup.py --help [cmd1 cmd2 ...]
   or: setup.py --help-commands
   or: setup.py cmd --help
  
  
   run ply/setup.py install

==========================================================================================
run src/setup.py install

run test.py
errro
Traceback (most recent call last):
  File "D:/TDDownload/pros/_Eclipse Workspace/python-glpk-0.4.43/examples/diet.py", line 1, in <module>
    from glpk import *
  File "D:/Program Files/Python27/lib/site-packages/glpk/__init__.py", line 27, in <module>
    from glpkpi import *
  File "D:/Program Files/Python27/lib/site-packages/glpk/glpkpi.py", line 25, in <module>
    _glpkpi = swig_import_helper()
  File "D:/Program Files/Python27/lib/site-packages/glpk/glpkpi.py", line 21, in swig_import_helper
    _mod = imp.load_module('_glpkpi', fp, pathname, description)
ImportError: DLL load failed: 找不到指定的模組。  

========================================================================================== 

make
_glpkpi.so:    glpkpi.py glpkpi.o glpkpi_wrap.o
    gcc -Wall -shared glpkpi.o  glpkpi_wrap.o -lm -lglpk  -o _glpkpi.so

make -k _glpkpi.so
gcc -Wall -shared glpkpi.o  glpkpi_wrap.o -lm -lglpk  -o _glpkpi.so
process_begin: CreateProcess(NULL, pyversions -d, ...) failed.
process_begin: CreateProcess(NULL, basename `pwd`, ...) failed.
d:/program files/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe: cannot find -lglpk
collect2: ld returned 1 exit status
make: *** [_glpkpi.so] Error 1

just copy the glpk.lib file (c.f. http://glpk.blogspot.com/) to the following directory
d:/program files/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe
D:/Program Files/MinGW/bin
D:/Program Files/MinGW/mingw32/bin
D:/Program Files/MinGW/lib/gcc/mingw32/4.5.2

==========================================================================================
make _glpkpi.so
a lot of undefined reference

d:/program files/mingw/bin/../lib/gcc/mingw32/4.5.2/glpk.lib(../src/amd/amd_2.obj):(.text[__glp_amd_2]+0xb2): undefined reference to `_ftol2_sse'
collect2: ld returned 1 exit status
make: *** [_glpkpi.so] Error 1

==========================================================================================

Build with MinGW

GLPK 4.37 or before

 

rem Build GLPK with MinGW

rem NOTE: Make sure that HOME variable specifies correct path.
set HOME="D:/Program Files/MinGW"

set PATH=%HOME%/bin;%HOME%/libexec/gcc/mingw32/4.5.2;%PATH%
copy config_MinGW config.h
%HOME%/bin/mingw32-make.exe -f Makefile_MinGW
%HOME%/bin/mingw32-make.exe -f Makefile_MinGW check

pause

 

==========================================================================================

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.