Skip to content

Commit

Permalink
Merge branch 'develop' into feature/ANT-2561-api-e2e-solver-consistency
Browse files Browse the repository at this point in the history
  • Loading branch information
JasonMarechal25 authored Jan 7, 2025
2 parents a9535bb + 6dfdf82 commit 005da9a
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 27 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build_ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ jobs:
echo "XPRESSDIR=$XPRESS_DIR" >> $GITHUB_ENV
echo "XPAUTH_PATH=$XPRESS_DIR/license/community-xpauth.xpr" >> $GITHUB_ENV
echo "Create symbolic link for XPRESS library file because it is missing in the Python installation"
ln -s $XPRESS_DIR/lib/libxprs.so.42 $XPRESS_DIR/lib/libxprs.so
ln -s $XPRESS_DIR/lib/libxprs.so.42 $XPRESS_DIR/lib/libxprs.so
- name: Update alternatives
#mpicxx uses "g++" so we need g++ to be symbolic link to g++-10
Expand Down
11 changes: 11 additions & 0 deletions .github/workflows/ubuntu-system-deps-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,17 @@ jobs:
python -m pip install --upgrade pip
pip install -r requirements-tests.txt
- name: Set-up Xpress with pip for Ubuntu
shell: bash
run: |
python -m pip install "xpress>=9.2,<9.3"
echo ${{ env.pythonLocation }}
XPRESS_DIR=${{ env.pythonLocation }}/lib/python${{ env.PYTHON_VERSION }}/site-packages/xpress
echo "XPRESSDIR=$XPRESS_DIR" >> $GITHUB_ENV
echo "XPAUTH_PATH=$XPRESS_DIR/license/community-xpauth.xpr" >> $GITHUB_ENV
echo "Create symbolic link for XPRESS library file because it is missing in the Python installation"
ln -s $XPRESS_DIR/lib/libxprs.so.42 $XPRESS_DIR/lib/libxprs.so
- name: Install mandatory system libraries
run: |
sudo apt-get update --fix-missing
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/windows-vcpkg-deps-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,16 @@ jobs:
python -m pip install --upgrade pip
pip install -r requirements-tests.txt
- name: Set-up Xpress with pip
shell: bash
run: |
python -m pip install --no-cache-dir "xpress>=9.2,<9.3"
XPRESS_DIR="${{ env.pythonLocation }}\Lib\site-packages\xpress"
cp -r $XPRESS_DIR/lib $XPRESS_DIR/bin
cp $XPRESS_DIR/license/community-xpauth.xpr $XPRESS_DIR/bin/xpauth.xpr
echo "XPRESSDIR=$XPRESS_DIR" >> $GITHUB_ENV
echo "$XPRESS_DIR/bin" >> $GITHUB_PATH
- name: Pre-requisites
shell: cmd
run: |
Expand Down
10 changes: 3 additions & 7 deletions src/cpp/benders/benders_core/CriterionInputDataReader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,10 @@ using namespace Benders::Criterion;
CriterionPattern::CriterionPattern(std::string prefix, std::string body)
: prefix_(std::move(prefix)), body_(std::move(body)) {}

/**
* just do
* just cat ;)
*/
std::regex CriterionPattern::MakeRegex() const {
auto pattern = "(^" + prefix_ + "area<" + body_ + ">" + ")";
return std::regex(pattern);
std::string CriterionPattern::Value() const {
return prefix_ + "area<" + body_ + ">";
}

const std::string &CriterionPattern::GetPrefix() const { return prefix_; }
void CriterionPattern::SetPrefix(const std::string &prefix) {
prefix_ = prefix;
Expand Down
17 changes: 9 additions & 8 deletions src/cpp/benders/benders_core/VariablesGroup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,16 @@ std::vector<std::vector<int>> VariablesGroup::Indices() const {

void VariablesGroup::Search() {
indices_.assign(criterion_single_input_data_.size(), {});
int var_index(0);
for (const auto& variable : all_variables_) {
int pattern_index(0);
for (const auto& single_input_data : criterion_single_input_data_) {
if (std::regex_search(variable, single_input_data.Pattern().MakeRegex())) {
int pattern_index(0);
for (const auto& single_input_data : criterion_single_input_data_) {
auto pattern = single_input_data.Pattern().Value();
int var_index(0);
for (const auto& variable : all_variables_) {
if (variable.starts_with(pattern)) {
indices_[pattern_index].push_back(var_index);
}
++pattern_index;
++var_index;
}
++var_index;
++pattern_index;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class CriterionPattern {
public:
explicit CriterionPattern(std::string prefix, std::string body);
CriterionPattern() = default;
[[nodiscard]] std::regex MakeRegex() const;
[[nodiscard]] std::string Value() const;
[[nodiscard]] const std::string &GetPrefix() const;
void SetPrefix(const std::string &prefix);
[[nodiscard]] const std::string &GetBody() const;
Expand All @@ -54,7 +54,6 @@ class CriterionPattern {
private:
std::string prefix_;
std::string body_;

};

/// @brief holds the pattern and the criterion
Expand Down
18 changes: 9 additions & 9 deletions tests/cpp/outer_loop/outer_loop_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -181,17 +181,17 @@ TEST_F(OuterLoopPatternTest, RegexGivenPrefixAndBody) {
const std::string body = "body";
CriterionPattern o(prefix, body);

auto ret_regex = o.MakeRegex();
auto ret_regex = o.Value();

ASSERT_EQ(std::regex_search(prefix + body, ret_regex), false);
ASSERT_EQ(std::regex_search(prefix + "::" + body + "::suffix", ret_regex),
ASSERT_EQ((prefix + body).find(ret_regex) != std::string::npos, false);
ASSERT_EQ((prefix + "::" + body + "::suffix").find(ret_regex) != std::string::npos,
false);
ASSERT_EQ(std::regex_search(body + prefix, ret_regex), false);
ASSERT_EQ(std::regex_search(prefix + "::", ret_regex), false);
ASSERT_EQ(std::regex_search(body, ret_regex), false);
ASSERT_EQ(std::regex_search(prefix + "area<" + body + ">", ret_regex), true);
ASSERT_EQ(std::regex_search(prefix + "area<" + body + ">::suffix", ret_regex), true);
ASSERT_EQ(std::regex_search(prefix + "area<" + body + "_other_area>::suffix", ret_regex), false);
ASSERT_EQ((body + prefix).find(ret_regex) != std::string::npos , false);
ASSERT_EQ((prefix + "::").find(ret_regex) != std::string::npos, false);
ASSERT_EQ((body).find(ret_regex) != std::string::npos, false);
ASSERT_EQ((prefix + "area<" + body + ">").find(ret_regex) != std::string::npos, true);
ASSERT_EQ((prefix + "area<" + body + ">::suffix").find(ret_regex) != std::string::npos, true); //Match
ASSERT_EQ((prefix + "area<" + body + "_other_area>::suffix").find(ret_regex) != std::string::npos, false);
}

class OuterLoopInputFromYamlTest : public ::testing::Test {};
Expand Down

0 comments on commit 005da9a

Please sign in to comment.