我发现与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/

    10-13 05:33