Skip to content

Commit 634c6b5

Browse files
committed
Merge branch 'main' of github.com:google/or-tools
2 parents 5d8e372 + f204c4f commit 634c6b5

34 files changed

+1401
-354
lines changed

.github/workflows/amd64_windows_cmake_cpp.yml

+2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ jobs:
1515
fail-fast: false
1616
name: Windows • ${{ matrix.cmake.generator }} (${{ matrix.cmake.config }}) • C++
1717
runs-on: windows-latest
18+
env:
19+
CTEST_OUTPUT_ON_FAILURE: 1
1820
steps:
1921
- uses: actions/checkout@v4
2022
- name: Check cmake

.github/workflows/amd64_windows_cmake_dotnet.yml

+2-7
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,10 @@ jobs:
1414
fail-fast: false
1515
name: Windows • ${{ matrix.cmake.generator }} • .Net
1616
runs-on: windows-latest
17+
env:
18+
CTEST_OUTPUT_ON_FAILURE: 1
1719
steps:
1820
- uses: actions/checkout@v4
19-
- name: Install SWIG 4.2.1
20-
run: |
21-
(New-Object System.Net.WebClient).DownloadFile("http://prdownloads.sourceforge.net/swig/swigwin-4.2.1.zip","swigwin-4.2.1.zip");
22-
Expand-Archive .\swigwin-4.2.1.zip .;
23-
echo "$((Get-Item .).FullName)/swigwin-4.2.1" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
24-
- name: Check swig
25-
run: swig -version
2621
- name: Setup .NET 6.0
2722
uses: actions/setup-dotnet@v4
2823
with:

.github/workflows/amd64_windows_cmake_java.yml

+29-8
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,41 @@ jobs:
1111
cmake: [
1212
{generator: "Visual Studio 17 2022", config: Release, build_target: ALL_BUILD, test_target: RUN_TESTS, install_target: INSTALL},
1313
]
14+
java: [
15+
# see https://endoflife.date/azul-zulu
16+
{distrib: 'zulu', version: '8'}, # 2030/12
17+
{distrib: 'zulu', version: '11'}, # 2026/09
18+
{distrib: 'zulu', version: '17'}, # 2029/09
19+
{distrib: 'zulu', version: '21'}, # 2031/09
20+
# see https://endoflife.date/eclipse-temurin
21+
{distrib: 'temurin', version: '8'}, # 2026/11
22+
{distrib: 'temurin', version: '11'}, # 2027/10
23+
{distrib: 'temurin', version: '17'}, # 2027/10
24+
{distrib: 'temurin', version: '21'}, # 2029/12
25+
# see https://endoflife.date/microsoft-build-of-openjdk
26+
{distrib: 'microsoft', version: '11'}, # 2027/09
27+
{distrib: 'microsoft', version: '17'}, # 2027/09
28+
{distrib: 'microsoft', version: '21'}, # 2028/09
29+
]
1430
fail-fast: false
15-
name: Windows • ${{ matrix.cmake.generator }} • Java
31+
name: Windows • ${{ matrix.cmake.generator }} • ${{ matrix.java.distrib }}-${{ matrix.java.version }}
1632
runs-on: windows-latest
33+
env:
34+
CTEST_OUTPUT_ON_FAILURE: 1
1735
steps:
1836
- uses: actions/checkout@v4
19-
- name: Install SWIG 4.2.1
37+
- uses: actions/setup-java@v4
38+
with:
39+
distribution: ${{ matrix.java.distrib }}
40+
java-version: ${{ matrix.java.version }}
41+
- name: Update maven
2042
run: |
21-
(New-Object System.Net.WebClient).DownloadFile("http://prdownloads.sourceforge.net/swig/swigwin-4.2.1.zip","swigwin-4.2.1.zip");
22-
Expand-Archive .\swigwin-4.2.1.zip .;
23-
echo "$((Get-Item .).FullName)/swigwin-4.2.1" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
24-
- name: Check swig
25-
run: swig -version
43+
choco upgrade maven
44+
echo "C:\ProgramData\chocolatey\lib\maven\apache-maven-3.9.9\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
2645
- name: Check java
27-
run: java -version
46+
run: |
47+
java -version
48+
mvn --version
2849
- name: Check cmake
2950
run: cmake --version
3051
- name: Configure

.github/workflows/amd64_windows_cmake_python.yml

+2-7
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,15 @@ jobs:
2020
fail-fast: false
2121
name: Windows • ${{ matrix.cmake.generator }} • Python-${{ matrix.python.version }}
2222
runs-on: windows-latest
23+
env:
24+
CTEST_OUTPUT_ON_FAILURE: 1
2325
steps:
2426
- uses: actions/checkout@v4
2527
- uses: actions/setup-python@v4
2628
with:
2729
python-version: ${{ matrix.python.version }}
2830
- name: Install python3
2931
run: python3 -m pip install --user mypy-protobuf absl-py setuptools wheel numpy pandas
30-
- name: Install SWIG 4.2.1
31-
run: |
32-
(New-Object System.Net.WebClient).DownloadFile("http://prdownloads.sourceforge.net/swig/swigwin-4.2.1.zip","swigwin-4.2.1.zip");
33-
Expand-Archive .\swigwin-4.2.1.zip .;
34-
echo "$((Get-Item .).FullName)/swigwin-4.2.1" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
35-
- name: Check swig
36-
run: swig -version
3732
- name: Add Python binaries to path
3833
run: >
3934
echo "$((Get-Item ~).FullName)/AppData/Roaming/Python/${{ matrix.python.dir }}/Scripts" |

