Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
6df36e2
Update to rapids-logger 0.3 (#1659)
bdice Aug 11, 2026
f0ecadc
Upgrade cmake version to include the PDLP objective offset fix (#1695)
Kh4ster Aug 11, 2026
b7fb102
[BUG] Fixed uninitialized FJ constraint weights when the problem grow…
nguidotti Aug 11, 2026
6f5ec16
Use configured feasibility tolerance in Papilo (#1688)
hlinsen Aug 11, 2026
6f164ae
ci: make pr-test-summary and NVSkills CI checks non-blocking (#1696)
ramakrishnap-nv Aug 12, 2026
6a5dcbf
Fix GF2 incorrectly treating some one-sided rows as equality (#1707)
aliceb-nv Aug 13, 2026
58515dc
Accept a JSON model in cuopt_mcp, not just an MPS file
ramakrishnap-nv Aug 13, 2026
c5758d1
chore: trigger NVSkills CI for cuopt-routing-api-python (#1676)
ramakrishnap-nv Aug 13, 2026
03dd273
chore: trigger NVSkills CI for cuopt-user-rules (#1679)
ramakrishnap-nv Aug 13, 2026
ef19787
Expose solver statistics as scalar solution attributes (#1715)
ramakrishnap-nv Aug 14, 2026
22f99dc
Fix dual residual computation in final solution output (#1718)
yuwenchen95 Aug 14, 2026
25ea5a4
Add a hyperparameter that controls bounding of free variables (#1713)
yuwenchen95 Aug 14, 2026
39f1361
Print total setup time (#1714)
yuwenchen95 Aug 14, 2026
dd1da1b
make 'vale' check optional locally (#1708)
jameslamb Aug 14, 2026
08ea3b6
fix: exec the binary from console-script wrappers instead of spawning…
ramakrishnap-nv Aug 14, 2026
8cd3957
Merge branch 'main' into grpc-codegen-settings-descriptions
ramakrishnap-nv Aug 17, 2026
6649f91
feat(mcp): add cuopt_health and make the connection contract explicit
ramakrishnap-nv Aug 27, 2026
96d4d82
build(mcp): build and install cuopt_mcp like the other Python packages
ramakrishnap-nv Aug 27, 2026
ed43328
fix(grpc): refuse a duplicate bind unless --allow-reuseport
ramakrishnap-nv Aug 27, 2026
7328d73
docs(mcp): document how to build, test and drive the MCP server
ramakrishnap-nv Aug 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ jobs:
- wheel-tests-cuopt-server
- wheel-build-cuopt-sh-client
- test-self-hosted-server
- pr-test-summary
permissions:
contents: read
uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@main
Expand Down Expand Up @@ -114,6 +113,7 @@ jobs:
- '!ci/release/**'
- '!ci/run_*.pytests.sh'
- '!ci/run_ctests.sh'
- '!ci/run-vale.sh'
- '!ci/test_cpp*.sh'
- '!ci/test_notebooks.sh'
- '!ci/test_python.sh'
Expand Down Expand Up @@ -174,6 +174,7 @@ jobs:
- '!ci/check_style.sh'
- '!ci/docker/**'
- '!ci/release/**'
- '!ci/run-vale.sh'
- '!ci/test_python.sh'
- '!ci/test_self_hosted_service.sh'
- '!ci/test_wheel*.sh'
Expand Down Expand Up @@ -244,6 +245,7 @@ jobs:
- '!ci/check_style.sh'
- '!ci/docker/**'
- '!ci/release/**'
- '!ci/run-vale.sh'
- '!ci/test_self_hosted_service.sh'
- '!ci/test_wheel*.sh'
- '!ci/thirdparty-testing/**'
Expand Down Expand Up @@ -314,6 +316,7 @@ jobs:
- '!ci/docker/**'
- '!ci/release/**'
- '!ci/run_ctests.sh'
- '!ci/run-vale.sh'
- '!ci/test_python.sh'
- '!ci/thirdparty-testing/**'
- '!ci/utils/sync_skills_version.sh'
Expand Down Expand Up @@ -341,6 +344,7 @@ jobs:
uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@main
with:
enable_check_generated_files: false
ignored_pr_jobs: "pr-test-summary"
conda-cpp-build:
needs: [build-details, checks, compute-matrix-filters, changed-files]
# Consumed by conda-cpp-tests, conda-python-build, and (transitively) docs-build.
Expand Down Expand Up @@ -392,8 +396,6 @@ jobs:
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp
with:
build_type: pull-request
# Non-blocking while the multi-GPU test suite is maturing.
continue-on-error: true
conda-python-build:
needs: [build-details, conda-cpp-build, changed-files]
# Consumed by conda-python-tests and docs-build.
Expand Down Expand Up @@ -578,14 +580,14 @@ jobs:
build_type: pull-request
script: ci/test_self_hosted_service.sh
pr-test-summary:
name: "PR test summary (non-blocking)"
needs:
- conda-cpp-tests
- conda-python-tests
- wheel-tests-cuopt
- wheel-tests-cuopt-server
- test-self-hosted-server
if: always()
continue-on-error: true
runs-on: ubuntu-latest
permissions:
actions: read
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/request-nvskills-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ permissions:

jobs:
require-nvskills-ci:
name: "NVSkills CI (non-blocking)"
if: github.event_name == 'pull_request'
permissions:
contents: read
Expand Down
8 changes: 7 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -137,8 +137,14 @@ repos:
files: ^(VERSION|\.claude-plugin/marketplace\.json|\.cursor-plugin/plugin\.json|gemini-extension\.json)$
- id: vale
name: Vale docs prose lint
entry: vale
entry: ci/run-vale.sh
verbose: true
language: system
# 'pass_filenames: false' prevents pre-commit from invoking 'vale' once per file,
# (instead passes all files at once to 1 invocation)
pass_filenames: false
args: [--output=line, --minAlertLevel=warning, docs/cuopt/source]
# needs to be kept in sync with vale.ini
files: ^docs/cuopt/source/.*\.(rst|md)$
- id: validate-skills
name: Validate agent skills
Expand Down
11 changes: 9 additions & 2 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ ARGS=$*
REPODIR=$(cd "$(dirname "$0")"; pwd)
LIBCUOPT_BUILD_DIR=${LIBCUOPT_BUILD_DIR:=${REPODIR}/cpp/build}

VALIDARGS="clean codegen libcuopt cuopt_grpc_server cuopt cuopt_server cuopt_sh_client docs deb -a -b -g -fsanitize -tsan -msan -v -l= --verbose-pdlp --build-lp-only --no-fetch-rapids --skip-c-python-adapters --skip-tests-build --skip-routing-build --skip-grpc-build --skip-fatbin-write --host-lineinfo [--cmake-args=\\\"<args>\\\"] [--cache-tool=<tool>] --install --allgpuarch --ci-only-arch --show_depr_warn -h --help"
VALIDARGS="clean codegen libcuopt cuopt_grpc_server cuopt cuopt_server cuopt_sh_client cuopt_mcp docs deb -a -b -g -fsanitize -tsan -msan -v -l= --verbose-pdlp --build-lp-only --no-fetch-rapids --skip-c-python-adapters --skip-tests-build --skip-routing-build --skip-grpc-build --skip-fatbin-write --host-lineinfo [--cmake-args=\\\"<args>\\\"] [--cache-tool=<tool>] --install --allgpuarch --ci-only-arch --show_depr_warn -h --help"
HELP="$0 [<target> ...] [<flag> ...]
where <target> is:
clean - remove all existing build artifacts and configuration (start over)
Expand All @@ -24,6 +24,7 @@ HELP="$0 [<target> ...] [<flag> ...]
cuopt - build the cuopt Python package
cuopt_server - build the cuopt_server Python package
cuopt_sh_client - build cuopt self host client
cuopt_mcp - build the cuopt_mcp Python package (MCP server)
docs - build the docs
deb - build deb package (requires libcuopt to be built first)
and <flag> is:
Expand Down Expand Up @@ -53,7 +54,7 @@ HELP="$0 [<target> ...] [<flag> ...]
--show_depr_warn - show cmake deprecation warnings
-h - print this text

default action (no args) is to build 'libcuopt', 'cuopt', 'cuopt_server', and 'cuopt_sh_client' targets without installing into the conda environment (pass --install to also install libcuopt into the active conda environment; pass 'docs' explicitly to build documentation)
default action (no args) is to build 'libcuopt', 'cuopt', 'cuopt_server', 'cuopt_sh_client', and 'cuopt_mcp' targets without installing into the conda environment (pass --install to also install libcuopt into the active conda environment; pass 'docs' explicitly to build documentation)

libcuopt build dir is: ${LIBCUOPT_BUILD_DIR}

Expand Down Expand Up @@ -448,6 +449,12 @@ if buildAll || hasArg cuopt_sh_client; then
python "${PYTHON_ARGS_FOR_INSTALL[@]}" .
fi

# Build and install the cuopt_mcp Python package
if buildAll || hasArg cuopt_mcp; then
cd "${REPODIR}"/python/cuopt_mcp/
python "${PYTHON_ARGS_FOR_INSTALL[@]}" .
fi

# Build the docs (opt-in; pass 'docs' explicitly to build)
if hasArg docs; then
cd "${REPODIR}"/cpp/doxygen
Expand Down
17 changes: 17 additions & 0 deletions ci/run-vale.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash

# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

set -euo pipefail

if ! command -v vale &>/dev/null; then
if [[ "${CI:-}" != "true" ]]; then
echo "WARNING: vale not found — skipping prose lint. Install 'vale' to run this check locally." >&2
exit 0
fi
echo "ERROR: vale not found and CI=true." >&2
exit 1
fi

exec vale "$@"
2 changes: 1 addition & 1 deletion conda/environments/all_cuda-129_arch-aarch64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ dependencies:
- python>=3.11,<3.15
- pyyaml>=6.0.0
- rapids-build-backend>=0.4.0,<0.5.0
- rapids-logger==0.2.*,>=0.0.0a0
- rapids-logger==0.3.*
- re2
- requests
- rmm==26.10.*,>=0.0.0a0
Expand Down
2 changes: 1 addition & 1 deletion conda/environments/all_cuda-129_arch-x86_64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ dependencies:
- python>=3.11,<3.15
- pyyaml>=6.0.0
- rapids-build-backend>=0.4.0,<0.5.0
- rapids-logger==0.2.*,>=0.0.0a0
- rapids-logger==0.3.*
- re2
- requests
- rmm==26.10.*,>=0.0.0a0
Expand Down
2 changes: 1 addition & 1 deletion conda/environments/all_cuda-133_arch-aarch64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ dependencies:
- python>=3.11,<3.15
- pyyaml>=6.0.0
- rapids-build-backend>=0.4.0,<0.5.0
- rapids-logger==0.2.*,>=0.0.0a0
- rapids-logger==0.3.*
- re2
- requests
- rmm==26.10.*,>=0.0.0a0
Expand Down
2 changes: 1 addition & 1 deletion conda/environments/all_cuda-133_arch-x86_64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ dependencies:
- python>=3.11,<3.15
- pyyaml>=6.0.0
- rapids-build-backend>=0.4.0,<0.5.0
- rapids-logger==0.2.*,>=0.0.0a0
- rapids-logger==0.3.*
- re2
- requests
- rmm==26.10.*,>=0.0.0a0
Expand Down
4 changes: 2 additions & 2 deletions conda/recipes/libcuopt/recipe.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ cache:
- cuda-version =${{ cuda_version }}
- libraft-headers =${{ minor_version }}
- librmm =${{ minor_version }}
- rapids-logger =0.2
- rapids-logger =0.3
- cuda-nvtx-dev
- libcudss-dev >=0.7,<0.8
- libcurand-dev
Expand Down Expand Up @@ -124,7 +124,7 @@ outputs:
host:
- libboost-devel
- cuda-version =${{ cuda_version }}
- rapids-logger =0.2
- rapids-logger =0.3
- librmm =${{ minor_version }}
- libcublas
- libcudss-dev >=0.7,<0.8
Expand Down
2 changes: 1 addition & 1 deletion cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@ FetchContent_MakeAvailable(papilo)
FetchContent_Declare(
pslp
GIT_REPOSITORY "https://github.com/dance858/PSLP.git"
GIT_TAG "v0.0.8"
GIT_TAG "v0.0.10"
GIT_PROGRESS TRUE
EXCLUDE_FROM_ALL
SYSTEM
Expand Down
145 changes: 83 additions & 62 deletions cpp/include/cuopt/mathematical_optimization/constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,68 +20,69 @@
#define CUOPT_INSTANTIATE_INT64 0

/* @brief LP/MIP parameter string constants */
#define CUOPT_ABSOLUTE_DUAL_TOLERANCE "absolute_dual_tolerance"
#define CUOPT_RELATIVE_DUAL_TOLERANCE "relative_dual_tolerance"
#define CUOPT_ABSOLUTE_PRIMAL_TOLERANCE "absolute_primal_tolerance"
#define CUOPT_RELATIVE_PRIMAL_TOLERANCE "relative_primal_tolerance"
#define CUOPT_ABSOLUTE_GAP_TOLERANCE "absolute_gap_tolerance"
#define CUOPT_RELATIVE_GAP_TOLERANCE "relative_gap_tolerance"
#define CUOPT_INFEASIBILITY_DETECTION "infeasibility_detection"
#define CUOPT_STRICT_INFEASIBILITY "strict_infeasibility"
#define CUOPT_PRIMAL_INFEASIBLE_TOLERANCE "primal_infeasible_tolerance"
#define CUOPT_DUAL_INFEASIBLE_TOLERANCE "dual_infeasible_tolerance"
#define CUOPT_ITERATION_LIMIT "iteration_limit"
#define CUOPT_TIME_LIMIT "time_limit"
#define CUOPT_WORK_LIMIT "work_limit"
#define CUOPT_NODE_LIMIT "node_limit"
#define CUOPT_PDLP_SOLVER_MODE "pdlp_solver_mode"
#define CUOPT_METHOD "method"
#define CUOPT_PER_CONSTRAINT_RESIDUAL "per_constraint_residual"
#define CUOPT_SAVE_BEST_PRIMAL_SO_FAR "save_best_primal_so_far"
#define CUOPT_FIRST_PRIMAL_FEASIBLE "first_primal_feasible"
#define CUOPT_LOG_FILE "log_file"
#define CUOPT_LOG_TO_CONSOLE "log_to_console"
#define CUOPT_CROSSOVER "crossover"
#define CUOPT_FOLDING "folding"
#define CUOPT_AUGMENTED "augmented"
#define CUOPT_DUALIZE "dualize"
#define CUOPT_ORDERING "ordering"
#define CUOPT_BARRIER_DUAL_INITIAL_POINT "barrier_dual_initial_point"
#define CUOPT_POSTSOLVE_INFO "postsolve_info"
#define CUOPT_BARRIER_ITERATIVE_REFINEMENT "barrier_iterative_refinement"
#define CUOPT_BARRIER_STEP_SCALE "barrier_step_scale"
#define CUOPT_ELIMINATE_DENSE_COLUMNS "eliminate_dense_columns"
#define CUOPT_CUDSS_DETERMINISTIC "cudss_deterministic"
#define CUOPT_PRESOLVE "presolve"
#define CUOPT_MIP_PROBING "mip_probing"
#define CUOPT_DUAL_POSTSOLVE "dual_postsolve"
#define CUOPT_MIP_DETERMINISM_MODE "mip_determinism_mode"
#define CUOPT_MIP_ABSOLUTE_TOLERANCE "mip_absolute_tolerance"
#define CUOPT_MIP_RELATIVE_TOLERANCE "mip_relative_tolerance"
#define CUOPT_MIP_INTEGRALITY_TOLERANCE "mip_integrality_tolerance"
#define CUOPT_MIP_ABSOLUTE_GAP "mip_absolute_gap"
#define CUOPT_MIP_RELATIVE_GAP "mip_relative_gap"
#define CUOPT_MIP_HEURISTICS_ONLY "mip_heuristics_only"
#define CUOPT_MIP_SCALING "mip_scaling"
#define CUOPT_MIP_PRESOLVE "mip_presolve"
#define CUOPT_MIP_SYMMETRY "mip_symmetry"
#define CUOPT_MIP_RELIABILITY_BRANCHING "mip_reliability_branching"
#define CUOPT_MIP_CUT_PASSES "mip_cut_passes"
#define CUOPT_MIP_MIXED_INTEGER_ROUNDING_CUTS "mip_mixed_integer_rounding_cuts"
#define CUOPT_MIP_MIXED_INTEGER_GOMORY_CUTS "mip_mixed_integer_gomory_cuts"
#define CUOPT_MIP_KNAPSACK_CUTS "mip_knapsack_cuts"
#define CUOPT_MIP_FLOW_COVER_CUTS "mip_flow_cover_cuts"
#define CUOPT_MIP_IMPLIED_BOUND_CUTS "mip_implied_bound_cuts"
#define CUOPT_MIP_CLIQUE_CUTS "mip_clique_cuts"
#define CUOPT_MIP_ZERO_HALF_CUTS "mip_zero_half_cuts"
#define CUOPT_MIP_STRONG_CHVATAL_GOMORY_CUTS "mip_strong_chvatal_gomory_cuts"
#define CUOPT_MIP_REDUCED_COST_STRENGTHENING "mip_reduced_cost_strengthening"
#define CUOPT_MIP_RINS "mip_rins"
#define CUOPT_MIP_OBJECTIVE_STEP "mip_objective_step"
#define CUOPT_MIP_CUT_CHANGE_THRESHOLD "mip_cut_change_threshold"
#define CUOPT_MIP_CUT_MIN_ORTHOGONALITY "mip_cut_min_orthogonality"
#define CUOPT_MIP_BATCH_PDLP_STRONG_BRANCHING "mip_batch_pdlp_strong_branching"
#define CUOPT_MIP_BATCH_PDLP_RELIABILITY_BRANCHING "mip_batch_pdlp_reliability_branching"
#define CUOPT_ABSOLUTE_DUAL_TOLERANCE "absolute_dual_tolerance"
#define CUOPT_RELATIVE_DUAL_TOLERANCE "relative_dual_tolerance"
#define CUOPT_ABSOLUTE_PRIMAL_TOLERANCE "absolute_primal_tolerance"
#define CUOPT_RELATIVE_PRIMAL_TOLERANCE "relative_primal_tolerance"
#define CUOPT_ABSOLUTE_GAP_TOLERANCE "absolute_gap_tolerance"
#define CUOPT_RELATIVE_GAP_TOLERANCE "relative_gap_tolerance"
#define CUOPT_INFEASIBILITY_DETECTION "infeasibility_detection"
#define CUOPT_STRICT_INFEASIBILITY "strict_infeasibility"
#define CUOPT_PRIMAL_INFEASIBLE_TOLERANCE "primal_infeasible_tolerance"
#define CUOPT_DUAL_INFEASIBLE_TOLERANCE "dual_infeasible_tolerance"
#define CUOPT_ITERATION_LIMIT "iteration_limit"
#define CUOPT_TIME_LIMIT "time_limit"
#define CUOPT_WORK_LIMIT "work_limit"
#define CUOPT_NODE_LIMIT "node_limit"
#define CUOPT_PDLP_SOLVER_MODE "pdlp_solver_mode"
#define CUOPT_METHOD "method"
#define CUOPT_PER_CONSTRAINT_RESIDUAL "per_constraint_residual"
#define CUOPT_SAVE_BEST_PRIMAL_SO_FAR "save_best_primal_so_far"
#define CUOPT_FIRST_PRIMAL_FEASIBLE "first_primal_feasible"
#define CUOPT_LOG_FILE "log_file"
#define CUOPT_LOG_TO_CONSOLE "log_to_console"
#define CUOPT_CROSSOVER "crossover"
#define CUOPT_FOLDING "folding"
#define CUOPT_AUGMENTED "augmented"
#define CUOPT_DUALIZE "dualize"
#define CUOPT_ORDERING "ordering"
#define CUOPT_BARRIER_DUAL_INITIAL_POINT "barrier_dual_initial_point"
#define CUOPT_POSTSOLVE_INFO "postsolve_info"
#define CUOPT_BARRIER_PRESOLVE_BOUND_FREE_VARIABLES "barrier_presolve_bound_free_variables"
#define CUOPT_BARRIER_ITERATIVE_REFINEMENT "barrier_iterative_refinement"
#define CUOPT_BARRIER_STEP_SCALE "barrier_step_scale"
#define CUOPT_ELIMINATE_DENSE_COLUMNS "eliminate_dense_columns"
#define CUOPT_CUDSS_DETERMINISTIC "cudss_deterministic"
#define CUOPT_PRESOLVE "presolve"
#define CUOPT_MIP_PROBING "mip_probing"
#define CUOPT_DUAL_POSTSOLVE "dual_postsolve"
#define CUOPT_MIP_DETERMINISM_MODE "mip_determinism_mode"
#define CUOPT_MIP_ABSOLUTE_TOLERANCE "mip_absolute_tolerance"
#define CUOPT_MIP_RELATIVE_TOLERANCE "mip_relative_tolerance"
#define CUOPT_MIP_INTEGRALITY_TOLERANCE "mip_integrality_tolerance"
#define CUOPT_MIP_ABSOLUTE_GAP "mip_absolute_gap"
#define CUOPT_MIP_RELATIVE_GAP "mip_relative_gap"
#define CUOPT_MIP_HEURISTICS_ONLY "mip_heuristics_only"
#define CUOPT_MIP_SCALING "mip_scaling"
#define CUOPT_MIP_PRESOLVE "mip_presolve"
#define CUOPT_MIP_SYMMETRY "mip_symmetry"
#define CUOPT_MIP_RELIABILITY_BRANCHING "mip_reliability_branching"
#define CUOPT_MIP_CUT_PASSES "mip_cut_passes"
#define CUOPT_MIP_MIXED_INTEGER_ROUNDING_CUTS "mip_mixed_integer_rounding_cuts"
#define CUOPT_MIP_MIXED_INTEGER_GOMORY_CUTS "mip_mixed_integer_gomory_cuts"
#define CUOPT_MIP_KNAPSACK_CUTS "mip_knapsack_cuts"
#define CUOPT_MIP_FLOW_COVER_CUTS "mip_flow_cover_cuts"
#define CUOPT_MIP_IMPLIED_BOUND_CUTS "mip_implied_bound_cuts"
#define CUOPT_MIP_CLIQUE_CUTS "mip_clique_cuts"
#define CUOPT_MIP_ZERO_HALF_CUTS "mip_zero_half_cuts"
#define CUOPT_MIP_STRONG_CHVATAL_GOMORY_CUTS "mip_strong_chvatal_gomory_cuts"
#define CUOPT_MIP_REDUCED_COST_STRENGTHENING "mip_reduced_cost_strengthening"
#define CUOPT_MIP_RINS "mip_rins"
#define CUOPT_MIP_OBJECTIVE_STEP "mip_objective_step"
#define CUOPT_MIP_CUT_CHANGE_THRESHOLD "mip_cut_change_threshold"
#define CUOPT_MIP_CUT_MIN_ORTHOGONALITY "mip_cut_min_orthogonality"
#define CUOPT_MIP_BATCH_PDLP_STRONG_BRANCHING "mip_batch_pdlp_strong_branching"
#define CUOPT_MIP_BATCH_PDLP_RELIABILITY_BRANCHING "mip_batch_pdlp_reliability_branching"
#define CUOPT_MIP_STRONG_BRANCHING_SIMPLEX_ITERATION_LIMIT \
"mip_strong_branching_simplex_iteration_limit"

Expand Down Expand Up @@ -272,4 +273,24 @@
#define CUOPT_STRING_ARRAY_VARIABLE_NAMES 200
#define CUOPT_STRING_ARRAY_ROW_NAMES 201

/* @brief Scalar solution attribute selectors
* (see cuOptGetSolution{Int,Float}Attribute). Passed as cuopt_int_t; numbered in a separate
* range from the problem selectors.
*
* Which of these a solution carries depends on the class of problem that produced it; the
* accessors return CUOPT_INVALID_ARGUMENT for one that does not apply. Use CUOPT_ATTR_IS_MIP on
* the originating problem to determine the class.
*/
#define CUOPT_SOLUTION_ATTR_LP_PRIMAL_RESIDUAL 300
#define CUOPT_SOLUTION_ATTR_LP_DUAL_RESIDUAL 301
#define CUOPT_SOLUTION_ATTR_LP_GAP 302
#define CUOPT_SOLUTION_ATTR_LP_NUM_ITERATIONS 303
#define CUOPT_SOLUTION_ATTR_LP_SOLVED_BY 304
#define CUOPT_SOLUTION_ATTR_MIP_PRESOLVE_TIME 305
#define CUOPT_SOLUTION_ATTR_MIP_NUM_NODES 306
#define CUOPT_SOLUTION_ATTR_MIP_NUM_SIMPLEX_ITERATIONS 307
#define CUOPT_SOLUTION_ATTR_MIP_MAX_CONSTRAINT_VIOLATION 308
#define CUOPT_SOLUTION_ATTR_MIP_MAX_INT_VIOLATION 309
#define CUOPT_SOLUTION_ATTR_MIP_MAX_VARIABLE_BOUND_VIOLATION 310

#endif // CUOPT_CONSTANTS_H
Loading
Loading