Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix 2065 #2101

Merged
merged 2 commits into from
Jan 5, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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: 10 additions & 0 deletions FEATURES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
## Build changes

## Code changes

Any LP offset is communicated to the IPM solver, and used in logging and primal/dual objective calculations.

If there is a valid basis when Highs::run() is called, presolve isn't skipped unless the solver option is "simplex" or "choose" (when simplex will always be chosen if there is an advanced basis).

Added basis solve methods to highspy

Added methods to get primal/dual ray and dual unboundedness direction to highspy


18 changes: 10 additions & 8 deletions src/Highs.h
Original file line number Diff line number Diff line change
Expand Up @@ -510,29 +510,31 @@ class Highs {
}

/**
* @brief Indicate whether a dual unbounded ray exists, and gets
* it if it does and dual_ray is not nullptr
* @brief Indicate whether a dual unbounded ray exists, and (at the
* expense of solving an LP) gets it if it does not and
* dual_ray_value is not nullptr
*/
HighsStatus getDualRay(bool& has_dual_ray, double* dual_ray_value = nullptr);

/**
* @brief Indicate whether a dual unbounded ray exists, and gets
* it if it does
* @brief Indicate whether a dual unbounded ray exists, and gets it
* if it does
*/
HighsStatus getDualRaySparse(bool& has_dual_ray, HVector& row_ep_buffer);

/**
* @brief Indicate whether a dual unboundedness direction exists,
* and gets it if it does and dual_unboundedness_direction is not
* nullptr
* and (at the expense of solving an LP) gets it if
* dual_unboundedness_direction is not nullptr
*/
HighsStatus getDualUnboundednessDirection(
bool& has_dual_unboundedness_direction,
double* dual_unboundedness_direction_value = nullptr);

/**
* @brief Indicate whether a primal unbounded ray exists, and gets
* it if it does and primal_ray is not nullptr
* @brief Indicate whether a primal unbounded ray exists, and (at
* the expense of solving an LP) gets it if primal_ray is not
* nullptr
*/
HighsStatus getPrimalRay(bool& has_primal_ray,
double* primal_ray_value = nullptr);
Expand Down
Loading