我发现与python3兼容的pyOpt软件包:
https://github.com/madebr/pyOpt
我使用下面的命令窗口安装它:
python setup.py install
安装过程中存在一些警告或错误:
cobylamodule.obj : error LNK2001: unresolved external symbol pyflush_
和一些类似File "C:\Users\tsing\Anaconda3\Lib\site-packages\pyOpt\pySNOPT\pySNOPT.py", line 422if mode <> 0 and self.h_start: ^SyntaxError: invalid syntax
尽管看起来安装几乎成功,但是之后我尝试运行一些问题,但是遇到了相同的错误:
Traceback (most recent call last):
File "C:/Users/tsing/OneDrive/Python Code/pyOpt-for3/pyOpt-master/examples/tp037_resetbyTsing.py", line 28, in <module> from pyOpt.pySLSQP import SLSQPImportError: cannot import name 'SLSQP'
只有2个用python写的优化器可以运行,但是当我在anaconda lib中查找优化器文件时:
C:\Users\tsing\Anaconda3\Lib\site-packages\pyOpt\pySLSQP
我发现与从pyOpt下载中解压缩的原始文件相比,缺少“源”文件包含真正的求解器,例如pySLSQP我的操作系统是X64 WIN10
我只是不知道这有什么问题,有人可以给我一些建议吗?
最佳答案
当然,安装pyopt并不容易。按照Tom Gresavage(How to install the optimization pack pyOpt in Python on windows)的建议,我安装了
conda install --channel https://conda.anaconda.org/mutirri pyopt
现在,有趣的部分:使用此代码作为测试(例如ex1.py)
# -*- coding: utf-8 -*-
from pyOpt import *
from pyOpt.pySDPEN.pySDPEN import SDPEN
def objfunc(x):
"""Solves Rosenbrock's Unconstrained Problem.
min 100*(x2-x1^2)**2 + (1-x1)^2
s.t.: -10 <= xi <= 10, i = 1,2
f* = 0 , x* = [1, 1]
"""
f = 100 * (x[1] - x[0]**2)**2 + (1 - x[0])**2
g = []
fail = 0
return f, g, fail
opt_prob = Optimization('Rosenbrock Unconstraint Problem', objfunc)
opt_prob.addVar('x1', 'c', lower=-10.0, upper=10.0, value=-3.0)
opt_prob.addVar('x2', 'c', lower=-10.0, upper=10.0, value=-4.0)
opt_prob.addObj('f')
print opt_prob
# Instantiate Optimizer (SDPEN) & Solve Problem WORKS
sdpen = SDPEN()
sdpen.setOption('iprint', -1)
sdpen(opt_prob)
print opt_prob.solution(0)
然后在spyder中工作并打印解决方案。但是,从提示符命令python ex1.py给出通常的错误
ImportError: SDPEN shared library failed to import
是的,mingw32\bin在路径中。我什至将mingw dll复制到python Library\bin:同样的结果。我真的很高兴知道spyder如何成功地运行而没有错误。
关于python - pyOpt for python 3安装错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40563137/