Code Monkey home page Code Monkey logo

pyoptsparse's Introduction

Conda Build Status Documentation Status codecov Code style: black DOI

pyOptSparse is an object-oriented framework for formulating and solving nonlinear constrained optimization problems in an efficient, reusable, and portable manner. It is a fork of pyOpt that uses sparse matrices throughout the code to more efficiently handle large-scale optimization problems. Many optimization techniques can be used in pyOptSparse, including both gradient-based and gradient-free methods. A visualization tool called OptView also comes packaged with pyOptSparse, which shows the optimization history through an interactive GUI. An example output from OptView is shown below.

Example

Optimizer support

pyOptSparse provides Python interfaces for a number of optimizers. ALPSO, CONMIN, IPOPT, NLPQLP, NSGA2, PSQP, SLSQP, ParOpt and SNOPT are currently tested and supported.

We do not provide the source code for SNOPT and NLPQLP, due to their restrictive license requirements. Please contact the authors of the respective optimizers if you wish to obtain them. Furthermore, ParOpt and IPOPT are available as a open source package but must be installed separately. Please see the documentation page of each optimizer for purchase and installation instructions.

Integration into other frameworks

pyOptSparse can be used in the following optimization frameworks:

Documentation

Please see the documentation for installation details and API documentation.

Testing

Testing is done with the testflo package developed by the openMDAO team, which can be installed via pip install testflo. To run the tests, simply type testflo . in the root directory.

Citation

If you use pyOptSparse, please see this page for citation information. A list of works that have used pyOptSparse can be found here

License

pyOptSparse is licensed under the GNU Lesser General Public License. See LICENSE for the full license.

Copyright

Copyright (c) 2011 University of Toronto
Copyright (c) 2014 University of Michigan
Additional copyright (c) 2014 Gaetan K. W. Kenway, Ruben Perez, Charles A. Mader, and
Joaquim R. R. A. Martins
All rights reserved.

pyoptsparse's People

Contributors

aaronyicongfu avatar achase90 avatar alexishonzik avatar bbrelje avatar camader avatar crecine avatar dwmunster avatar eirikurj avatar ewu63 avatar eytanadler avatar friedenhe avatar fzahle avatar gjkennedy avatar gkenway avatar hschilling avatar jackm97 avatar johnjasa avatar jrram avatar justinsgray avatar kanekosh avatar kenneth-t-moore avatar laurentww avatar lvzhoujie avatar marcomangano avatar naylor-b avatar nbons avatar nischintu avatar robfalck avatar sseraj avatar swryan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pyoptsparse's Issues

Dependence on the `six` python package

Type of issue

What types of issue is it?

  • Bugfix (non-breaking change which fixes an issue)

Description

Seems that there is an explicit dependence on six which provides iteritems.
Currently, there is a try/catch block which imports iteritems from six

Steps to reproduce issue

On python 2 environment without having six installed running python test_snopt_bugfix.py in the test directory will generate:

Traceback (most recent call last):
  File "test_snopt_bugfix.py", line 75, in test_opt
    sol = opt(optProb, sens=sens)
  File "/home/mdolab/.local/lib/python2.7/site-packages/pyoptsparse/pySNOPT/pySNOPT.py", line 505, in __call__
    nS, ninf, sinf, ff, cu, iu, ru, cw, iw, rw)
  File "/home/mdolab/.local/lib/python2.7/site-packages/pyoptsparse/pySNOPT/pySNOPT.py", line 570, in _userfg_wrap
    gobj, gcon, fail2 = self._masterFunc(x, ['gobj', 'gcon'])
  File "/home/mdolab/.local/lib/python2.7/site-packages/pyoptsparse/pyOpt_optimizer.py", line 297, in _masterFunc
    result = self._masterFunc2(*args)
  File "/home/mdolab/.local/lib/python2.7/site-packages/pyoptsparse/pyOpt_optimizer.py", line 442, in _masterFunc2
    gobj = self.optProb.processObjectiveGradient(funcsSens)
  File "/home/mdolab/.local/lib/python2.7/site-packages/pyoptsparse/pyOpt_optimization.py", line 1361, in processObjectiveGradient
    for (objKey, dvGroup), _ in iteritems(funcsSens):
NameError: global name 'iteritems' is not defined

History File Structure

Just wanted to open an issue discussing what information should be included in the history file. Keeping the structure backwards compatible, it'd be nice to add a few more entries, such as timing information for each major iteration (which will have to be figured out in conjunction with #21). In addition, for benchmarking it would be useful for me to save nprocs but that could be done in my own fork.

Would it make sense to incorporate some of this into the main repo or would this clutter up the file too much?

Prevent SNOPT last call

SNOPT currently does one last function call after performing the whole SQP optimization, with nState >=2 indicating a final call. I'm not entirely sure what the reason for this is, perhaps to verify the solution? Since our functions are usually very expensive, modify _userfg_wrap as recommended by the manual to do nothing if nState >= 2.

New option for hotstart to re-evaluate function if the fail flag is set to True

Type of issue

What types of issue is it?
Select the appropriate type(s) that describe this issue

  • New feature (non-breaking change which adds functionality)

Description

We should add a new option for the hotstart, to better handle failed evaluations.

Current behavior

During hotstart, if any evaluations failed, the same fail flag will be passed to the optimizer, creating a consistent hotstart "replay".

Expected behavior

Add a new option, so that at the first instance of a failed evaluation, an actual evaluation is done. This would be useful if the user has adjusted some solver settings, in order to prevent the original failure. This would of course break the hotstart and any evaluations after that would be actual evaluations not from the history file. So ideally, this would be useful if the only failure happened near the end of the optimization. Eventually, we may want to provide more granular controls over exactly which fail flag we want to re-evaluate during the hotstart, via callCounter indexing.

Implementing hybrid algorithm

Good day,

I am trying to implement a hybrid algorithm where I first run a number of iterations
with the NSGA2 algorithm, and then I want to hot start either SNOPT or SLSQP
with the top performer from NSGA2.

I am able to set this up so that SNOPT/SLSQP reads the history file from NSGA2
for a hot start. This is running, but it seems that it is just reading the last history file generated
which is not necessarily the top performer from NSGA2.

Any suggestions on how to do this would be greatly appreciated.
Thanks

Port over enhancements to SLSQP from numpy

Type of issue

What types of issue is it?
Select the appropriate type(s) that describe this issue

  • Bugfix (non-breaking change which fixes an issue)

The folks over at numpy has updated SLSQP to fix several issues. See here for a list of bugs they have fixed. They've also modified the f2py wrapper once here.

None of these fixes have made their way back to pyoptsparse, which is still using the original code from back in the 80s. Users have reported that the numpy version of SLSQP performs notably better than the version in pyoptsparse. Given that SLSQP is the go-to optimizer for those without access to proprietary optimizers, it's important to back-port those fixes from numpy and include them in our distribution.

Documentation for fail flags

Type of issue

What types of issue is it?

  • Documentation update

Description

I am currently working on bench-marking different solvers in multiple frameworks. I need to get my solution to return if it was successful or not. I have looked around the OpenMDAO website and the docs that are contained specifically for pyoptsparse but I have been unable to get it to return a boolean. Is there more detailed documentation on how to get it to return this? I have tried variations of sol.Flag, sol.status, etc.. but have been unsuccessful. any help or resources would be greatly appreciated.

thanks!

Make sqlitedict an external dependency

Type of issue

What types of issue is it?
Select the appropriate type(s) that describe this issue

  • New feature (non-breaking change which adds functionality)

Description

Currently a static version of sqlitedict is shipped with pyoptsparse (looks like v1.3). It would make sense to make sqlitedict a dependency and have that installed separately (the official repo is hosted here with install instructions). This way the user is able to use the same sqlitedict package to view/modify history files without needing a separate install, which would render this copy useless. It also ensures consistency between the sqlitedict versions used for writing and reading.

Also update documentation/install instructions to reflect the change.

Using SNOPT binaries

Hi all,

