pyOpt for python 3安装错误

时间:2016-11-12 13:07:33

标签: python windows optimization installation

我找到了兼容python3的pyOpt包: https://github.com/madebr/pyOpt

我使用像bellow这样的命令窗口安装它:     python setup.py install 安装过程中有一些警告或错误:

  1. cobylamodule.obj : error LNK2001: unresolved external symbol pyflush_和一些几乎相同的指令

  2. File "C:\Users\tsing\Anaconda3\Lib\site-packages\pyOpt\pySNOPT\pySNOPT.py", line 422 if mode <> 0 and self.h_start: ^ SyntaxError: invalid syntax

  3. 虽然看起来安装几乎是成功的,但之后我尝试运行一些问题但面临同样的错误:

    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

    我只是不知道这有什么不对,有人可以给我一些建议吗?

1 个答案:

答案 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如何成功运行而不会出错。