Skip to content

Commit

Permalink
Merge pull request scipy#11759 from mdhaber/linprog_highs
Browse files Browse the repository at this point in the history
ENH: optimize: add HiGHS methods to linprog
  • Loading branch information
mdhaber authored May 5, 2020
2 parents abb010e + 29f141e commit 4733a1c
Show file tree
Hide file tree
Showing 275 changed files with 85,814 additions and 30 deletions.
4 changes: 3 additions & 1 deletion benchmarks/benchmarks/optimize_linprog.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,9 @@

methods = [("interior-point", {"sparse": True}),
("interior-point", {"sparse": False}),
("revised simplex", {})]
("revised simplex", {}),
("highs-ipm", {}),
("highs-simplex", {})]
rr_methods = [_remove_redundancy, _remove_redundancy_dense,
_remove_redundancy_sparse]
presolve_methods = ['sparse', 'dense']
Expand Down
8 changes: 8 additions & 0 deletions doc/source/optimize.linprog-highs-ipm.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
.. _optimize.linprog-highs-ipm:

linprog(method='highs-ipm')
----------------------------------------

.. scipy-optimize:function:: scipy.optimize.linprog
:impl: scipy.optimize._linprog._linprog_highs
:method: highs-ipm
8 changes: 8 additions & 0 deletions doc/source/optimize.linprog-highs-simplex.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
.. _optimize.linprog-highs-simplex:

linprog(method='highs-simplex')
----------------------------------------

.. scipy-optimize:function:: scipy.optimize.linprog
:impl: scipy.optimize._linprog._linprog_highs
:method: highs-simplex
6 changes: 6 additions & 0 deletions scipy/optimize/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@

# Ignore cython generated files for HiGHS integration
_highs/pyHiGHS/src/highs_wrapper.cxx
_highs/pyHiGHS/src/linprog.cxx
_highs/pyHiGHS/src/linprog_mps.cxx
_highs/pyHiGHS/src/mpswriter.cxx
5 changes: 4 additions & 1 deletion scipy/optimize/__init__.py
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -247,8 +247,11 @@
optimize.linprog-simplex
optimize.linprog-interior-point
optimize.linprog-revised_simplex
optimize.linprog-highs-ipm
optimize.linprog-highs-simplex
The simplex method supports callback functions, such as:
The simplex, interior-point, and revised simplex methods support callback
functions, such as:
.. autosummary::
:toctree: generated/
Expand Down
8 changes: 8 additions & 0 deletions scipy/optimize/_highs/.clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# We'll use defaults from the LLVM style, but with 4 columns indentation.
BasedOnStyle: Google
---
Language: Cpp
# Force pointers to the type for C++.
DerivePointerAlignment: false
PointerAlignment: Left
IncludeBlocks: Regroup
39 changes: 39 additions & 0 deletions scipy/optimize/_highs/.github/workflows/build-clang.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: build-clang

on: ["pull_request"]

jobs:
debug:

runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]

steps:
- uses: actions/checkout@v1

- name: Create Build Environment
run: cmake -E make_directory ${{runner.workspace}}/build

- name: Configure CMake
shell: bash
working-directory: ${{runner.workspace}}/build
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=DEBUG

- name: Build
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute the build. You can specify a specific target with "--target <NAME>"
run: |
export CC=clang
export CC=clang++
cmake --build . --config DEBUG
- name: Test
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest -C $BUILD_TYPE
72 changes: 72 additions & 0 deletions scipy/optimize/_highs/.github/workflows/build-windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: build-windows

on: ["push", "pull_request"]

jobs:
windows_release:
runs-on: windows-latest

steps:
- uses: actions/checkout@v1

- name: Create Build Environment
# Some projects don't allow in-source building, so create a separate build directory
# We'll use this as our working directory for all subsequent commands
run: cmake -E make_directory ${{runner.workspace}}/build

- name: Configure CMake
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash
working-directory: ${{runner.workspace}}/build
# Note the current convention is to use the -S and -B options here to specify source
# and build directories, but this is only available with CMake 3.13 and higher.
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
run: cmake $GITHUB_WORKSPACE -DOPENMP=OFF

- name: Build
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute the build. You can specify a specific target with "--target <NAME>"
run: cmake --build . --config RELEASE

- name: Test
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest -C RELEASE

# windows_debug:
# runs-on: windows-latest

# steps:
# - uses: actions/checkout@v1

# - name: Create Build Environment
# # Some projects don't allow in-source building, so create a separate build directory
# # We'll use this as our working directory for all subsequent commands
# run: cmake -E make_directory ${{runner.workspace}}/build

# - name: Configure CMake
# # Use a bash shell so we can use the same syntax for environment variable
# # access regardless of the host operating system
# shell: bash
# working-directory: ${{runner.workspace}}/build
# # Note the current convention is to use the -S and -B options here to specify source
# # and build directories, but this is only available with CMake 3.13 and higher.
# # The CMake binaries on the Github Actions machines are (as of this writing) 3.12
# run: cmake $GITHUB_WORKSPACE -DOPENMP=OFF -DCMAKE_BUILD_TYPE=DEBUG

# - name: Build
# working-directory: ${{runner.workspace}}/build
# shell: bash
# # Execute the build. You can specify a specific target with "--target <NAME>"
# run: cmake --build . --config DEBUG

# - name: Test
# working-directory: ${{runner.workspace}}/build
# shell: bash
# # Execute tests defined by the CMake configuration.
# # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
# run: ctest -C DEBUG
Loading

0 comments on commit 4733a1c

Please sign in to comment.