我找到了兼容python3的pyOpt包: https://github.com/madebr/pyOpt
我使用像bellow这样的命令窗口安装它:
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 422
if 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 SLSQP
ImportError: cannot import name 'SLSQP'
在python中只有2个优化器可以运行,但是当我在anaconda lib中查找优化器文件时,如:C:\Users\tsing\Anaconda3\Lib\site-packages\pyOpt\pySLSQP
我发现有一个&#39;来源&#39;文件丢失与从下载pyOpt解压缩的原始文件相比,该文件包含真正的解算器,如pySLSQP
我的操作系统是X64 WIN10
我只是不知道这有什么不对,有人可以给我一些建议吗?
答案 0 :(得分:0)
确保安装pyopt并不容易。按照汤姆·格雷萨维奇(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如何成功运行而不会出错。