Add parallel heater and Qin outputs to dispatch solution file #4245
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
pull_request: | |
env: | |
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) | |
BUILD_TYPE: Release | |
GTEST_REF: b85864c64758dec007208e56af933fc3f52044ee | |
ORTOOLS_VER: "9.8" | |
jobs: | |
build-on-ubuntu: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Setup cmake | |
uses: jwlawson/actions-setup-cmake@v2 | |
with: | |
cmake-version: '3.24.x' | |
- name: Test cmake version | |
run: cmake --version | |
- name: Set relative paths | |
run: | | |
GTEST=$GITHUB_WORKSPACE/googletest | |
echo "GTEST=$GTEST" >> $GITHUB_ENV | |
SSCDIR=$GITHUB_WORKSPACE/ssc | |
echo "SSCDIR=$SSCDIR" >> $GITHUB_ENV | |
ORTOOLSDIR=$GITHUB_WORKSPACE/or-tools | |
echo "ORTOOLSDIR=$ORTOOLSDIR" >> $GITHUB_ENV | |
- name: Get cached OR-Tools | |
uses: actions/cache@v4 | |
id: cachedortools | |
with: | |
path: ${{env.ORTOOLSDIR}}/ | |
key: ortools-ubuntu | |
- name: Download OR-Tools | |
if: steps.cachedortools.outputs.cache-hit != 'true' | |
run: | | |
sudo apt update | |
sudo apt install -y build-essential cmake lsb-release | |
cd $GITHUB_WORKSPACE | |
wget -q https://github.com/google/or-tools/releases/download/v${ORTOOLS_VER}/or-tools_amd64_ubuntu-22.04_cpp_v${ORTOOLS_VER}.3296.tar.gz | |
tar -xvf or-tools_amd64_ubuntu-* | |
mkdir or-tools | |
mv or-tools*/* or-tools | |
- name: Get cached GTest | |
uses: actions/cache@v4 | |
id: cachedgtest | |
with: | |
path: ${{env.GTEST}}/ | |
key: gtest-ubuntu | |
- name: Clone Gtest | |
if: steps.cachedgtest.outputs.cache-hit != 'true' | |
uses: actions/checkout@v4 | |
with: | |
repository: google/googletest | |
path: googletest | |
ref: ${{env.GTEST_REF}} | |
- name: build Gtest | |
if: steps.cachedgtest.outputs.cache-hit != 'true' | |
run: | | |
export | |
mkdir ${GTEST}/build | |
cd ${GTEST}/build | |
cmake -DCMAKE_CXX_FLAGS=-std=c++11 .. | |
make | |
- name: Checkout SSC | |
uses: actions/checkout@v4 | |
with: | |
path: ssc | |
- name: Configure CMake | |
# Configure cmake to build ssc tests but not tools | |
run: | | |
mkdir ${SSCDIR}/build | |
cd ${SSCDIR}/build | |
cmake .. -DCMAKE_BUILD_TYPE=Release -DSAM_SKIP_TOOLS=1 -DCMAKE_INSTALL_PREFIX=${ORTOOLSDIR} | |
- name: Build | |
# Build your program with the given configuration | |
run: | | |
cd ${SSCDIR}/build | |
make -j4 | |
- name: Test | |
# Turn off fast fail for when the landbosse tests write to cerr | |
run: | | |
set -e | |
exec 3>&1 1>> ${SSCDIR}/build/test/gtest.log 2>&1 | |
${SSCDIR}/build/test/Test | tee /dev/fd/3 | |
exit ${PIPESTATUS[0]} | |
- name: Compare Test Times | |
run: | | |
pip install pandas requests | |
python ${SSCDIR}/test/compare_elapsed_time.py gtest_log ${SSCDIR}/build/test/gtest.log | |
- name: Upload Test Times CSV | |
uses: actions/upload-artifact@v4 | |
with: | |
name: SSC Linux Test Time Elapsed | |
path: | | |
${{env.SSCDIR}}/build/test/gtest_elapsed_times.csv | |
- name: Upload Shared Libraries | |
uses: actions/upload-artifact@v4 | |
with: | |
name: SSC Linux Shared Libraries | |
path: | | |
${{env.SSCDIR}}/build/ssc/libssc.so | |
${{env.SSCDIR}}/build/ssc/ssc.so | |
build-on-mac: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [macos-14-large, macos-latest] | |
steps: | |
- name: Setup cmake | |
uses: jwlawson/actions-setup-cmake@v2 | |
with: | |
cmake-version: '3.24.x' | |
- name: Test cmake version | |
run: cmake --version | |
- name: Set relative paths | |
run: | | |
GTEST=$GITHUB_WORKSPACE/googletest | |
echo "GTEST=$GTEST" >> $GITHUB_ENV | |
SSCDIR=$GITHUB_WORKSPACE/ssc | |
echo "SSCDIR=$SSCDIR" >> $GITHUB_ENV | |
ORTOOLSDIR=$GITHUB_WORKSPACE/or-tools | |
echo "ORTOOLSDIR=$ORTOOLSDIR" >> $GITHUB_ENV | |
- name: Get cached OR-Tools | |
uses: actions/cache@v4 | |
id: cachedortools | |
with: | |
path: ${{env.ORTOOLSDIR}}/ | |
key: ortools-${{ matrix.os }} | |
- name: download OR-Tools for Arm64 | |
if: ${{ matrix.os == 'macos-latest' && steps.cachedortools.outputs.cache-hit != 'true'}} | |
run: | | |
cd $GITHUB_WORKSPACE | |
curl -LJO https://github.com/google/or-tools/releases/download/v${ORTOOLS_VER}/or-tools_arm64_macOS-14.1_cpp_v${ORTOOLS_VER}.3296.tar.gz | |
tar -xvf or-tools_arm64*.tar.gz | |
mkdir or-tools | |
mv or-tools*/* or-tools | |
- name: download OR-Tools for Intel | |
if: ${{ matrix.os == 'macos-14-large' && steps.cachedortools.outputs.cache-hit != 'true'}} | |
run: | | |
cd $GITHUB_WORKSPACE | |
curl -LJO https://github.com/google/or-tools/releases/download/v${ORTOOLS_VER}/or-tools_x86_64_macOS-14.1_cpp_v${ORTOOLS_VER}.3296.tar.gz | |
tar -xvf or-tools_x86_64*tar.gz | |
mkdir or-tools | |
mv or-tools*/* or-tools | |
- name: Get cached GTest | |
uses: actions/cache@v4 | |
id: cachedgtest | |
with: | |
path: ${{env.GTEST}}/ | |
key: ortools-${{ matrix.os }} | |
- name: Clone Gtest | |
if: steps.cachedgtest.outputs.cache-hit != 'true' | |
uses: actions/checkout@v4 | |
with: | |
repository: google/googletest | |
path: googletest | |
ref: ${{env.GTEST_REF}} | |
- name: build Gtest | |
if: steps.cachedgtest.outputs.cache-hit != 'true' | |
run: | | |
export | |
mkdir ${GTEST}/build | |
cd ${GTEST}/build | |
cmake -DCMAKE_CXX_FLAGS=-std=c++11 .. | |
make | |
- name: Checkout SSC | |
uses: actions/checkout@v4 | |
with: | |
path: ssc | |
- name: Configure CMake | |
# Configure cmake to build ssc tests but not tools | |
run: | | |
mkdir ${SSCDIR}/build | |
cd ${SSCDIR}/build | |
cmake .. -DCMAKE_BUILD_TYPE=Release -DSAM_SKIP_TOOLS=1 -DSAMAPI_EXPORT=0 -DCMAKE_INSTALL_PREFIX=${ORTOOLSDIR} | |
- name: Build | |
# Build your program with the given configuration | |
run: | | |
cd ${SSCDIR}/build | |
make -j3 | |
- name: Test | |
# Turn off fast fail for when the landbosse tests write to cerr | |
run: | | |
set -e | |
exec 3>&1 1>> ${SSCDIR}/build/test/gtest.log 2>&1 | |
${SSCDIR}/build/test/Test | tee /dev/fd/3 | |
exit ${PIPESTATUS[0]} | |
- name: Compare Test Times | |
run: | | |
pip install pandas requests | |
python ${SSCDIR}/test/compare_elapsed_time.py gtest_log ${SSCDIR}/build/test/gtest.log | |
- name: Upload Test Times CSV | |
if: ${{ matrix.os == 'macos-latest' }} | |
uses: actions/upload-artifact@v2 | |
with: | |
name: SSC Mac Arm Test Time Elapsed | |
path: | | |
${{env.SSCDIR}}/build/test/gtest_elapsed_times.csv | |
- name: Upload Test Times CSV | |
if: ${{ matrix.os != 'macos-latest' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: SSC Mac Intel Test Time Elapsed | |
path: | | |
${{env.SSCDIR}}/build/test/gtest_elapsed_times.csv | |
- name: Upload Shared Libraries | |
if: ${{ matrix.os == 'macos-latest' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: SSC Mac Arm Shared Libraries | |
path: | | |
${{env.SSCDIR}}/build/ssc/libssc.dylib | |
${{env.SSCDIR}}/build/ssc/ssc.dylib | |
- name: Upload Shared Libraries | |
if: ${{ matrix.os != 'macos-latest' }} | |
uses: actions/upload-artifact@v2 | |
with: | |
name: SSC Mac Intel Shared Libraries | |
path: | | |
${{env.SSCDIR}}/build/ssc/libssc.dylib | |
${{env.SSCDIR}}/build/ssc/ssc.dylib | |
build-on-windows: | |
runs-on: windows-latest | |
steps: | |
- name: Setup cmake | |
uses: jwlawson/actions-setup-cmake@v2 | |
with: | |
cmake-version: '3.24.x' | |
- name: Test cmake version | |
run: cmake --version | |
- name: Set relative paths | |
shell: bash | |
run: | | |
GTEST=$GITHUB_WORKSPACE/googletest | |
echo "GTEST=$GTEST" >> $GITHUB_ENV | |
SSCDIR=$GITHUB_WORKSPACE/ssc | |
echo "SSCDIR=$SSCDIR" >> $GITHUB_ENV | |
ORTOOLSDIR=$GITHUB_WORKSPACE/or-tools/install | |
echo "ORTOOLSDIR=$ORTOOLSDIR" >> $GITHUB_ENV | |
- name: Get cached OR-Tools | |
uses: actions/cache@v4 | |
id: cachedortools | |
with: | |
path: ${{env.ORTOOLSDIR}} | |
key: ortools-windows | |
- name: Download OR-Tools | |
if: steps.cachedortools.outputs.cache-hit != 'true' | |
shell: bash | |
run: | | |
cd $GITHUB_WORKSPACE | |
curl -LJO https://github.com/google/or-tools/releases/download/v${ORTOOLS_VER}/or-tools_x64_VisualStudio2022_cpp_v${ORTOOLS_VER}.3296.zip | |
unzip or-tools_x64_VisualStudio2022_cpp_* -d or-tools | |
mv or-tools/or-tools_* $ORTOOLSDIR | |
- name: Get cached GTest | |
uses: actions/cache@v4 | |
id: cachedgtest | |
with: | |
path: ${{env.GTEST}}/ | |
key: gtest-windows | |
- name: Clone Gtest | |
if: steps.cachedgtest.outputs.cache-hit != 'true' | |
uses: actions/checkout@v4 | |
with: | |
repository: google/googletest | |
path: googletest | |
ref: ${{env.GTEST_REF}} | |
- name: build Gtest | |
if: steps.cachedgtest.outputs.cache-hit != 'true' | |
shell: bash | |
run: | | |
mkdir ${GTEST}/build | |
cd ${GTEST}/build | |
cmake -Dgtest_force_shared_crt=ON .. | |
cmake --build . --config Release -j4 | |
- name: Checkout SSC | |
uses: actions/checkout@v4 | |
with: | |
path: ssc | |
- name: Build SSC | |
shell: bash | |
run: | | |
# Downloaded OR-Tools has CoinOR enabled | |
mkdir $SSCDIR/build | |
cd $SSCDIR/build | |
cmake .. -DSAM_SKIP_TOOLS=1 -DCMAKE_CONFIGURATION_TYPES="Release" -DCMAKE_SYSTEM_VERSION="10.0" -DCMAKE_GENERATOR_PLATFORM=x64 -DUSE_COINOR=1 -DCMAKE_GENERATOR_PLATFORM=x64 -DUSE_COINOR=1 | |
cmake --build . --config Release -j4 --target Test | |
cp ssc/Release/* test/Release | |
- name: Test | |
shell: bash | |
run: | | |
cd ${SSCDIR}/build/test/Release | |
LOG_FILE=${SSCDIR}/build/test/gtest.log | |
exec > >(tee ${LOG_FILE}) 2>&1 | |
./Test.exe | |
- name: Compare Test Times | |
run: | | |
pip install pandas requests | |
python ${SSCDIR}/test/compare_elapsed_time.py gtest_log ${SSCDIR}/build/test/gtest.log | |
shell: bash | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: SSC Windows Test Time Elapsed | |
path: | | |
${{env.SSCDIR}}\build\test\gtest_elapsed_times.csv | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: SSC Windows Shared Libraries | |
path: | | |
${{env.SSCDIR}}\build\ssc\Release\ssc.dll |