cmake/dependencies/SWIG.CMakeLists.txt.in

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ ExternalProject_Add(SWIG_project
1111
SOURCE_DIR "@CMAKE_CURRENT_BINARY_DIR@/${PROJECT_NAME}/source"
1212
BUILD_IN_SOURCE 1
1313

14-
URL "http://prdownloads.sourceforge.net/swig/swigwin-4.1.1.zip"
14+
URL "http://prdownloads.sourceforge.net/swig/swigwin-4.2.1.zip"
1515
LOG_DOWNLOAD TRUE
1616

1717
UPDATE_COMMAND ""

cmake/dotnet.cmake

+21-5
Original file line numberDiff line numberDiff line change
@@ -264,11 +264,27 @@ function(add_dotnet_test)
264264
WORKING_DIRECTORY ${DOTNET_TEST_DIR})
265265

266266
if(BUILD_TESTING)
267-
add_test(
268-
NAME dotnet_${COMPONENT_NAME}_${TEST_NAME}
269-
COMMAND ${CMAKE_COMMAND} -E env --unset=TARGETNAME
270-
${DOTNET_EXECUTABLE} test --nologo -c Release ${TEST_NAME}.csproj
271-
WORKING_DIRECTORY ${DOTNET_TEST_DIR})
267+
if(USE_DOTNET_6)
268+
add_test(
269+
NAME dotnet_${COMPONENT_NAME}_${TEST_NAME}_net60
270+
COMMAND ${CMAKE_COMMAND} -E env --unset=TARGETNAME
271+
${DOTNET_EXECUTABLE} test --nologo --framework net6.0 -c Release
272+
WORKING_DIRECTORY ${DOTNET_TEST_DIR})
273+
endif()
274+
if(USE_DOTNET_7)
275+
add_test(
276+
NAME dotnet_${COMPONENT_NAME}_${TEST_NAME}_net70
277+
COMMAND ${CMAKE_COMMAND} -E env --unset=TARGETNAME
278+
${DOTNET_EXECUTABLE} test --nologo --framework net7.0 -c Release
279+
WORKING_DIRECTORY ${DOTNET_TEST_DIR})
280+
endif()
281+
if(USE_DOTNET_8)
282+
add_test(
283+
NAME dotnet_${COMPONENT_NAME}_${TEST_NAME}_net80
284+
COMMAND ${CMAKE_COMMAND} -E env --unset=TARGETNAME
285+
${DOTNET_EXECUTABLE} test --nologo --framework net8.0 -c Release
286+
WORKING_DIRECTORY ${DOTNET_TEST_DIR})
287+
endif()
272288
endif()
273289
message(STATUS "Configuring test ${TEST_FILE_NAME} ...DONE")
274290
endfunction()

cmake/python.cmake