I am trying to use the binary SNOPT file, and installed everything as described in the last FAQ question (https://ccom.ucsd.edu/~optimizers/docs/snopt/faqs.html) which links to this page: https://gist.github.com/gnowzil/b1ea867a8808a3b3b759881ce8369ad2

When I try the following:

from pyoptsparse import Optimization, OPT

def fun(x):
    return {'obj':x['x']**2}, False

problem = Optimization('tmp', fun)
problem.addVar('x', lower=0.)
problem.addObj('obj')
opt = OPT('SNOPT', options={})
sol = opt(problem, sens='fd')

I get:

capi_return is NULL
Call-back cb_snlog_in_snoptc__user__routines failed.
Traceback (most recent call last):
  File "tmp.py", line 11, in <module>
    sol = opt(problem, sens='fd')
  File "/Users/jeandebecdelievre/soft/pyoptsparse/pyoptsparse/pySNOPT/pySNOPT.py", line 489, in __call__
    snopt.snkerc(start, nnCon, nnObj, nnJac, iObj, ObjAdd, ProbNm,
ValueError: unexpected array size: new_size=1, got array with arr_size=0

Is there something else that needs to be changed to use SNOPT binaries with pyoptsparse?
Thanks!
Jean

Complex constraint values leaking into problem summary

#65 Description
Complex components printed out in constraint components of the problem summary.

Steps to reproduce issue

  1. Run one of the example problems: hs071.py, hs015.py etc.

Current behavior

The constraint value contains a complex component, even though these problems are posed using real arithmetic. The complex part from the complex-step is leaking into the results.

Expected behavior

The constraint values should be real.

Fix sol.fStar stored in solution object

Type of issue

What types of issue is it?
Select the appropriate type(s) that describe this issue

  • Bugfix (non-breaking change which fixes an issue)

Description

Currently sol.fStar does not work. Users have to resort to using ugly syntax such as sol.objectives['obj'].value.

This is more about obtaining the right values from each optimizer callback, rather than relying on the optProb values. For instance I couldn't figure out how to get the right value out of SNOPT.

Function of `fail` variable returned by cost function?

Good day,

I am using pyOptSparse in an application where the cost function cannot be evaluated successfully for some design variables, so I would like to use the fail variable returned to pyOptSparse to let the optimizer know to avoid those areas.

However, when I implement this it seems like pyOptSparse exits immediately when it encounters one of these points, and SNOPT gives the exit status:

SNOPTC EXIT  60 -- undefined user-supplied functions
SNOPTC INFO  61 -- undefined function at the first feasible point

I'm slightly confused by this, because in the following toy problem, it seems like the value of fail has no influence on the outcome of the problem and I get the same result whether fail=False or fail=True.

import pyoptsparse

def objfunc(xdict):

    x = xdict['xvars']
    funcs = {}

    funcs['obj'] = -x[0] * x[1] * x[2]

    funcs['con1'] = x[0] + 2. * x[1] + 2. * x[2] - 72.0
    funcs['con2'] = -x[0] - 2. * x[1] - 2. * x[2]

    fail = False
    return funcs, fail

# Optimization Object
opt_prob = pyoptsparse.Optimization('TP37 Constrained Problem', objfunc)

# Design Variables
x0 = [10, 10, 10]
low = [0, 0, 0]
up = [42, 42, 42]

opt_prob.addVarGroup('xvars', 3, lower=low, upper=up, value=x0)

opt_prob.addCon('con1', upper=0)
opt_prob.addCon('con2', upper=0)

opt_prob.addObj('obj')

# print(opt_prob)

slsqp = pyoptsparse.SLSQP()
# slsqp = pyoptsparse.SNOPT()

sol = slsqp(opt_prob, sens='FD', storeHistory='snopt.hist')

Thanks in advance
Michael

Explain how linear constraints are handled

Type of issue

What types of issue is it?
Select the appropriate type(s) that describe this issue

  • Documentation update

Description

The documentation should explain more clearly how the linear constraints are handled.

  • They do not need to be computed in funcs/sens
  • The Jacobian MUST be supplied (either dense or sparse format)
  • The constraint values are NOT stored in the history file, but the Jacobian is stored as part of optProb

Pyoptsparse can be built only on Linux not Windows

I tried many times to build the library using on Windows 10 x64 but there is a sustainable issues. After that i repeated the same steps on Linux and the process went smoothly without any problem. Then I could use it only on Linux system. The following is the compiler error on Windows 10, it calms that i donot have Fortran compiler although i have one:
error: f90 not supported by GnuFCompiler needed for pyoptsparse\pyPSQP\source\psqp_wrap.f90

PS C:\Users\admin\Desktop\pyoptsparse> python setup.py build non-existing path in 'pyoptsparse': 'LICENSE' running build running config_cc unifing config_cc, config, build_clib, build_ext, build commands --compiler options running config_fc unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options running build_src build_src building library "slsqp" sources building library "conmin" sources building library "ffsqp" sources building library "nsga2" sources building library "psqp" sources building extension "pyoptsparse.pySLSQP.slsqp" sources creating build creating build\src.win-amd64-3.7 creating build\src.win-amd64-3.7\pyoptsparse creating build\src.win-amd64-3.7\pyoptsparse\pySLSQP creating build\src.win-amd64-3.7\pyoptsparse\pySLSQP\source creating build\src.win-amd64-3.7\pyoptsparse\pySLSQP\source\f2py f2py options: [] f2py: pyoptsparse\pySLSQP\source\f2py\slsqp.pyf Reading fortran codes... Reading file 'pyoptsparse\\pySLSQP\\source\\f2py\\slsqp.pyf' (format:free) Post-processing... Block: slsqp__user__routines Block: slsqp_user_interface Block: slfunc Block: slgrad Block: slsqp Block: slsqp In: pyoptsparse\pySLSQP\source\f2py\slsqp.pyf:slsqp:unknown_interface:slsqp get_useparameters: no module slsqp__user__routines info used by slsqp Block: openunit Block: pyflush Block: closeunit Post-processing (stage 2)... Building modules... Constructing call-back function "cb_slfunc_in_slsqp__user__routines" def slfunc(m,meq,la,n,f,c,x): return f,c Constructing call-back function "cb_slgrad_in_slsqp__user__routines" def slgrad(m,meq,la,n,f,c,g,a,x): return g,a Building module "slsqp"... Constructing wrapper function "slsqp"... a = slsqp(m,meq,la,n,x,xl,xu,f,c,g,a,acc,iter,iprint,iout,ifile,mode,w,l_w,jw,l_jw,nfunc,ngrad,slfunc,slgrad,[slfunc_extra_args,slgrad_extra_args]) Constructing wrapper function "openunit"... ierror = openunit(unitnum,filename,filestatus,fileaction) Constructing wrapper function "pyflush"... pyflush(unitnum) Constructing wrapper function "closeunit"... closeunit(unitnum) Wrote C/API module "slsqp" to file "build\src.win-amd64-3.7\pyoptsparse\pySLSQP\source\f2py\slsqpmodule.c" adding 'build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pySLSQP\source\f2py\fortranobject.c' to sources. adding 'build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pySLSQP\source\f2py' to include_dirs. creating build\src.win-amd64-3.7\build creating build\src.win-amd64-3.7\build\src.win-amd64-3.7 creating build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse creating build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pySLSQP creating build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pySLSQP\source creating build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pySLSQP\source\f2py copying D:\Anaconda3\lib\site-packages\numpy\f2py\src\fortranobject.c -> build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pySLSQP\source\f2py copying D:\Anaconda3\lib\site-packages\numpy\f2py\src\fortranobject.h -> build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pySLSQP\source\f2py building extension "pyoptsparse.pyCONMIN.conmin" sources creating build\src.win-amd64-3.7\pyoptsparse\pyCONMIN creating build\src.win-amd64-3.7\pyoptsparse\pyCONMIN\source creating build\src.win-amd64-3.7\pyoptsparse\pyCONMIN\source\f2py f2py options: [] f2py: pyoptsparse\pyCONMIN\source\f2py\conmin.pyf Reading fortran codes... Reading file 'pyoptsparse\\pyCONMIN\\source\\f2py\\conmin.pyf' (format:free) Line #97 in pyoptsparse\pyCONMIN\source\f2py\conmin.pyf:" return " crackline:3: No pattern for line Post-processing... Block: conmin__user__routines Block: conmin_user_interface Block: cnmnfun Block: cnmngrd Block: conmin {} In: pyoptsparse\pyCONMIN\source\f2py\conmin.pyf:conmin:unknown_interface:conmin vars2fortran: No typespec for argument "ndv_". {} In: pyoptsparse\pyCONMIN\source\f2py\conmin.pyf:conmin:unknown_interface:conmin vars2fortran: No typespec for argument "ncon_". Block: conmin In: pyoptsparse\pyCONMIN\source\f2py\conmin.pyf:conmin:unknown_interface:conmin get_useparameters: no module conmin__user__routines info used by conmin Block: openunit Block: pyflush Block: closeunit Post-processing (stage 2)... Building modules... Constructing call-back function "cb_cnmnfun_in_conmin__user__routines" def cnmnfun(n1,n2,x,aobj,g): return aobj,g Constructing call-back function "cb_cnmngrd_in_conmin__user__routines" def cnmngrd(n1,n2,x,aobj,g,ct,df,a,ic,nac): return df,a,ic,nac Building module "conmin"... Constructing wrapper function "conmin"... conmin(ndv_,ncon_,x_,vlb_,vub_,obj_,g_,n1,n2,n3,n4,n5,iprint_,iout_,ifile,itmax_,delfun_,dabfun_,itrm_,nfeasct_,nfdg_,nfun_,ngrd_,cnmnfun,cnmngrd,[cnmnfun_extra_args,cnmngrd_extra_args]) Constructing wrapper function "openunit"... ierror = openunit(unitnum,filename,filestatus,fileaction) Constructing wrapper function "pyflush"... pyflush(unitnum) Constructing wrapper function "closeunit"... closeunit(unitnum) Constructing COMMON block support for "varable"... aobj Constructing COMMON block support for "output"... iout Constructing COMMON block support for "cnmn1"... delfun,dabfun,fdch,fdchm,ct,ctmin,ctl,ctlmin,alphax,abobj1,theta,obj,ndv,ncon,nside,iprint,nfdg,nscal,linobj,itmax,itrm,icndir,igoto,nac,info,infog,iter Wrote C/API module "conmin" to file "build\src.win-amd64-3.7\pyoptsparse\pyCONMIN\source\f2py\conminmodule.c" Fortran 77 wrappers are saved to "build\src.win-amd64-3.7\pyoptsparse\pyCONMIN\source\f2py\conmin-f2pywrappers.f" adding 'build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyCONMIN\source\f2py\fortranobject.c' to sources. adding 'build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyCONMIN\source\f2py' to include_dirs. creating build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyCONMIN creating build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyCONMIN\source creating build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyCONMIN\source\f2py copying D:\Anaconda3\lib\site-packages\numpy\f2py\src\fortranobject.c -> build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyCONMIN\source\f2py copying D:\Anaconda3\lib\site-packages\numpy\f2py\src\fortranobject.h -> build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyCONMIN\source\f2py adding 'build\src.win-amd64-3.7\pyoptsparse\pyCONMIN\source\f2py\conmin-f2pywrappers.f' to sources. building extension "pyoptsparse.pyFSQP.ffsqp" sources creating build\src.win-amd64-3.7\pyoptsparse\pyFSQP creating build\src.win-amd64-3.7\pyoptsparse\pyFSQP\source creating build\src.win-amd64-3.7\pyoptsparse\pyFSQP\source\f2py f2py options: [] f2py: pyoptsparse\pyFSQP\source\f2py\ffsqp.pyf Reading fortran codes... Reading file 'pyoptsparse\\pyFSQP\\source\\f2py\\ffsqp.pyf' (format:free) Line #109 in pyoptsparse\pyFSQP\source\f2py\ffsqp.pyf:" return " crackline:3: No pattern for line Post-processing... Block: ffsqp__user__routines Block: ffsqp_user_interface Block: obj Block: constr Block: gradob Block: gradcn Block: ffsqp Block: ffsqp In: pyoptsparse\pyFSQP\source\f2py\ffsqp.pyf:ffsqp:unknown_interface:ffsqp get_useparameters: no module ffsqp__user__routines info used by ffsqp Block: openunit Block: pyflush Block: closeunit Post-processing (stage 2)... Building modules... Constructing call-back function "cb_obj_in_ffsqp__user__routines" def obj(nparam,j,x,fj): return fj Constructing call-back function "cb_constr_in_ffsqp__user__routines" def constr(nparam,j,x,gj): return gj Constructing call-back function "cb_gradob_in_ffsqp__user__routines" def gradob(nparam,j,x,gradfj,obj): return gradfj Constructing call-back function "cb_gradcn_in_ffsqp__user__routines" def gradcn(nparam,j,x,gradgj,obj): return gradgj Building module "ffsqp"... Constructing wrapper function "ffsqp"... ffsqp(nparam,nf,nineqn,nineq,neqn,neq,mode,iprint,miter,inform,bigbnd,eps,epseqn,udelta,bl,bu,x,f,g,iw,iwsize,w,nwsize,obj,constr,gradob,gradcn,iounit,ifile,[obj_extra_args,constr_extra_args,gradob_extra_args,gradcn_extra_args]) Constructing wrapper function "openunit"... ierror = openunit(unitnum,filename,filestatus,fileaction) Constructing wrapper function "pyflush"... pyflush(unitnum) Constructing wrapper function "closeunit"... closeunit(unitnum) Constructing COMMON block support for "cmache"... qleps Constructing COMMON block support for "fsqpp1"... nnineq,m,ncallg,ncallf,modd,lstype,nstop Constructing COMMON block support for "fsqpp2"... io,ipp,ipsp,ipyes,info,idummy,iter,initvl Constructing COMMON block support for "fsqpp3"... epsmac,rteps,upert,valnom Constructing COMMON block support for "fsqpp4"... rolis1,d0is0 Constructing COMMON block support for "fsqpq2"... maxit Constructing COMMON block support for "fsqpq1"... big,tolfea Wrote C/API module "ffsqp" to file "build\src.win-amd64-3.7\pyoptsparse\pyFSQP\source\f2py\ffsqpmodule.c" Fortran 77 wrappers are saved to "build\src.win-amd64-3.7\pyoptsparse\pyFSQP\source\f2py\ffsqp-f2pywrappers.f" adding 'build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyFSQP\source\f2py\fortranobject.c' to sources. adding 'build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyFSQP\source\f2py' to include_dirs. creating build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyFSQP creating build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyFSQP\source creating build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyFSQP\source\f2py copying D:\Anaconda3\lib\site-packages\numpy\f2py\src\fortranobject.c -> build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyFSQP\source\f2py copying D:\Anaconda3\lib\site-packages\numpy\f2py\src\fortranobject.h -> build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyFSQP\source\f2py adding 'build\src.win-amd64-3.7\pyoptsparse\pyFSQP\source\f2py\ffsqp-f2pywrappers.f' to sources. building extension "pyoptsparse.pyNSGA2.nsga2" sources creating build\src.win-amd64-3.7\pyoptsparse\pyNSGA2 creating build\src.win-amd64-3.7\pyoptsparse\pyNSGA2\source creating build\src.win-amd64-3.7\pyoptsparse\pyNSGA2\source\swig swig.exe: pyoptsparse\pyNSGA2\source\swig\nsga2.i C:\swigwin-4.0.1\swig.exe -python -noproxy -Ipyoptsparse\pyNSGA2\source -o build\src.win-amd64-3.7\pyoptsparse\pyNSGA2\source\swig\nsga2_wrap.c -outdir build\src.win-amd64-3.7\pyoptsparse\pyNSGA2\source\swig pyoptsparse\pyNSGA2\source\swig\nsga2.i building extension "pyoptsparse.pyPSQP.psqp" sources creating build\src.win-amd64-3.7\pyoptsparse\pyPSQP creating build\src.win-amd64-3.7\pyoptsparse\pyPSQP\source creating build\src.win-amd64-3.7\pyoptsparse\pyPSQP\source\f2py f2py options: [] f2py: pyoptsparse\pyPSQP\source\f2py\psqp.pyf Reading fortran codes... Reading file 'pyoptsparse\\pyPSQP\\source\\f2py\\psqp.pyf' (format:free) Line #76 in pyoptsparse\pyPSQP\source\f2py\psqp.pyf:" intent(callback) obj " analyzeline: missing __user__ module (could be nothing) Line #76 in pyoptsparse\pyPSQP\source\f2py\psqp.pyf:" intent(callback) obj " analyzeline: appending intent(callback) obj to psqp_wrap arguments Line #78 in pyoptsparse\pyPSQP\source\f2py\psqp.pyf:" intent(callback) dobj " analyzeline: missing __user__ module (could be nothing) Line #78 in pyoptsparse\pyPSQP\source\f2py\psqp.pyf:" intent(callback) dobj " analyzeline: appending intent(callback) dobj to psqp_wrap arguments Line #80 in pyoptsparse\pyPSQP\source\f2py\psqp.pyf:" intent(callback) con " analyzeline: missing __user__ module (could be nothing) Line #80 in pyoptsparse\pyPSQP\source\f2py\psqp.pyf:" intent(callback) con " analyzeline: appending intent(callback) con to psqp_wrap arguments Line #82 in pyoptsparse\pyPSQP\source\f2py\psqp.pyf:" intent(callback) dcon " analyzeline: missing __user__ module (could be nothing) Line #82 in pyoptsparse\pyPSQP\source\f2py\psqp.pyf:" intent(callback) dcon " analyzeline: appending intent(callback) dcon to psqp_wrap arguments Line #105 in pyoptsparse\pyPSQP\source\f2py\psqp.pyf:" intent(callback) obj " analyzeline: missing __user__ module (could be nothing) Line #105 in pyoptsparse\pyPSQP\source\f2py\psqp.pyf:" intent(callback) obj " analyzeline: appending intent(callback) obj to pf1f01 arguments Line #107 in pyoptsparse\pyPSQP\source\f2py\psqp.pyf:" intent(callback) dobj " analyzeline: missing __user__ module (could be nothing) Line #107 in pyoptsparse\pyPSQP\source\f2py\psqp.pyf:" intent(callback) dobj " analyzeline: appending intent(callback) dobj to pf1f01 arguments Line #126 in pyoptsparse\pyPSQP\source\f2py\psqp.pyf:" intent(callback) con " analyzeline: missing __user__ module (could be nothing) Line #126 in pyoptsparse\pyPSQP\source\f2py\psqp.pyf:" intent(callback) con " analyzeline: appending intent(callback) con to pc1f01 arguments Line #128 in pyoptsparse\pyPSQP\source\f2py\psqp.pyf:" intent(callback) dcon " analyzeline: missing __user__ module (could be nothing) Line #128 in pyoptsparse\pyPSQP\source\f2py\psqp.pyf:" intent(callback) dcon " analyzeline: appending intent(callback) dcon to pc1f01 arguments Line #140 in pyoptsparse\pyPSQP\source\f2py\psqp.pyf:" return " crackline:3: No pattern for line Post-processing... Block: psqp__user__routines Block: psqp_user_interface Block: obj Block: dobj Block: con Block: dcon Block: psqp Block: psqp_wrap In: pyoptsparse\pyPSQP\source\f2py\psqp.pyf:psqp:unknown_interface:psqp_wrap get_useparameters: no module psqp__user__routines info used by psqp_wrap Block: pf1f01 In: pyoptsparse\pyPSQP\source\f2py\psqp.pyf:psqp:unknown_interface:pf1f01 get_useparameters: no module psqp__user__routines info used by pf1f01 Block: pc1f01 In: pyoptsparse\pyPSQP\source\f2py\psqp.pyf:psqp:unknown_interface:pc1f01 get_useparameters: no module psqp__user__routines info used by pc1f01 Block: openunit Block: pyflush Block: closeunit Post-processing (stage 2)... Building modules... Constructing call-back function "cb_obj_in_psqp__user__routines" def obj(nf,x,ff): return ff Constructing call-back function "cb_dobj_in_psqp__user__routines" def dobj(nf,x,gf): return gf Constructing call-back function "cb_con_in_psqp__user__routines" def con(nf,kc,x,fc): return fc Constructing call-back function "cb_dcon_in_psqp__user__routines" def dcon(nf,kc,x,gc): return gc Building module "psqp"... Constructing wrapper function "psqp_wrap"... psqp_wrap(nf,nc,x,ix,xl,xu,cf,ic,cl,cu,mit,mfv,met,mec,xmax,tolx,tolc,tolg,rpf,f,gmax,cmax,iprnt,iout,ifile,iterm,obj,dobj,con,dcon,[obj_extra_args,dobj_extra_args,con_extra_args,dcon_extra_args]) Constructing wrapper function "pf1f01"... getarrdims:warning: assumed shape array, using 0 instead of '*' getarrdims:warning: assumed shape array, using 0 instead of '*' getarrdims:warning: assumed shape array, using 0 instead of '*' pf1f01(nf,x,gf,g,ff,f,kd,ld,iext,obj,dobj,[obj_extra_args,dobj_extra_args]) Constructing wrapper function "pc1f01"... getarrdims:warning: assumed shape array, using 0 instead of '*' getarrdims:warning: assumed shape array, using 0 instead of '*' getarrdims:warning: assumed shape array, using 0 instead of '*' getarrdims:warning: assumed shape array, using 0 instead of '*' getarrdims:warning: assumed shape array, using 0 instead of '*' getarrdims:warning: assumed shape array, using 0 instead of '*' getarrdims:warning: assumed shape array, using 0 instead of '*' pc1f01(nf,nc,x,fc,cf,cl,cu,ic,gc,cg,cmax,kd,ld,con,dcon,[con_extra_args,dcon_extra_args]) Constructing wrapper function "openunit"... ierror = openunit(unitnum,filename,filestatus,fileaction) Constructing wrapper function "pyflush"... pyflush(unitnum) Constructing wrapper function "closeunit"... closeunit(unitnum) Constructing COMMON block support for "stat"... nres,ndec,nrem,nadd,nit,nfv,nfg,nfh Wrote C/API module "psqp" to file "build\src.win-amd64-3.7\pyoptsparse\pyPSQP\source\f2py\psqpmodule.c" Fortran 77 wrappers are saved to "build\src.win-amd64-3.7\pyoptsparse\pyPSQP\source\f2py\psqp-f2pywrappers.f" adding 'build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyPSQP\source\f2py\fortranobject.c' to sources. adding 'build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyPSQP\source\f2py' to include_dirs. creating build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyPSQP creating build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyPSQP\source creating build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyPSQP\source\f2py copying D:\Anaconda3\lib\site-packages\numpy\f2py\src\fortranobject.c -> build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyPSQP\source\f2py copying D:\Anaconda3\lib\site-packages\numpy\f2py\src\fortranobject.h -> build\src.win-amd64-3.7\build\src.win-amd64-3.7\pyoptsparse\pyPSQP\source\f2py adding 'build\src.win-amd64-3.7\pyoptsparse\pyPSQP\source\f2py\psqp-f2pywrappers.f' to sources. building data_files sources build_src: building npy-pkg config files running build_py creating build\lib.win-amd64-3.7 creating build\lib.win-amd64-3.7\pyoptsparse copying pyoptsparse\pyOpt_constraint.py -> build\lib.win-amd64-3.7\pyoptsparse copying pyoptsparse\pyOpt_error.py -> build\lib.win-amd64-3.7\pyoptsparse copying pyoptsparse\pyOpt_gradient.py -> build\lib.win-amd64-3.7\pyoptsparse copying pyoptsparse\pyOpt_history.py -> build\lib.win-amd64-3.7\pyoptsparse copying pyoptsparse\pyOpt_MPI.py -> build\lib.win-amd64-3.7\pyoptsparse copying pyoptsparse\pyOpt_objective.py -> build\lib.win-amd64-3.7\pyoptsparse copying pyoptsparse\pyOpt_optimization.py -> build\lib.win-amd64-3.7\pyoptsparse copying pyoptsparse\pyOpt_optimizer.py -> build\lib.win-amd64-3.7\pyoptsparse copying pyoptsparse\pyOpt_solution.py -> build\lib.win-amd64-3.7\pyoptsparse copying pyoptsparse\pyOpt_utils.py -> build\lib.win-amd64-3.7\pyoptsparse copying pyoptsparse\pyOpt_variable.py -> build\lib.win-amd64-3.7\pyoptsparse copying pyoptsparse\setup.py -> build\lib.win-amd64-3.7\pyoptsparse copying pyoptsparse\__init__.py -> build\lib.win-amd64-3.7\pyoptsparse creating build\lib.win-amd64-3.7\pyoptsparse\pySNOPT copying pyoptsparse\pySNOPT\pySNOPT.py -> build\lib.win-amd64-3.7\pyoptsparse\pySNOPT copying pyoptsparse\pySNOPT\setup.py -> build\lib.win-amd64-3.7\pyoptsparse\pySNOPT copying pyoptsparse\pySNOPT\__init__.py -> build\lib.win-amd64-3.7\pyoptsparse\pySNOPT creating build\lib.win-amd64-3.7\pyoptsparse\pyIPOPT copying pyoptsparse\pyIPOPT\pyIPOPT.py -> build\lib.win-amd64-3.7\pyoptsparse\pyIPOPT copying pyoptsparse\pyIPOPT\setup.py -> build\lib.win-amd64-3.7\pyoptsparse\pyIPOPT copying pyoptsparse\pyIPOPT\__init__.py -> build\lib.win-amd64-3.7\pyoptsparse\pyIPOPT creating build\lib.win-amd64-3.7\pyoptsparse\pySLSQP copying pyoptsparse\pySLSQP\pySLSQP.py -> build\lib.win-amd64-3.7\pyoptsparse\pySLSQP copying pyoptsparse\pySLSQP\setup.py -> build\lib.win-amd64-3.7\pyoptsparse\pySLSQP copying pyoptsparse\pySLSQP\__init__.py -> build\lib.win-amd64-3.7\pyoptsparse\pySLSQP creating build\lib.win-amd64-3.7\pyoptsparse\pyCONMIN copying pyoptsparse\pyCONMIN\pyCONMIN.py -> build\lib.win-amd64-3.7\pyoptsparse\pyCONMIN copying pyoptsparse\pyCONMIN\setup.py -> build\lib.win-amd64-3.7\pyoptsparse\pyCONMIN copying pyoptsparse\pyCONMIN\__init__.py -> build\lib.win-amd64-3.7\pyoptsparse\pyCONMIN creating build\lib.win-amd64-3.7\pyoptsparse\pyFSQP copying pyoptsparse\pyFSQP\pyFSQP.py -> build\lib.win-amd64-3.7\pyoptsparse\pyFSQP copying pyoptsparse\pyFSQP\setup.py -> build\lib.win-amd64-3.7\pyoptsparse\pyFSQP copying pyoptsparse\pyFSQP\__init__.py -> build\lib.win-amd64-3.7\pyoptsparse\pyFSQP creating build\lib.win-amd64-3.7\pyoptsparse\pyNLPQLP copying pyoptsparse\pyNLPQLP\pyNLPQLP.py -> build\lib.win-amd64-3.7\pyoptsparse\pyNLPQLP copying pyoptsparse\pyNLPQLP\setup.py -> build\lib.win-amd64-3.7\pyoptsparse\pyNLPQLP copying pyoptsparse\pyNLPQLP\__init__.py -> build\lib.win-amd64-3.7\pyoptsparse\pyNLPQLP creating build\lib.win-amd64-3.7\pyoptsparse\pyNSGA2 copying pyoptsparse\pyNSGA2\pyNSGA2.py -> build\lib.win-amd64-3.7\pyoptsparse\pyNSGA2 copying pyoptsparse\pyNSGA2\setup.py -> build\lib.win-amd64-3.7\pyoptsparse\pyNSGA2 copying pyoptsparse\pyNSGA2\__init__.py -> build\lib.win-amd64-3.7\pyoptsparse\pyNSGA2 creating build\lib.win-amd64-3.7\pyoptsparse\pyPSQP copying pyoptsparse\pyPSQP\pyPSQP.py -> build\lib.win-amd64-3.7\pyoptsparse\pyPSQP copying pyoptsparse\pyPSQP\setup.py -> build\lib.win-amd64-3.7\pyoptsparse\pyPSQP copying pyoptsparse\pyPSQP\__init__.py -> build\lib.win-amd64-3.7\pyoptsparse\pyPSQP creating build\lib.win-amd64-3.7\pyoptsparse\pyNLPY_AUGLAG copying pyoptsparse\pyNLPY_AUGLAG\pyNLPY_AUGLAG.py -> build\lib.win-amd64-3.7\pyoptsparse\pyNLPY_AUGLAG copying pyoptsparse\pyNLPY_AUGLAG\setup.py -> build\lib.win-amd64-3.7\pyoptsparse\pyNLPY_AUGLAG copying pyoptsparse\pyNLPY_AUGLAG\__init__.py -> build\lib.win-amd64-3.7\pyoptsparse\pyNLPY_AUGLAG creating build\lib.win-amd64-3.7\pyoptsparse\pyALPSO copying pyoptsparse\pyALPSO\alpso.py -> build\lib.win-amd64-3.7\pyoptsparse\pyALPSO copying pyoptsparse\pyALPSO\alpso_ext.py -> build\lib.win-amd64-3.7\pyoptsparse\pyALPSO copying pyoptsparse\pyALPSO\pyALPSO.py -> build\lib.win-amd64-3.7\pyoptsparse\pyALPSO copying pyoptsparse\pyALPSO\setup.py -> build\lib.win-amd64-3.7\pyoptsparse\pyALPSO copying pyoptsparse\pyALPSO\__init__.py -> build\lib.win-amd64-3.7\pyoptsparse\pyALPSO creating build\lib.win-amd64-3.7\pyoptsparse\pyParOpt copying pyoptsparse\pyParOpt\ParOpt.py -> build\lib.win-amd64-3.7\pyoptsparse\pyParOpt copying pyoptsparse\pyParOpt\setup.py -> build\lib.win-amd64-3.7\pyoptsparse\pyParOpt copying pyoptsparse\pyParOpt\__init__.py -> build\lib.win-amd64-3.7\pyoptsparse\pyParOpt creating build\lib.win-amd64-3.7\pyoptsparse\sqlitedict copying pyoptsparse\sqlitedict\sqlitedict.py -> build\lib.win-amd64-3.7\pyoptsparse\sqlitedict copying pyoptsparse\sqlitedict\__init__.py -> build\lib.win-amd64-3.7\pyoptsparse\sqlitedict running build_clib No module named 'numpy.distutils._msvccompiler' in numpy.distutils; trying from distutils customize MSVCCompiler customize MSVCCompiler using build_clib get_default_fcompiler: matching types: '['gnu', 'intelv', 'absoft', 'compaqv', 'intelev', 'gnu95', 'g95', 'intelvem', 'intelem', 'flang']' customize GnuFCompiler Found executable C:\MinGW\bin\g77.exe gnu: no Fortran 90 compiler found gnu: no Fortran 90 compiler found customize GnuFCompiler gnu: no Fortran 90 compiler found gnu: no Fortran 90 compiler found customize GnuFCompiler using build_clib building 'slsqp' library compiling Fortran sources Fortran f77 compiler: C:\MinGW\bin\g77.exe -g -Wall -fno-second-underscore -mno-cygwin -O3 -funroll-loops creating build\temp.win-amd64-3.7 creating build\temp.win-amd64-3.7\pyoptsparse creating build\temp.win-amd64-3.7\pyoptsparse\pySLSQP creating build\temp.win-amd64-3.7\pyoptsparse\pySLSQP\source compile options: '-ID:\Anaconda3\lib\site-packages\numpy\core\include -c' g77.exe:f77: pyoptsparse\pySLSQP\source\drot.f g77.exe:f77: pyoptsparse\pySLSQP\source\dcopy.f g77.exe:f77: pyoptsparse\pySLSQP\source\drotg.f g77.exe:f77: pyoptsparse\pySLSQP\source\dscal.f g77.exe:f77: pyoptsparse\pySLSQP\source\hfti.f g77.exe:f77: pyoptsparse\pySLSQP\source\h12.f g77.exe:f77: pyoptsparse\pySLSQP\source\closeunit.f g77.exe:f77: pyoptsparse\pySLSQP\source\daxpy.f pyoptsparse\pySLSQP\source\dcopy.f: In function `dnrm2': In file included from pyoptsparse\pySLSQP\source\dcopy.f:0: pyoptsparse\pySLSQP\source\dcopy.f:135: warning: 'xmax' might be used uninitialized in this function pyoptsparse\pySLSQP\source\hfti.f: In subroutine `hfti': In file included from pyoptsparse\pySLSQP\source\hfti.f:0: pyoptsparse\pySLSQP\source\hfti.f:35: warning: 'hmax' might be used uninitialized in this function g77.exe:f77: pyoptsparse\pySLSQP\source\ldl.f g77.exe:f77: pyoptsparse\pySLSQP\source\ldp.f g77.exe:f77: pyoptsparse\pySLSQP\source\lsei.f g77.exe:f77: pyoptsparse\pySLSQP\source\lsi.f g77.exe:f77: pyoptsparse\pySLSQP\source\lsq.f g77.exe:f77: pyoptsparse\pySLSQP\source\nnls.f g77.exe:f77: pyoptsparse\pySLSQP\source\openunit.f g77.exe:f77: pyoptsparse\pySLSQP\source\slsqp.f pyoptsparse\pySLSQP\source\ldl.f: In subroutine `ldl': In file included from pyoptsparse\pySLSQP\source\ldl.f:0: pyoptsparse\pySLSQP\source\ldl.f:37: warning: 'tp' might be used uninitialized in this function pyoptsparse\pySLSQP\source\ldl.f: In function `linmin': pyoptsparse\pySLSQP\source\ldl.f:138: warning: 'd' might be used uninitialized in this function pyoptsparse\pySLSQP\source\ldl.f:138: warning: 'e' might be used uninitialized in this function pyoptsparse\pySLSQP\source\ldl.f:138: warning: 'u' might be used uninitialized in this function pyoptsparse\pySLSQP\source\ldl.f:138: warning: 'w' might be used uninitialized in this function pyoptsparse\pySLSQP\source\ldl.f:138: warning: 'x' might be used uninitialized in this function pyoptsparse\pySLSQP\source\ldl.f:139: warning: 'fv' might be used uninitialized in this function pyoptsparse\pySLSQP\source\ldl.f:139: warning: 'fw' might be used uninitialized in this function pyoptsparse\pySLSQP\source\ldl.f:139: warning: 'fx' might be used uninitialized in this function pyoptsparse\pySLSQP\source\nnls.f: In subroutine `nnls': In file included from pyoptsparse\pySLSQP\source\nnls.f:0: pyoptsparse\pySLSQP\source\nnls.f:44: warning: 'izmax' might be used uninitialized in this function g77.exe:f77: pyoptsparse\pySLSQP\source\slsqpb.f C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\lib.exe build\temp.win-amd64-3.7\pyoptsparse\pySLSQP\source\closeunit.o build\temp.win-amd64-3.7\pyoptsparse\pySLSQP\source\daxpy.o build\temp.win-amd64-3.7\pyoptsparse\pySLSQP\source\dcopy.o build\temp.win-amd64-3.7\pyoptsparse\pySLSQP\source\drot.o build\temp.win-amd64-3.7\pyoptsparse\pySLSQP\source\drotg.o build\temp.win-amd64-3.7\pyoptsparse\pySLSQP\source\dscal.o build\temp.win-amd64-3.7\pyoptsparse\pySLSQP\source\h12.o build\temp.win-amd64-3.7\pyoptsparse\pySLSQP\source\hfti.o build\temp.win-amd64-3.7\pyoptsparse\pySLSQP\source\ldl.o build\temp.win-amd64-3.7\pyoptsparse\pySLSQP\source\ldp.o build\temp.win-amd64-3.7\pyoptsparse\pySLSQP\source\lsei.o build\temp.win-amd64-3.7\pyoptsparse\pySLSQP\source\lsi.o build\temp.win-amd64-3.7\pyoptsparse\pySLSQP\source\lsq.o build\temp.win-amd64-3.7\pyoptsparse\pySLSQP\source\nnls.o build\temp.win-amd64-3.7\pyoptsparse\pySLSQP\source\openunit.o build\temp.win-amd64-3.7\pyoptsparse\pySLSQP\source\slsqp.o build\temp.win-amd64-3.7\pyoptsparse\pySLSQP\source\slsqpb.o /OUT:build\temp.win-amd64-3.7\slsqp.lib building 'conmin' library compiling Fortran sources Fortran f77 compiler: C:\MinGW\bin\g77.exe -g -Wall -fno-second-underscore -mno-cygwin -O3 -funroll-loops creating build\temp.win-amd64-3.7\pyoptsparse\pyCONMIN creating build\temp.win-amd64-3.7\pyoptsparse\pyCONMIN\source compile options: '-ID:\Anaconda3\lib\site-packages\numpy\core\include -c' g77.exe:f77: pyoptsparse\pyCONMIN\source\cnmn00.f g77.exe:f77: pyoptsparse\pyCONMIN\source\cnmn02.f g77.exe:f77: pyoptsparse\pyCONMIN\source\cnmn06.f g77.exe:f77: pyoptsparse\pyCONMIN\source\cnmn04.f g77.exe:f77: pyoptsparse\pyCONMIN\source\cnmn03.f g77.exe:f77: pyoptsparse\pyCONMIN\source\cnmn05.f g77.exe:f77: pyoptsparse\pyCONMIN\source\closeunit.f g77.exe:f77: pyoptsparse\pyCONMIN\source\cnmn01.f pyoptsparse\pyCONMIN\source\cnmn01.f: In subroutine `cnmn01': In file included from pyoptsparse\pyCONMIN\source\cnmn01.f:0: pyoptsparse\pyCONMIN\source\cnmn01.f:15: warning: 'inf' might be used uninitialized in this function g77.exe:f77: pyoptsparse\pyCONMIN\source\cnmn07.f g77.exe:f77: pyoptsparse\pyCONMIN\source\cnmn08.f g77.exe:f77: pyoptsparse\pyCONMIN\source\cnmn09.f g77.exe:f77: pyoptsparse\pyCONMIN\source\conmin.f g77.exe:f77: pyoptsparse\pyCONMIN\source\openunit.f C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\lib.exe build\temp.win-amd64-3.7\pyoptsparse\pyCONMIN\source\closeunit.o build\temp.win-amd64-3.7\pyoptsparse\pyCONMIN\source\cnmn00.o build\temp.win-amd64-3.7\pyoptsparse\pyCONMIN\source\cnmn01.o build\temp.win-amd64-3.7\pyoptsparse\pyCONMIN\source\cnmn02.o build\temp.win-amd64-3.7\pyoptsparse\pyCONMIN\source\cnmn03.o build\temp.win-amd64-3.7\pyoptsparse\pyCONMIN\source\cnmn04.o build\temp.win-amd64-3.7\pyoptsparse\pyCONMIN\source\cnmn05.o build\temp.win-amd64-3.7\pyoptsparse\pyCONMIN\source\cnmn06.o build\temp.win-amd64-3.7\pyoptsparse\pyCONMIN\source\cnmn07.o build\temp.win-amd64-3.7\pyoptsparse\pyCONMIN\source\cnmn08.o build\temp.win-amd64-3.7\pyoptsparse\pyCONMIN\source\cnmn09.o build\temp.win-amd64-3.7\pyoptsparse\pyCONMIN\source\conmin.o build\temp.win-amd64-3.7\pyoptsparse\pyCONMIN\source\openunit.o /OUT:build\temp.win-amd64-3.7\conmin.lib building 'ffsqp' library compiling Fortran sources Fortran f77 compiler: C:\MinGW\bin\g77.exe -g -Wall -fno-second-underscore -mno-cygwin -O3 -funroll-loops creating build\temp.win-amd64-3.7\pyoptsparse\pyFSQP creating build\temp.win-amd64-3.7\pyoptsparse\pyFSQP\source compile options: '-ID:\Anaconda3\lib\site-packages\numpy\core\include -c' g77.exe:f77: pyoptsparse\pyFSQP\source\closeunit.f g77.exe:f77: pyoptsparse\pyFSQP\source\openunit.f g77.exe:f77: pyoptsparse\pyFSQP\source\qld.f pyoptsparse\pyFSQP\source\qld.f: In subroutine `ql0002': In file included from pyoptsparse\pyFSQP\source\qld.f:0: pyoptsparse\pyFSQP\source\qld.f:337: warning: 'parinc' might be used uninitialized in this function pyoptsparse\pyFSQP\source\qld.f:337: warning: 'parnew' might be used uninitialized in this function pyoptsparse\pyFSQP\source\qld.f:338: warning: 'ratio' might be used uninitialized in this function pyoptsparse\pyFSQP\source\qld.f:338: warning: 'res' might be used uninitialized in this function pyoptsparse\pyFSQP\source\qld.f:338: warning: 'step' might be used uninitialized in this function pyoptsparse\pyFSQP\source\qld.f:338: warning: 'sumy' might be used uninitialized in this function pyoptsparse\pyFSQP\source\qld.f:338: warning: 'temp' might be used uninitialized in this function pyoptsparse\pyFSQP\source\qld.f:346: warning: 'jflag' might be used uninitialized in this function pyoptsparse\pyFSQP\source\qld.f:346: warning: 'kdrop' might be used uninitialized in this function pyoptsparse\pyFSQP\source\qld.f:346: warning: 'nu' might be used uninitialized in this function pyoptsparse\pyFSQP\source\qld.f:346: warning: 'mflag' might be used uninitialized in this function pyoptsparse\pyFSQP\source\qld.f:346: warning: 'knext' might be used uninitialized in this function pyoptsparse\pyFSQP\source\qld.f:800: warning: 'nflag' might be used uninitialized in this function C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\lib.exe build\temp.win-amd64-3.7\pyoptsparse\pyFSQP\source\closeunit.o build\temp.win-amd64-3.7\pyoptsparse\pyFSQP\source\openunit.o build\temp.win-amd64-3.7\pyoptsparse\pyFSQP\source\qld.o /OUT:build\temp.win-amd64-3.7\ffsqp.lib building 'nsga2' library compiling C sources creating build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2 creating build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt /Tcpyoptsparse\pyNSGA2\source\allocate.c /Fobuild\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\allocate.obj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt /Tcpyoptsparse\pyNSGA2\source\auxiliary.c /Fobuild\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\auxiliary.obj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt /Tcpyoptsparse\pyNSGA2\source\crossover.c /Fobuild\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\crossover.obj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt /Tcpyoptsparse\pyNSGA2\source\crowddist.c /Fobuild\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\crowddist.obj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt /Tcpyoptsparse\pyNSGA2\source\decode.c /Fobuild\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\decode.obj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt /Tcpyoptsparse\pyNSGA2\source\dominance.c /Fobuild\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\dominance.obj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt /Tcpyoptsparse\pyNSGA2\source\eval.c /Fobuild\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\eval.obj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt /Tcpyoptsparse\pyNSGA2\source\fillnds.c /Fobuild\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\fillnds.obj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt /Tcpyoptsparse\pyNSGA2\source\initialize.c /Fobuild\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\initialize.obj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt /Tcpyoptsparse\pyNSGA2\source\list.c /Fobuild\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\list.obj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt /Tcpyoptsparse\pyNSGA2\source\merge.c /Fobuild\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\merge.obj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt /Tcpyoptsparse\pyNSGA2\source\mutation.c /Fobuild\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\mutation.obj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt /Tcpyoptsparse\pyNSGA2\source\nsga2.c /Fobuild\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\nsga2.obj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt /Tcpyoptsparse\pyNSGA2\source\rand.c /Fobuild\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\rand.obj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt /Tcpyoptsparse\pyNSGA2\source\rank.c /Fobuild\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\rank.obj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt /Tcpyoptsparse\pyNSGA2\source\report.c /Fobuild\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\report.obj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt /Tcpyoptsparse\pyNSGA2\source\sort.c /Fobuild\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\sort.obj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\Anaconda3\lib\site-packages\numpy\core\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt /Tcpyoptsparse\pyNSGA2\source\tourselect.c /Fobuild\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\tourselect.obj C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\lib.exe build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\allocate.obj build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\auxiliary.obj build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\crossover.obj build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\crowddist.obj build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\decode.obj build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\dominance.obj build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\eval.obj build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\fillnds.obj build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\initialize.obj build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\list.obj build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\merge.obj build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\mutation.obj build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\nsga2.obj build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\rand.obj build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\rank.obj build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\report.obj build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\sort.obj build\temp.win-amd64-3.7\pyoptsparse\pyNSGA2\source\tourselect.obj /OUT:build\temp.win-amd64-3.7\nsga2.lib building 'psqp' library compiling Fortran sources Fortran f77 compiler: C:\MinGW\bin\g77.exe -g -Wall -fno-second-underscore -mno-cygwin -O3 -funroll-loops creating build\temp.win-amd64-3.7\pyoptsparse\pyPSQP creating build\temp.win-amd64-3.7\pyoptsparse\pyPSQP\source compile options: '-ID:\Anaconda3\lib\site-packages\numpy\core\include -c' error: f90 not supported by GnuFCompiler needed for pyoptsparse\pyPSQP\source\psqp_wrap.f90

Here is the compiler that i have on my PC
PS C:\Users\admin\Desktop\pyoptsparse> python setup.py build --help-fcompiler GnuFCompiler instance properties: archiver = ['C:\\MinGW\\bin\\g77.exe', '-cr'] compile_switch = '-c' compiler_f77 = ['C:\\MinGW\\bin\\g77.exe', '-g', '-Wall', '-fno-second- underscore', '-mno-cygwin', '-O3', '-funroll-loops'] compiler_f90 = None compiler_fix = None libraries = ['g2c'] library_dirs = ['C:\\MinGW\\lib', 'C:\\MinGW\\lib\\gcc\\mingw32\\3.4.5'] linker_exe = ['C:\\MinGW\\bin\\g77.exe', '-g', '-Wall', '-mno- cygwin', '-g', '-Wall', '-mno-cygwin'] linker_so = ['C:\\MinGW\\bin\\g77.exe', '-g', '-Wall', '-mno- cygwin', '-g', '-Wall', '-mno-cygwin', '-shared'] object_switch = '-o ' ranlib = ['C:\\MinGW\\bin\\g77.exe'] version = LooseVersion ('3.4.5') version_cmd = ['C:\\MinGW\\bin\\g77.exe', '-dumpversion', '-mno- cygwin'] Gnu95FCompiler instance properties: archiver = ['C:\\MinGW\\bin\\gfortran.exe', '-cr'] compile_switch = '-c' compiler_f77 = ['C:\\MinGW\\bin\\gfortran.exe', '-Wall', '-g', '-ffixed -form', '-fno-second-underscore', '-O3', '-funroll-loops'] compiler_f90 = ['C:\\MinGW\\bin\\gfortran.exe', '-Wall', '-g', '-fno- second-underscore', '-O3', '-funroll-loops'] compiler_fix = ['C:\\MinGW\\bin\\gfortran.exe', '-Wall', '-g', '-ffixed -form', '-fno-second-underscore', '-Wall', '-g', '-fno- second-underscore', '-O3', '-funroll-loops'] libraries = ['gfortran'] library_dirs = ['c:\\mingw\\lib\\gcc\\mingw32\\8.2.0'] linker_exe = ['C:\\MinGW\\bin\\gfortran.exe', '-Wall', '-Wall'] linker_so = ['C:\\MinGW\\bin\\gfortran.exe', '-Wall', '-g', '-Wall', '-g', '-shared'] object_switch = '-o ' ranlib = ['C:\\MinGW\\bin\\gfortran.exe'] version = LooseVersion ('8.2.0') version_cmd = ['C:\\MinGW\\bin\\gfortran.exe', '-dumpversion'] PGroupFlangCompiler instance properties: archiver = ['D:\\Anaconda3\\Library\\bin\\flang.exe', '/verbose', '/OUT:'] compile_switch = '-c' compiler_f77 = ['D:\\Anaconda3\\Library\\bin\\flang.exe', '-O3'] compiler_f90 = ['D:\\Anaconda3\\Library\\bin\\flang.exe', '-O3'] compiler_fix = ['D:\\Anaconda3\\Library\\bin\\flang.exe', '-O3'] libraries = ['flang', 'flangrti', 'ompstub'] library_dirs = ['D:\\Anaconda3\\Library\\lib'] linker_exe = None linker_so = ['D:\\Anaconda3\\Library\\bin\\flang.exe'] object_switch = '-o ' ranlib = None version = LooseVersion ('5.0.0') version_cmd = ['D:\\Anaconda3\\Library\\bin\\flang.exe', '--version'] Fortran compilers found: --fcompiler=flang Portland Group Fortran LLVM Compiler (5.0.0) --fcompiler=gnu GNU Fortran 77 compiler (3.4.5) --fcompiler=gnu95 GNU Fortran 95 compiler (8.2.0) Compilers available for this platform, but not found: --fcompiler=absoft Absoft Corp Fortran Compiler --fcompiler=compaqv DIGITAL or Compaq Visual Fortran Compiler --fcompiler=g95 G95 Fortran Compiler --fcompiler=intelem Intel Fortran Compiler for 64-bit apps --fcompiler=intelev Intel Visual Fortran Compiler for Itanium apps --fcompiler=intelv Intel Visual Fortran Compiler for 32-bit apps --fcompiler=intelvem Intel Visual Fortran Compiler for 64-bit apps Compilers not available on this platform: --fcompiler=compaq Compaq Fortran Compiler --fcompiler=hpux HP Fortran 90 Compiler --fcompiler=ibm IBM XL Fortran Compiler --fcompiler=intel Intel Fortran Compiler for 32-bit apps --fcompiler=intele Intel Fortran Compiler for Itanium apps --fcompiler=lahey Lahey/Fujitsu Fortran 95 Compiler --fcompiler=mips MIPSpro Fortran Compiler --fcompiler=nag NAGWare Fortran 95 Compiler --fcompiler=nagfor NAG Fortran Compiler --fcompiler=none Fake Fortran compiler --fcompiler=pathf95 PathScale Fortran Compiler --fcompiler=pg Portland Group Fortran Compiler --fcompiler=sun Sun or Forte Fortran 95 Compiler --fcompiler=vast Pacific-Sierra Research Fortran 90 Compiler For compiler details, run 'config_fc --verbose' setup command.

`setDVs` is broken when setting only some DVs

Type of issue

What types of issue is it?
Select the appropriate type(s) that describe this issue

  • Bugfix (non-breaking change which fixes an issue)

Description

Due to the refactoring done in #93, setDVs now use the general mapping functions for scaling DVs. Those functions only operate on the full DV vector, so an error is thrown when trying to set just a subset of the DVs.

Steps to reproduce issue

  1. Set up an optimization with two DV groups
  2. Create a DV dictionary that contains value for only one DV group
  3. Call setDVs with that DV dictionary

Current behavior

An error will be thrown:

  File "$HOME/packages/pyoptsparse/pyoptsparse/pyOpt_optimization.py", line 559, in setDVs
    scaled_DV = self._mapXtoOpt_Dict(inDVs)
  File "$HOME/packages/pyoptsparse/pyoptsparse/pyOpt_optimization.py", line 1618, in _mapXtoOpt_Dict
    x = self.processXtoVec(xDict)
  File "$HOME/packages/pyoptsparse/pyoptsparse/pyOpt_optimization.py", line 1085, in processXtoVec
    x_array[..., istart:iend] = x[dvGroup]
KeyError: 'twist'

Expected behavior

The DVs contained within the DV dictionary should be set, with the others untouched.

python wheel releases

When can we get python wheel package for pyoptsparse to configure it with openmdao? Trying to install pyoptsparse in Anaconda Windows but unable to compile the whole package. It would be great to see wheel package available for this.
Thanks

SNOPT internal finite differencing and parallel computing of gradients

Hello,

I have a working version of pySNOPT in pyOptSparse, and I'd like to compute the gradients in parallel while using SNOPT's internal finite differencing method.

from pyoptsparse import SNOPT
snopt = SNOPT(sens=None,sensMode='pgc')

However, allocating more processors does not result in a reduction of runtime. Can pyOptSparse only compute gradients in parallel if you are using one of its built in finite difference methods? For example:

snopt = SNOPT(sens='CS',sensMode='pgc')

Thank you very much for your time

pyIPOPT doesn't return the IPOPT return code

Type of issue

What types of issue is it?

  • Bugfix (non-breaking change which fixes an issue)\

Description

pyIPOPT contains a solInform property but it is not set to the appropriate return code from IPOPT.

Steps to reproduce issue

The hs_071 IPOPT test has been modified to test this behavior:

    def test_ipopt(self):
        opts = {}
        opts['print_level'] = 5
        opts['linear_solver'] = 'mumps'
        sol = self.optimize('ipopt', optOptions=opts)
        self.assertEqual(sol.optInform['value'], 0)
        self.assertEqual(sol.optInform['text'], 'Solve Succeeded')
        # Test that the inform is -1 when iterations are too limited.
        opts['max_iter'] = 1
        sol = self.optimize('ipopt', optOptions=opts, check_solution=False)
        self.assertEqual(sol.optInform['value'], -1)
        self.assertEqual(sol.optInform['text'], 'Maximum Iterations Exceeded')
        # Test that the inform is -4 when max_cpu_time are too limited.
        opts['max_iter'] = 100
        opts['max_cpu_time'] = 0.001
        sol = self.optimize('ipopt', optOptions=opts, check_solution=False)
        self.assertEqual(sol.optInform['value'], -4)
        self.assertEqual(sol.optInform['text'], 'Maximum CpuTime Exceeded')

Current behavior

Currently sol.optInform provides an empty dictionary for optInform.

Expected behavior

optInform should contain the return code provided by IPOPT and the corresponding message. These are available from https://github.com/coin-or/Ipopt/blob/master/src/Interfaces/IpReturnCodes_inc.h

Code version (if relevant)

N/A

External dependencies:

N/A

Internal packages:

N/A

Pass correct optimization name to SNOPT

Type of issue

What types of issue is it?
Select the appropriate type(s) that describe this issue

  • Bugfix (non-breaking change which fixes an issue)

Description

In many optimizations with SNOPT several strings are not passed in correctly. This includes

  • Optimization name
  • Objective
  • RHS
  • Ranges
  • Bounds

The main problem with this is that it oftentimes causes encoding problems in the SNOPT_print.out file. This makes it difficult to parse or diff in post-processing.

Code version (if relevant)

External dependencies: SNOPT v7.2 and v7.7

OptView usage improvements

Add an option to only show variables/functionals with bounds to more easily see which are constraints

Provide a way to let a user tell pyoptsparse to NOT use mpi4py

Type of issue

What types of issue is it?
Select the appropriate type(s) that describe this issue

  • New feature (non-breaking change which adds functionality)

Description

Provide a way to let a user tell pyoptsparse to NOT use mpi4py.

I work on the OpenMDAO team and it has happened that sometimes we can totally break our MPI installation on our dev machines. It's handy to tell OpenMDAO to skip importing mpi4py if just want to run some code that doesn't make use of MPI while you work on fixing the MPI install.

So there is an environment variable, OPENMDAO_REQUIRE_MPI, that can be set to '0'. (Really anything other than ['always', '1', 'true', 'yes']) and then OpenMDAO skips importing mpi4py.

The problem is that we also obviously import pyoptsparse and it imports mpi4py no matter what. We have no control over that.

I see two places in the pyoptsparse code where code would need to be added to give the user control:

  • At the bottom of pyOpt_MPI.py
  • At the top of pyParOpt/ParOpt.py

Current behavior

When using pyoptsparse, there is no way to force pyoptsparse to skip importing mpi4py.

Expected behavior

Provide some environment variable ( or some other mechanism ) for the user to set so that mpi4py is not imported.

Code version (if relevant)

NA

SNOPT tests are broken in latest commit

Type of issue

What types of issue is it?

  • Breaking change (non-backwards-compatible fix or feature)

Description

One of the latest commits seems to have broken support for the SNOPT optimizer. Any time the optimizer is called it segfaults. Note that commit 91909c4 from Feb 5 seems to work fine.

Steps to reproduce issue

  1. Pull the latest commit.
  2. Add the files for SNOPT7 to the pyoptsparse/pySNOPT/source folder as per installation instructions.
  3. Run python setup.py install --user from the root of the repository.
  4. Run testflo . from the root of the repository. All the tests using SNOPT will segfault.

Current behavior

Current fresh clone and build breaks when running SNOPT optimizer.

Expected behavior

Expected SNOPT tests to run properly.

Code version (if relevant)

Python version: 3.7.6

External dependencies: As listed in requirements.txt

Internal packages:

Changing maximum iterations

Type of issue

What types of issue is it?
Potential bug in pyoptsparse.

Description

I am trying to increase the maximum iterations for the IPOPT solver for a problem that I am working on. from the docs I understand that to do that you would write:

optOptions = {"max_iter": 400}

When I did that it still gave the maximum iterations exceeded at 100 iterations. Did I try implementing that correctly?

Improve pyOpt_History API

Type of issue

What types of issue is it?
Select the appropriate type(s) that describe this issue

  • New feature (non-breaking change which adds functionality)

Description

Add code to pyOpt_History to make it useful for postprocessing. This would include for example

  • code to return list of major iterations, and ADflow call counters used for making movies
  • code to retrieve various keys at all major iterations (for instance for plotting optimality)
  • various other methods for accessing different information within the history file

Ideally optView would be modified to use this API also, instead of doing its own thing

Add function to check linear-feasibility of any point

Type of issue

What types of issue is it?
Select the appropriate type(s) that describe this issue

  • New feature (non-breaking change which adds functionality)

Description

Add a function which will check whether a point satisfies the linear constraints specified for the optimization problem. This only requires (hopefully sparse) matrix-vector products so is cheap enough to do. This can be used to check, for example, whether the initial point of an optimization is feasible wrt the linear constraints given.

Add pyoptsparse version in the sqlitedict for checkpointing

Type of issue

What types of issue is it?

  • New feature (non-breaking change which adds functionality)

Description

Add the git commit hash for the pyoptsparse version that was used to run the case. This makes it easier to examine or debug cases from the past or when sending them to colleagues.

See this stackoverflow answer for a quick fix:
https://stackoverflow.com/questions/14989858/get-the-current-git-hash-in-a-python-script

import subprocess

def get_git_revision_hash():
    return subprocess.check_output(['git', 'rev-parse', 'HEAD'])

def get_git_revision_short_hash():
    return subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD'])

Current behavior

The git commit hash is not recorded

Expected behavior

We want to save the recorded git hash

Problems building with SNOPT

Good day,

I am having trouble building with SNOPT on Ubuntu 18.04.

With both pyoptsparse/ and snopt7/ in my home directory, my procedure is:

cd ~/pyoptsparse
cp ~/snopt7/src/*.f pyoptsparse/pySNOPT/source/
python setup.py build

This results in the error:

Error: Symbol ‘ne’ at (1) has no IMPLICIT type
error: Command "/usr/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -fPIC -O3 -funroll-loops -I/home/michael/anaconda3/lib/python3.6/site-packages/numpy/core/include -c -c pyoptsparse/pySNOPT/source/snopth.f -o build/temp.linux-x86_64-3.6/pyoptsparse/pySNOPT/source/snopth.o" failed with exit status 1

Hoping that the build might still have worked, I added the following to my .bashrc:

export PYTHONPATH=$PYTHONPATH:~/pyoptsparse/build/lib.linux-x86_64-3.6

Starting Python it seems like the build somewhat worked, since running

import pyoptsparse

gives:

/home/michael/pyoptsparse/build/lib.linux-x86_64-3.6/pyoptsparse/pyOpt_MPI.py:50: UserWarning: mpi4py could not be imported. mpi4py is required to use the parallel gradient analysis and parallel objective analysis for non-gradient based optimizers. Continuing using a dummy MPI module from pyOptSparse.
  warnings.warn(warn)

This is odd since I do have mpi4py installed, but for now I am not worried about mpi4py. Importing pyoptsparse.pySNOPT runs without error. However, running pyoptsparse.pySNOPT.SNOPT() gives:

AttributeError: module 'pyoptsparse.pySNOPT' has no attribute 'SNOPT'

I would appreciate any help with this. Thanks in advance.

Constraint number in snopt print out

What types of issue is it?

  • New feature (non-breaking change which adds functionality)

Description

It seems that currently the constraint order in the snopt output does not necessarily match with the order in optProb. When the snopt gives the message that largest discrepancy in a certain constraint number, it's confusing which constraint it's talking about. It might be helpful if we can figure out a way to relate to the information from snopt to the actual constraint.

Replace own implementation of isclose with numpy.isclose

Type of issue

What types of issue is it?
Select the appropriate type(s) that describe this issue

  • Code quality improvement

Description

Not really a bugfix, but a minor change to make the code more consistent.
pyOpt_optimizer has several instances of numpy.linalg.norm(x-self.cache['x']) > eps, with eps = numpy.finfo(1.0).eps. Ideally these should be replaced with numpy.isclose() with an appropriate absolute and relative tolerance.

The numpy.isclose() call in pyOpt_history should be adjusted to have the same tolerance.

Check default optimizer options

Type of issue

What types of issue is it?
Select the appropriate type(s) that describe this issue

  • New feature (non-breaking change which adds functionality)

Description

The default options stored in the Python wrapper is probably out of date for those optimizers that are still being developed. Check against newest versions and update as necessary.

Also, the behaviour is different across optimizers

  • for some optimizers, the default options are used (e.g. IPOPT)
  • for others, the default options are not used (e.g. SNOPT, ParOpt)

We need a clear policy on what exactly we are doing, and document this. I think we should NOT store/set defaults for optimizers where we do not provide source code, since they can change defaults at any time and cause inconsistencies with the wrapper. For those optimizers where we provide the source code, we should have the default options accessible in Python, and documented (via options table).

Lastly, there may be default options where we override them in pyOptSparse (think certain options in SNOPT for example). These need to be documented and explained.

Set fail flag to True if `funcs` or `funcsSens` contain `nan` or `inf` values

Type of issue

What types of issue is it?
Select the appropriate type(s) that describe this issue

  • New feature (non-breaking change which adds functionality)

Description

Current behavior

There is no error checking for if funcs and funcsSens contain either nan or inf values.

Expected behavior

There should be error checking, probably in the _masterFunc2 call. The fail flag should be set if either dictionaries contain any values which are either nan or inf.

Add an options table for each optimizer

Type of issue

What types of issue is it?
Select the appropriate type(s) that describe this issue

  • Documentation update

Description

There is currently no table describing all the possible optimizer options. Ideally, this should be generated programmatically from the Python source code.

IPOPT build failing in Python3

running python setup.py build_ext --inplace fails to generate the correct ipoptcore library file. Reference this excellent StackOverflow issue. It's a Python3 compatibility issue in the original branch of pyIPOPT. I will review the deltas between their version and ours and make a PR.

Make stored funcs values real instead of complex

Type of issue

What types of issue is it?
Select the appropriate type(s) that describe this issue

  • Bugfix (non-breaking change which fixes an issue)

Description

Due to complex casting for complex step derivatives, the funcs values are complex. They should be cast back to real to be saved in the history file.

Current behavior

The funcs values are complex with zero imaginary components

Expected behavior

They should be real valued

Issue with OptView not plotting snopt.hist results

Good day,

I am having a problem using OptView to plot the convergence of a problem I am solving with SNOPT.

This used to work fine in the past, but now when I run python ~/pyoptsparse/postprocessing/OptView.py snopt.hist I get the error:

Traceback (most recent call last):
  File "/home/michael/pyoptsparse/postprocessing/OptView.py", line 1310, in <module>
    disp = Display(histList, outputDir, figsize)
  File "/home/michael/pyoptsparse/postprocessing/OptView.py", line 108, in __init__
    self.OptimizationHistory()
  File "/home/michael/pyoptsparse/postprocessing/OptView_baseclass.py", line 149, in OptimizationHistory
    nkey = int(db['last']) + 1
  File "/home/michael/anaconda3/lib/python3.6/site-packages/sqlitedict.py", line 245, in __getitem__
    raise KeyError(key)
KeyError: 'last'

Is this an error anyone here has seen?

PS: I am using the latest v1.0 release and rebuilt after pulling the latest codebase, but the problem initially began quite randomly, i.e. not right after I pulled from the repo or anything like that.

Python version: Python 3.6.5 (Anaconda version)

pyOpt vs pyoptsparse: different behavior

Good day.

The following program runs fine for me:

import pyOpt

def objfunc(x):

    f = -x[0] * x[1] * x[2]
    g = [0.0] * 2
    g[0] = x[0] + 2. * x[1] + 2. * x[2] - 72.0
    g[1] = -x[0] - 2. * x[1] - 2. * x[2]

    fail = 0
    return f, g, fail

opt_prob = pyOpt.Optimization('TP37 Constrained Problem', objfunc)

opt_prob.addObj('f')

opt_prob.addVar('x1', 'c', lower=0.0, upper=42.0, value=10.0)
opt_prob.addVar('x2', 'c', lower=0.0, upper=42.0, value=10.0)
opt_prob.addVar('x3', 'c', lower=0.0, upper=42.0, value=10.0)
opt_prob.addConGroup('g', 2, 'i')

print(opt_prob)

slsqp = pyOpt.SLSQP()

[fstr, xstr, inform] = slsqp(opt_prob)

print(opt_prob.solution(0))

Giving the solution:

--------------------------------------------------------------------------------
    Total Time:                    0.0031
    Total Function Evaluations:         0
    Sensitivities:        FD

    Objectives:
        Name        Value        Optimum
	     f           -3456             0

	Variables (c - continuous, i - integer, d - discrete):
        Name    Type       Value       Lower Bound  Upper Bound
	     x1       c	     24.000000       0.00e+00     4.20e+01
	     x2       c	     12.000000       0.00e+00     4.20e+01
	     x3       c	     12.000000       0.00e+00     4.20e+01

	Constraints (i - inequality, e - equality):
        Name    Type                    Bounds
	    g_0   	  i       -1.00e+21 <= 0.000000 <= 0.00e+00
	    g_1   	  i       -1.00e+21 <= -72.000000 <= 0.00e+00

--------------------------------------------------------------------------------

However, changing pyOpt to pyoptsparse as:

import pyoptsparse

def objfunc(x):

    f = -x[0] * x[1] * x[2]
    g = [0.0] * 2
    g[0] = x[0] + 2. * x[1] + 2. * x[2] - 72.0
    g[1] = -x[0] - 2. * x[1] - 2. * x[2]

    fail = 0
    return f, g, fail


opt_prob = pyoptsparse.Optimization('TP37 Constrained Problem', objfunc)

opt_prob.addObj('f')

opt_prob.addVar('x1', 'c', lower=0.0, upper=42.0, value=10.0)
opt_prob.addVar('x2', 'c', lower=0.0, upper=42.0, value=10.0)
opt_prob.addVar('x3', 'c', lower=0.0, upper=42.0, value=10.0)
opt_prob.addConGroup('g', 2, 'i')

print(opt_prob)

slsqp = pyoptsparse.SLSQP()

[fstr, xstr, inform] = slsqp(opt_prob)

print(opt_prob.solution(0))

gives the error:

File "/Users/user/miniconda3/lib/python3.6/site-packages/pyoptsparse/pyOpt_optimization.py", line 522, in addConGroup
    name, nCon, linear, wrt, jac, lower, upper, scale)
  File "/Users/user/miniconda3/lib/python3.6/site-packages/pyoptsparse/pyOpt_constraint.py", line 51, in __init__
    lower = lower*numpy.ones(self.ncon)
TypeError: ufunc 'multiply' did not contain a loop with signature matching types dtype('<U32') dtype('<U32') dtype('<U32')

Am I missing something that you can perhaps not just interchange pyOpt and pyoptsparse command like this?

Thanks for any feedback

Some problems about multipointSparse

Good day, John.
Sorry for disturbing you. I'm a PhD student from NWPU. I have already installed "MDOlab code" you uploaded several days ago. These codes are really helpful for me. I followed MACH Tutorial to learn to use these codes. The example for ADflow analysis, illustrated in http://mdolab.engin.umich.edu/docs/packages/machtutorial/doc/aero_adflow.html, was tested successfully in my own PC. I used 1core and 4 cores to run aero_run.py respectively, and it appeared all right. However, when I ran aero_opt.py, some problems occurred. First, the multipoint package was not open source, so there was an error because the python script imported module multipoint.

xcz@ubuntu:~/Desktop/ADflow_test/opt_wing$ python aero_opt.py
Warning:` OpenMDAO dependency is not installed. OM_ADFLOW wrapper will not be active
Traceback (most recent call last):
File "aero_opt.py", line 14, in
from multipoint import *
_No module named multipoint

For all the aero_opt or aerostruct_opt cases in the tutorial, the scripts import module multipoint. Hence, I commented out the lines with multipointSparse in aero_opt.py myself, and modified the script with no reference script. Then I got a problem with MPI erroror after ADflow finished in the process.

......
writetecplotsurfacesolution': True}
MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD
with errorcode 1.

NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on
exactly when Open MPI kills them.

[1]PETSC ERROR: ------------------------------------------------------------------------
[1]PETSC ERROR: Caught signal number 15 Terminate: Some process (or the batch system) has told this process to end
[1]PETSC ERROR: Try option -start_in_debugger or -on_error_attach_debugger
[1]PETSC ERROR: or see http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind
......

I have added my script in the attachment. Could you help me to modify my script? BTW, will the multipoint package be open source soon? Thanks a lot.

aero_opt.py.txt

Interfacing IPOPT with pyoptsparse

  • Clarification

Description

I have successfully downloaded the IPOPT source code from https://coin-or.github.io/Ipopt/OPTIONS.html and have had it configure and run on my computer. I have had issues with being able to get it to interface with pyoptsparse. In the instructions in the docs it says to use IPOPT version 13.11.7. I have tried using this one as well as the newest version of IPOPT but it seems that the file structures and paths don't line up. Are there more accurate or detailed instruction for getting them to interface?

Andrew

Cannot run ParOpt using OpenMDAO pyoptsparse driver

Type of issue

  • Bugfix (non-breaking change which fixes an issue)

Description

Hi, I am trying to run the "helloworld" paraboloid example on openmdao's homepage, but instead of using the ScipyOptimizeDriver, I would like to use pyOptSparseDriver with ParOpt as optimizer by adding two lines (and comment out the ScipyOptimizeDriver):

prob.driver = om.pyOptSparseDriver()
prob.driver.options['optimizer'] = 'ParOpt' 

And I got the following error:

Traceback (most recent call last):
  File "paraboloid-min.py", line 16, in <module>
    prob.driver.options['optimizer'] = 'ParOpt'
  File "/usr/local/lib/python3.7/site-packages/openmdao/utils/options_dictionary.py", line 425, in __setitem__
    self._assert_valid(name, value)
  File "/usr/local/lib/python3.7/site-packages/openmdao/utils/options_dictionary.py", line 248, in _assert_valid
    ValueError)
  File "/usr/local/lib/python3.7/site-packages/openmdao/utils/options_dictionary.py", line 217, in _raise
    raise exc_type(full_msg)
ValueError: pyOptSparseDriver: Value ('ParOpt') of option 'optimizer' is not one of ['ALPSO', 'CONMIN', 'FSQP', 'IPOPT', 'NLPQLP', 'NSGA2', 'PSQP', 'SLSQP', 'SNOPT', 'NLPY_AUGLAG', 'NOMAD'].

It seems that for some reason for my openmdao implementation, ParOpt is not in the available optimizer list. I also tried to manually add 'ParOpt' to the list and I got this:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/openmdao/drivers/pyoptsparse_driver.py", line 358, in run
    opt = getattr(_tmp, optimizer)()
TypeError: 'module' object is not callable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "paraboloid-min.py", line 23, in <module>
    prob.run_driver()
  File "/usr/local/lib/python3.7/site-packages/openmdao/core/problem.py", line 549, in run_driver
    return self.driver.run()
  File "/usr/local/lib/python3.7/site-packages/openmdao/drivers/pyoptsparse_driver.py", line 364, in run
    raise ImportError(msg)
ImportError: Optimizer ParOpt is not available in this installation.

But instead, I am able to run examples/hs015.py with --opt=paropt without errors, which means both pyoptsparse and ParOpt are installed correctly. I can also run the openmdao paraboloid problem using pyoptsparse driver with other optimziers such as ALPSO, NSGA2 and SLSQP. Could anyone help to identify what goes wrong here? Thank you very much!

Code version

openmdao: 3.0.0 (installed by pip install openmdao)
pyoptsparse: 2.0.3

FYI, cc @gjkennedy

SLSQP sol.optInform doesn't return exit code

Type of issue

What types of issue is it?

  • Bugfix (non-breaking change which fixes an issue)

Description

I have been comparing aspects of different solvers and for the 'SLSQP' solver when I run sol.optInform it returns {}. For the other solvers that I have used in there it returns a code and a breif descriptions in a dictionary but for slsqp it returns an empty one.

Steps to reproduce issue

  1. run SLSQP and use sol.optInform after problem solve.

No parallel computing feature for pyALPSO

Hello,

I'd like to run the pyOptSparse pyALPSO module and utilize a parallel environment.

I could do this in pyOpt by instantiating an ALPSO optimizer with the keyword argument "pll_type":

from pyOpt import ALPSO
alpso_dpm = ALPSO(pll_type='DPM')

I'd then execute my analysis with multiple processors using the mpirun command.

Is this capability no longer supported in pyOptSparse for either pyALPSO or pyNSGA2?

Thank you very much for your time

Update IPOPT version

The latest version of IPOPT supported is v3.11.7, which is from December 2013, more than six years ago. pyOptSparse should update its python interface to support the latest release.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.