windows 7 安裝最優化計算包cvxopt
目標:在windows 7 (64bit) ,python2.7 環境下面安裝cvxopt,以便進行線性規劃、二次規劃、半正定規劃等的計算。
解決過程簡略記錄:參考了cvxopt的官方說明 來安裝cvxopt,但卡在了LAPACK的編譯結果liblapack.a不能正確輸出上面,LAPACK啊LAPACK。。。
於是又參考了 《如何在Windows下使用LAPACK和ARPACK》 的工作,正確輸出了liblapack.a,之後再按照cvxopt的官方說明進行就沒有問題了。
整體的過程如下:
1,windows7上安裝矩陣計算BLAS/LAPACK
1.1編譯BLAS
下載BLAS的最新版原始檔
cd BLAS
sed 's/_LINUX/_WIN/' make.inc -i
make && cp blas_WIN.a ../libblas.a
這樣就得到了 libblas.a,在cvxopt的編譯過程中需要。
1.2編譯LAPACK
下載lapack的最新原始檔,解壓。
tar -xvf lapack-3.4.2.tgz
cd lapack-3.4.2這後面編譯LAPACK的步驟就按照 這篇博文《如何在Windows下使用LAPACK和ARPACK》來進行了。 (1). 開啟解壓縮資料夾,把lapack-3.4.2\BLAS\SRC裡面的所有*.f檔案 以及 lapack-3.4.2\INSTALL裡面的dlamch.f和slamch.f兩個檔案 都複製到 lapack-3.4.2\SRC 資料夾裡面。複製的時候提示有兩個檔案是重複的,我選擇了不要覆蓋。這樣BLAS和LAPACK兩個庫的原始檔都在一起了。
cd SRC
gfortran -fimplicit-none -g -c *.f -O2
(等待十幾分鍾,可以在Windows下看到SRC資料夾裡面源源不斷地冒出.o檔案)
然後以下檔案需要無優化地重新編譯
gfortran -fimplicit-none -g -c slaruv.f -O0
gfortran -fimplicit-none -g -c dlaruv.f -O0
gfortran -fimplicit-none -g -c sla_wwaddw.f -O0
gfortran -fimplicit-none -g -c dla_wwaddw.f
gfortran -fimplicit-none -g -c cla_wwaddw.f -O0
gfortran -fimplicit-none -g -c zla_wwaddw.f -O0
我是一行一行執行的……
(3).用ar 連線成一個庫 ar rcs liblapack.a *.o
這樣就在SRC資料夾裡得到LAPACK庫檔案 liblapack.a。
2,編譯cvxopt
按照cvxopt的官方說明 進行。
(2)解壓
tar -xvf cvxopt-1.1.6.tar.gz
cd cvxopt-1.1.6/src
(3)修改setup.py
-
- 修改 變數 BLAS_LIB = [‘blas’,’gfortran’]
- 修改變數 BLAS_LIB_DIR = ‘.’
sed 's/-mno-cygwin//g' -i'.bak' c:\Python27\Lib\distutils\cygwinccompiler.py
(6)在cvxopt-1.1.6資料夾下執行如下命令
python setup.py build --compiler=mingw32
python setup.py install
最終在 C:\Python27\Lib\site-packages 下看到了cvxopt-1.1.6-py2.7.egg-info,並且用ipython能夠順利的import cvxopt. DONE!!!
(7)不要忘了把python的編譯方式改回來
mv c:\Python27\Lib\distutils\cygwinccompiler.py.bak c:\Python27\Lib\distutils\cygwinccompiler.py
==================================================
下面執行cvxopt官方的一個線性規劃的例子:
'''
Created on 2013-9-11
@author: Waleking
'''
from cvxopt import matrix, solvers
if __name__ == '__main__':
Q = 2*matrix([ [2, .5], [.5, 1] ])
p = matrix([1.0, 1.0])
G = matrix([[-1.0,0.0],[0.0,-1.0]])
h = matrix([0.0,0.0])
A = matrix([1.0, 1.0], (1,2))
b = matrix(1.0)
sol=solvers.qp(Q, p, G, h, A, b)
print(sol['x'])
在eclipse+pydev中的執行結果:
pcost dcost gap pres dres
0: 1.8889e+00 7.7778e-01 1e+00 3e-16 2e+00
1: 1.8769e+00 1.8320e+00 4e-02 1e-16 6e-02
2: 1.8750e+00 1.8739e+00 1e-03 2e-16 5e-04
3: 1.8750e+00 1.8750e+00 1e-05 1e-16 5e-06
4: 1.8750e+00 1.8750e+00 1e-07 3e-16 5e-08
Optimal solution found.
[ 2.50e-01]
[ 7.50e-01]
附上cvxopt的setup.py:
from distutils.core import setup, Extension
from glob import glob
# Modifiy this if BLAS and LAPACK libraries are not in /usr/lib.
#BLAS_LIB_DIR = '/usr/lib'
BLAS_LIB_DIR = '.'
# Default names of BLAS and LAPACK libraries
BLAS_LIB = ['blas','gfortran']
#LAPACK_LIB = ['lapack','gfortran']
LAPACK_LIB = ['lapack']
BLAS_EXTRA_LINK_ARGS = []
# Set environment variable BLAS_NOUNDERSCORES=1 if your BLAS/LAPACK do
# not use trailing underscores
BLAS_NOUNDERSCORES = False
# Set to 1 if you are using the random number generators in the GNU
# Scientific Library.
BUILD_GSL = 0
# Directory containing libgsl (used only when BUILD_GSL = 1).
GSL_LIB_DIR = '/usr/lib'
# Directory containing the GSL header files (used only when BUILD_GSL = 1).
GSL_INC_DIR = '/usr/include/gsl'
# Set to 1 if you are installing the fftw module.
BUILD_FFTW = 0
# Directory containing libfftw3 (used only when BUILD_FFTW = 1).
FFTW_LIB_DIR = '/usr/lib'
# Directory containing fftw.h (used only when BUILD_FFTW = 1).
FFTW_INC_DIR = '/usr/include'
# Set to 1 if you are installing the glpk module.
BUILD_GLPK = 0
# Directory containing libglpk (used only when BUILD_GLPK = 1).
GLPK_LIB_DIR = '/usr/lib'
# Directory containing glpk.h (used only when BUILD_GLPK = 1).
GLPK_INC_DIR = '/usr/include'
# Set to 1 if you are installing the DSDP module.
BUILD_DSDP = 0
# Directory containing libdsdp (used only when BUILD_DSDP = 1).
DSDP_LIB_DIR = '/usr/lib'
# Directory containing dsdp5.h (used only when BUILD_DSDP = 1).
DSDP_INC_DIR = '/usr/include/dsdp'
# No modifications should be needed below this line.
extmods = []
# Macros
MACROS = []
if BLAS_NOUNDERSCORES: MACROS.append(('BLAS_NO_UNDERSCORE',''))
# optional modules
if BUILD_GSL:
gsl = Extension('gsl', libraries = ['m', 'gsl'] + BLAS_LIB,
include_dirs = [ GSL_INC_DIR ],
library_dirs = [ GSL_LIB_DIR, BLAS_LIB_DIR ],
extra_link_args = BLAS_EXTRA_LINK_ARGS,
sources = ['src/C/gsl.c'] )
extmods += [gsl];
if BUILD_FFTW:
fftw = Extension('fftw', libraries = ['fftw3'] + BLAS_LIB,
include_dirs = [ FFTW_INC_DIR ],
library_dirs = [ FFTW_LIB_DIR, BLAS_LIB_DIR ],
extra_link_args = BLAS_EXTRA_LINK_ARGS,
sources = ['src/C/fftw.c'] )
extmods += [fftw];
if BUILD_GLPK:
glpk = Extension('glpk', libraries = ['glpk'],
include_dirs = [ GLPK_INC_DIR ],
library_dirs = [ GLPK_LIB_DIR ],
sources = ['src/C/glpk.c'] )
extmods += [glpk];
if BUILD_DSDP:
dsdp = Extension('dsdp', libraries = ['dsdp'] + LAPACK_LIB + BLAS_LIB,
include_dirs = [ DSDP_INC_DIR ],
library_dirs = [ DSDP_LIB_DIR, BLAS_LIB_DIR ],
extra_link_args = BLAS_EXTRA_LINK_ARGS,
sources = ['src/C/dsdp.c'] )
extmods += [dsdp];
# Required modules
base = Extension('base', libraries = ['m'] + LAPACK_LIB + BLAS_LIB,
library_dirs = [ BLAS_LIB_DIR ],
define_macros = MACROS,
extra_link_args = BLAS_EXTRA_LINK_ARGS,
sources = ['src/C/base.c','src/C/dense.c','src/C/sparse.c'])
blas = Extension('blas', libraries = BLAS_LIB,
library_dirs = [ BLAS_LIB_DIR ],
define_macros = MACROS,
extra_link_args = BLAS_EXTRA_LINK_ARGS,
sources = ['src/C/blas.c'] )
lapack = Extension('lapack', libraries = LAPACK_LIB + BLAS_LIB,
library_dirs = [ BLAS_LIB_DIR ],
define_macros = MACROS,
extra_link_args = BLAS_EXTRA_LINK_ARGS,
sources = ['src/C/lapack.c'] )
umfpack = Extension('umfpack',
include_dirs = [ 'src/C/SuiteSparse/UMFPACK/Include',
'src/C/SuiteSparse/AMD/Include',
'src/C/SuiteSparse/AMD/Source',
'src/C/SuiteSparse/SuiteSparse_config' ],
library_dirs = [ BLAS_LIB_DIR ],
define_macros = MACROS + [('NTIMER', '1'), ('NCHOLMOD', '1')],
libraries = LAPACK_LIB + BLAS_LIB,
extra_compile_args = ['-Wno-unknown-pragmas'],
extra_link_args = BLAS_EXTRA_LINK_ARGS,
sources = [ 'src/C/umfpack.c',
'src/C/SuiteSparse/UMFPACK/Source/umfpack_global.c',
'src/C/SuiteSparse/UMFPACK/Source/umfpack_tictoc.c' ] +
['src/C/SuiteSparse/SuiteSparse_config/SuiteSparse_config.c'] +
glob('src/C/SuiteSparse_cvxopt_extra/umfpack/*'))
# Build for int or long?
import sys
if sys.maxsize > 2**31: MACROS += [('DLONG',None)]
cholmod = Extension('cholmod',
library_dirs = [ BLAS_LIB_DIR ],
libraries = LAPACK_LIB + BLAS_LIB,
include_dirs = [ 'src/C/SuiteSparse/CHOLMOD/Include',
'src/C/SuiteSparse/COLAMD',
'src/C/SuiteSparse/AMD/Include',
'src/C/SuiteSparse/COLAMD/Include',
'src/C/SuiteSparse/SuiteSparse_config' ],
define_macros = MACROS + [('NPARTITION', '1'), ('NTIMER', '1')],
extra_link_args = BLAS_EXTRA_LINK_ARGS,
sources = [ 'src/C/cholmod.c' ] +
['src/C/SuiteSparse/AMD/Source/' + s for s in ['amd_global.c',
'amd_postorder.c', 'amd_post_tree.c', 'amd_2.c']] +
['src/C/SuiteSparse/COLAMD/Source/' + s for s in ['colamd.c',
'colamd_global.c']] +
['src/C/SuiteSparse/SuiteSparse_config/SuiteSparse_config.c'] +
glob('src/C/SuiteSparse/CHOLMOD/Core/c*.c') +
glob('src/C/SuiteSparse/CHOLMOD/Cholesky/c*.c') +
['src/C/SuiteSparse/CHOLMOD/Check/cholmod_check.c'] +
glob('src/C/SuiteSparse/CHOLMOD/Supernodal/c*.c') )
amd = Extension('amd',
include_dirs = [ 'src/C/SuiteSparse/AMD/Include',
'src/C/SuiteSparse/SuiteSparse_config' ],
define_macros = MACROS,
sources = [ 'src/C/amd.c' ] + glob('src/C/SuiteSparse/AMD/Source/*.c') )
misc_solvers = Extension('misc_solvers',
libraries = LAPACK_LIB + BLAS_LIB,
library_dirs = [ BLAS_LIB_DIR ],
define_macros = MACROS,
extra_link_args = BLAS_EXTRA_LINK_ARGS,
sources = ['src/C/misc_solvers.c'] )
extmods += [base, blas, lapack, umfpack, cholmod, amd, misc_solvers]
setup (name = 'cvxopt',
description = 'Convex optimization package',
version = '1.1.6',
long_description = '''
CVXOPT is a free software package for convex optimization based on the
Python programming language. It can be used with the interactive Python
interpreter, on the command line by executing Python scripts, or
integrated in other software via Python extension modules. Its main
purpose is to make the development of software for convex optimization
applications straightforward by building on Python's extensive standard
library and on the strengths of Python as a high-level programming
language.''',
author = 'M. Andersen, J. Dahl, and L. Vandenberghe',
author_email = '[email protected], [email protected]gmail.com, [email protected]',
url = 'http://abel.ee.ucla.edu/cvxopt',
license = 'GNU GPL version 3',
ext_package = "cvxopt",
ext_modules = extmods,
package_dir = {"cvxopt": "src/python"},
packages = ["cvxopt"])
相關推薦
windows 7 安裝最優化計算包cvxopt
目標:在windows 7 (64bit) ,python2.7 環境下面安裝cvxopt,以便進行線性規劃、二次規劃、半正定規劃等的計算。 解決過程簡略記錄:參考了cvxopt的官方說明 來安裝cvxopt,但卡在了LAPACK的編譯結果liblapack.a不能正確輸出
虛擬機器VirtualBox裡redhat跟主機windows 7安裝增強包和設定共享檔案
1. 安裝增強功能包步驟:1、點選裝置中的“安裝增強功能包” 2、如果有自動彈出,則按照提示依次點選下一步即可。 如果不行,則在terminal中依次輸入: df -h; cd "最後一個路徑";  
windows下python科學計算包numpy無腦安裝
windows下python科學計算包numpy的exe可執行檔案直接安裝 可以去下載量最多的1.10.1裡下載你需要的numpy包。 這裡有2.7,3.3,和3.4版本numpy的exe檔案,安裝之前請確保你已經安裝了對應版本的python,p
linux和windows下安裝python拓展包及requirement.txt安裝類庫
too tor == 引導 -cp mod flask utf addition http://blog.csdn.net/pipisorry/article/details/39902327python拓展包安裝直接安裝拓展包默認路徑:Unix(Linux)默認路徑:/
關於windows 7 安裝Django和基本使用命令
min 進入 關於 pytho arm 工作 admin 開發 .py 一、安裝 在安裝前需註意Django 1.6以前的版本不支持python 3.×以上的版本。 Django 2.×支持python 3.6 安裝方法:打開cmd-》輸入pip install --pre
windows 7 安裝時提示:安裝程序無法創建新的系統分區
PE 什麽 硬盤 退出 and win7系統 alt 虛擬光驅 rop window7純凈通過U盤引導進行硬盤安裝:系統提示"安裝程序無法創建新的系統分區,也無法定位現有分區",導致安裝無法進行。解決辦法1:一種非常簡單的辦法,首先需要將C盤重新格式化。格式化完之後,不做任
Windows 7安裝超級終端連接COM口設備
超級 https 實現 img com 如果 info 管理員 方式 Windows 7已經沒有超級終端,只能用投機取巧的方式實現。 1、先配置電話 隨便填寫信息,然後點擊確定即可。 2、下載這個終端運行,註意:要以管理員身份運行。 鏈接: https://pa
windows 7 安裝docker
window windows 7 oracle tps 虛擬機 ase boot github art 下載docker-install.exe 下載鏈接 安裝,一路next(安裝完成後建議重啟電腦) 點擊桌面boot2docker Start圖標,等待初始化,運行dock
windows 7安裝CartoCss
windows 7安裝CartoCss 更新npm 確保npm比較新,不然安裝會出錯 npm -g install npm 更新到指定版本npm -g install [email protected] 安裝CartoCss npm install -g ca
64位Windows 7 安裝配置CUDA7.5/8.0+cuDNN5.0
按照CUDA官網 文件 進行安裝: 在Windows 7上安裝CUDA8.0/CUDA7.5的系統需求:(1)、ACUDA-capable GPU(本機顯示卡為GeForce GT 640M);(2)、A supported version of Microsoft W
windows 7 安裝 db2 v11.1 下載 安裝教程
windows 7 安裝 db2 v11.1 官網下載的db2 v11.1 https://www.ibm.com/analytics/us/en/db2/ 如下圖: 開始安裝了 1)首先是解壓,如下圖依次解壓: 圖1 &
windows 7 安裝SQL Server2000並在myeclipse環境下連線
接了個專案,要求用SQL Server2000鬱悶得要死,我的筆記本是惠普Compaq Presario CQ40-522TX(VH109PA#AB2),裝的是vista,對SQL Server2000不相容,我用的是SQL Server2008。SQL Server2000
Windows 7安裝mysql-5.6.15-winx64解壓版
轉載原文:http://www.tandunzhao.cn/js/149.html 一、首先到官網下載mysql-5.6.15-winx64.zip,然後將mysql解壓到任意路徑,如:D:\mysql-5.6.15-winx64二、開啟計算機->屬性->高階
pip在windows下安裝配件/巨集包
安裝完pip後可以直接命令安裝巨集包 pip install bagname # e.g. pip install scipy 要加指定版本則 pip install bagname==1
Windows 7安裝CentOS6.5 雙系統
這裡用U盤引導安裝CentOS 6.5組成雙系統 1.在Win7下用磁碟管理工具分出一個空白的安裝CentOS的分割槽(大小自己估計),用UltraISO軟碟通 將準備好CentOS 6.5的ISO映象燒錄
Windows下安裝python的scipy等科學計算包(轉)
能夠 bsp .cn 命令 分享 mage get atp img 如果要使用python進行科學計算、數據分析等,一定要安裝scipy、seaborn、numpy等等包。 但Windows下安裝python的第三方庫經常會出現問題。此前,已介紹過Windows下如何安裝l
在windows 怎麼安裝Python2.7 的 PIL包
1- 在命令列中輸入pip install PIL 即可 如果沒有錯誤提示 那就安裝成功的 但是出現以下情況 則 2- 下載PIL 找到官網: http://www.pythonware.com/produ
Windows+ Anaconda+Python3.7安裝cvxpy包
Windows+ Anaconda+Python3.7安裝cvxpy包 2018-12-20 電腦環境:Windows10, Anaconda 3.5, Python3.7。 需要安裝凸優化計算包cvxpy,看到有人也會用cvxopt,不過cvxo
為Windows 7 Professional安裝多語言包
現在越來越多的人開始用Windows7 了,尤其是正在國外留學的中國學生,得利於學校和微軟的合作專案,很多學生都能免費得到一份正版的外文Windows 7 專業版, 或者是以非常優惠的價格的買到家庭版。但由於這兩個版本的MUI(Multi User Interface) 功能被禁用了,不能安裝中文語
Win10 python2.7 安裝cvxopt包,執行import cvxopt後ImportError: DLL load failed: 找不到指定的模組。
在完成機器學習技法作業1時,需要用到CVXOPT包,來解決二次規劃問題 我平常在win10下使用Anaconda進行python環境管理,沒有使用pip安裝過numpy 在anaconda下並沒有cvx