+4
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,8 @@ add_custom_command(
455455
$<TARGET_FILE:init_pybind11> ${PYTHON_PROJECT}/init/python
456456
COMMAND ${CMAKE_COMMAND} -E copy
457457
$<TARGET_FILE:knapsack_solver_pybind11> ${PYTHON_PROJECT}/algorithms/python
458+
COMMAND ${CMAKE_COMMAND} -E copy
459+
$<TARGET_FILE:set_cover_pybind11> ${PYTHON_PROJECT}/algorithms/python
458460
COMMAND ${CMAKE_COMMAND} -E copy
459461
$<TARGET_FILE:linear_sum_assignment_pybind11> ${PYTHON_PROJECT}/graph/python
460462
COMMAND ${CMAKE_COMMAND} -E copy
@@ -492,6 +494,7 @@ add_custom_command(
492494
DEPENDS
493495
init_pybind11
494496
knapsack_solver_pybind11
497+
set_cover_pybind11
495498
linear_sum_assignment_pybind11
496499
max_flow_pybind11
497500
min_cost_flow_pybind11
@@ -530,6 +533,7 @@ add_custom_command(
530533
COMMAND ${CMAKE_COMMAND} -E remove -f stub_timestamp
531534
COMMAND ${stubgen_EXECUTABLE} -p ortools.init.python.init --output .
532535
COMMAND ${stubgen_EXECUTABLE} -p ortools.algorithms.python.knapsack_solver --output .
536+
COMMAND ${stubgen_EXECUTABLE} -p ortools.algorithms.python.set_cover --output .
533537
COMMAND ${stubgen_EXECUTABLE} -p ortools.graph.python.linear_sum_assignment --output .
534538
COMMAND ${stubgen_EXECUTABLE} -p ortools.graph.python.max_flow --output .
535539
COMMAND ${stubgen_EXECUTABLE} -p ortools.graph.python.min_cost_flow --output .

ortools/algorithms/BUILD.bazel

+20
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
1515
load("@rules_cc//cc:defs.bzl", "cc_library", "cc_proto_library")
1616
load("@rules_proto//proto:defs.bzl", "proto_library")
17+
load("@rules_python//python:proto.bzl", "py_proto_library")
1718

1819
package(default_visibility = ["//visibility:public"])
1920

@@ -259,6 +260,24 @@ cc_proto_library(
259260
deps = [":set_cover_proto"],
260261
)
261262

263+
py_proto_library(
264+
name = "set_cover_py_pb2",
265+
deps = [":set_cover_proto"],
266+
)
267+
268+
cc_library(
269+
name = "set_cover_lagrangian",
270+
srcs = ["set_cover_lagrangian.cc"],
271+
hdrs = ["set_cover_lagrangian.h"],
272+
deps = [
273+
":adjustable_k_ary_heap",
274+
":set_cover_invariant",
275+
":set_cover_model",
276+
"//ortools/base:threadpool",
277+
"@com_google_absl//absl/log:check",
278+
],
279+
)
280+
262281
cc_library(
263282
name = "set_cover_model",
264283
srcs = ["set_cover_model.cc"],
@@ -284,6 +303,7 @@ cc_library(
284303
"//ortools/base",
285304
"@com_google_absl//absl/log",
286305
"@com_google_absl//absl/log:check",
306+
"@com_google_absl//absl/types:span",
287307
],
288308
)
289309

ortools/algorithms/python/BUILD.bazel

+28
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ config_setting(
4444
},
4545
)
4646

47+
# knapsack_solver
4748
cc_library(
4849
name = "knapsack_solver_doc",
4950
hdrs = ["knapsack_solver_doc.h"],
@@ -77,3 +78,30 @@ py_test(
7778
requirement("absl-py"),
7879
],
7980
)
81+
82+
# set_cover
83+
pybind_extension(
84+
name = "set_cover",
85+
srcs = ["set_cover.cc"],
86+
visibility = ["//visibility:public"],
87+
deps = [
88+
"//ortools/algorithms:set_cover_cc_proto",
89+
"//ortools/algorithms:set_cover_heuristics",
90+
"//ortools/algorithms:set_cover_invariant",
91+
"//ortools/algorithms:set_cover_model",
92+
"//ortools/algorithms:set_cover_reader",
93+
"@com_google_absl//absl/strings",
94+
"@pybind11_protobuf//pybind11_protobuf:native_proto_caster",
95+
],
96+
)
97+
98+
py_test(
99+
name = "set_cover_test",
100+
srcs = ["set_cover_test.py"],
101+
python_version = "PY3",
102+
deps = [
103+
":set_cover",
104+
"//ortools/algorithms:set_cover_py_pb2",
105+
requirement("absl-py"),
106+
],
107+
)

ortools/algorithms/python/CMakeLists.txt

+27
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
# See the License for the specific language governing permissions and
1212
# limitations under the License.
1313

14+
# knapsack_solver
1415
pybind11_add_module(knapsack_solver_pybind11 MODULE knapsack_solver.cc)
1516
set_target_properties(knapsack_solver_pybind11 PROPERTIES
1617
LIBRARY_OUTPUT_NAME "knapsack_solver")
@@ -33,6 +34,32 @@ endif()
3334
target_link_libraries(knapsack_solver_pybind11 PRIVATE ${PROJECT_NAMESPACE}::ortools)
3435
add_library(${PROJECT_NAMESPACE}::knapsack_solver_pybind11 ALIAS knapsack_solver_pybind11)
3536

37+
# set_cover
38+
pybind11_add_module(set_cover_pybind11 MODULE set_cover.cc)
39+
set_target_properties(set_cover_pybind11 PROPERTIES
40+
LIBRARY_OUTPUT_NAME "set_cover")
41+
42+
# note: macOS is APPLE and also UNIX !
43+
if(APPLE)
44+
set_target_properties(set_cover_pybind11 PROPERTIES
45+
SUFFIX ".so"
46+
INSTALL_RPATH "@loader_path;@loader_path/../../../${PYTHON_PROJECT}/.libs"
47+
)
48+
set_property(TARGET set_cover_pybind11 APPEND PROPERTY
49+
LINK_FLAGS "-flat_namespace -undefined suppress"
50+
)
51+
elseif(UNIX)
52+
set_target_properties(set_cover_pybind11 PROPERTIES
53+
INSTALL_RPATH "$ORIGIN:$ORIGIN/../../../${PYTHON_PROJECT}/.libs"
54+
)
55+
endif()
56+
57+
target_link_libraries(set_cover_pybind11 PRIVATE
58+
${PROJECT_NAMESPACE}::ortools
59+
pybind11_native_proto_caster
60+
)
61+
add_library(${PROJECT_NAMESPACE}::set_cover_pybind11 ALIAS set_cover_pybind11)
62+
3663
if(BUILD_TESTING)
3764
file(GLOB PYTHON_SRCS "*_test.py")
3865
foreach(FILE_NAME IN LISTS PYTHON_SRCS)

0 commit comments

Comments
 (0)