From 1aa69ea28baf9626117a5504ca4063685e76410e Mon Sep 17 00:00:00 2001 From: MichaelPesce Date: Tue, 23 Jul 2024 13:52:25 -0400 Subject: [PATCH 01/11] add optimization setting for deactivating slacks --- backend/app/internal/pareto_stategic_model.py | 4 +- backend/app/routers/scenarios.py | 1 + .../src/views/Optimization/AdvancedOptions.js | 15 +++++-- .../ui/src/views/Optimization/Descriptions.js | 23 ++++++---- .../ui/src/views/Optimization/Optimization.js | 45 ++++--------------- 5 files changed, 37 insertions(+), 51 deletions(-) diff --git a/backend/app/internal/pareto_stategic_model.py b/backend/app/internal/pareto_stategic_model.py index 2101ce49..1504df5b 100644 --- a/backend/app/internal/pareto_stategic_model.py +++ b/backend/app/internal/pareto_stategic_model.py @@ -80,9 +80,9 @@ def run_strategic_model(input_file, output_file, id, modelParameters, overrideVa optimality_gap = int(modelParameters["optimalityGap"])/100 except: optimality_gap = 0 - # _log.info(f'optimality gap is {optimality_gap}') + # _log.info(f'deactivating slacks: {modelParameters["deactivate_slacks"]}') options = { - "deactivate_slacks": True, + "deactivate_slacks": modelParameters["deactivate_slacks"], "scale_model": modelParameters["scale_model"], "scaling_factor": 1000, "running_time": modelParameters["runtime"], diff --git a/backend/app/routers/scenarios.py b/backend/app/routers/scenarios.py index 735ba907..2318cf1e 100644 --- a/backend/app/routers/scenarios.py +++ b/backend/app/routers/scenarios.py @@ -179,6 +179,7 @@ async def run_model(request: Request, background_tasks: BackgroundTasks): "desalination_model": optimizationSettings.get("desalination_model", "false"), "infrastructure_timing": optimizationSettings.get("infrastructure_timing", "false"), "subsurface_risk": optimizationSettings.get("subsurface_risk", "false"), + "deactivate_slacks": optimizationSettings.get("deactivate_slacks", True), } _log.info(f"modelParameters: {modelParameters}") diff --git a/electron/ui/src/views/Optimization/AdvancedOptions.js b/electron/ui/src/views/Optimization/AdvancedOptions.js index 6dff6882..475701ec 100644 --- a/electron/ui/src/views/Optimization/AdvancedOptions.js +++ b/electron/ui/src/views/Optimization/AdvancedOptions.js @@ -16,11 +16,11 @@ export const advancedOptions = { } }, pipeline_cost: { - displayName: "Pipeline Capacity", + displayName: "Pipeline Cost", defaultValue: "distance_based", options: { - "Distance-based": "distance_based", - "Capacity-based": "capacity_based" + "Distance based": "distance_based", + "Capacity based": "capacity_based" } }, node_capacity: { @@ -46,7 +46,6 @@ export const advancedOptions = { "False": "false", "Exclude Over/Under PW": "exclude_over_and_under_pressured_wells", "Calculate Risk Metrics": "calculate_risk_metrics" - } }, removal_efficiency_method: { @@ -66,4 +65,12 @@ export const advancedOptions = { "MD": "md" }, }, + deactivate_slacks: { + displayName: "Deactivate Slacks", + defaultValue: true, + options: { + "True": true, + "False": "false" + }, + }, } \ No newline at end of file diff --git a/electron/ui/src/views/Optimization/Descriptions.js b/electron/ui/src/views/Optimization/Descriptions.js index d0a6653b..d8a5388c 100644 --- a/electron/ui/src/views/Optimization/Descriptions.js +++ b/electron/ui/src/views/Optimization/Descriptions.js @@ -32,40 +32,47 @@ export const descriptions = { Select the solver you would like to use. Note: Gurobi requires a license. If you do not have a Gurobi licence, select "CBC", an open source solver. , - scaleModel:
+ scale_model:
Choose whether you would like to scale the model or not.
, - pipelineCapacity:
+ pipeline_capacity:
Alternate pipeline capacity selection:
- -Input: use input for pipeline capacity
+ -Input: use pipeline capacities and rate in [currency/volume] to calculate pipeline capex costs
-Calculated: calculate pipeline capacity from pipeline diameters
, - nodeCapacity:
+ pipeline_cost:
+ Alternate pipeline capex cost structures (distance or capacity based):
+ -Capacity Based: use input for pipeline capacity
+ -Distance Based: use pipeline distances and rate in [currency/(diameter-distance)] to calculate pipeline capex costs
, + node_capacity:
Selection to include Node Capacity:
-True: Include network node capacity constraints
-False: Exclude network node capacity constraints
, - infrastructureTiming:
+ infrastructure_timing:
Selection to include infrastructure timing:
-True: Include infrastructure timing in model
-False: Exclude infrastructure timing from model
Note that infrastructure timing calculations are performed post-optimization.
, - subsurfaceRisk:
+ subsurface_risk:
Selection to include subsurface risk
-False: Exclude subsurface risk from model unless the subsurface risk objective function is selected
-Exclude Over/Under PW: Calculate subsurface risk metrics and disallow disposal to overpressured and underpressured wells
-Calculate Risk Metrics: Calculate subsurface risk metrics for the user to view, but don't change the optimization model
, - removalEfficiencyMethod:
+ removal_efficiency_method:
Method for calculating removal efficiency
-Load based: use contaminant load (flow times concentration) to calculate removal efficiency
-Concentration based: use contaminant concentration to calculate removal efficiency
, - desalinationModel:
+ desalination_model:
Selection to include surrogate model for desalination:
-False: Do not use surrogate model for desalination
-MVC: Use MVC (Mechanical Vapor Compressor) surrogate model
-MD: Use MD (Membrane Distillation) surrogate model
, + deactivate_slacks:
+ True to deactivate slack variables, False to use slack variables. Default is True
+
, } \ No newline at end of file diff --git a/electron/ui/src/views/Optimization/Optimization.js b/electron/ui/src/views/Optimization/Optimization.js index 3399b3b2..4be369f2 100644 --- a/electron/ui/src/views/Optimization/Optimization.js +++ b/electron/ui/src/views/Optimization/Optimization.js @@ -264,49 +264,20 @@ export default function Optimization(props) { - - -

Scale Model

- -
- -

Pipeline Capacity

- -
- -

Pipeline Cost

- -
- -

Node Capacity

- -
- -

Infrastructure Timing

- -
- -

Subsurface Risk

- -
- -

Removal Efficiency Method

- -
- -

Desalination Model

- -
+ { + Object.entries(advancedOptions).map(([ key, data ]) => ( + +

{data.displayName}

+ +
+ )) + }
- - {/* - advanced options: - */} { Object.entries(advancedOptions).map(([ key, data ]) => ( From e53062bcd598f33ce5ada3a9a4c6fb28f1868667 Mon Sep 17 00:00:00 2001 From: MichaelPesce Date: Wed, 24 Jul 2024 09:21:53 -0400 Subject: [PATCH 02/11] add key for options --- electron/ui/src/views/Optimization/Optimization.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron/ui/src/views/Optimization/Optimization.js b/electron/ui/src/views/Optimization/Optimization.js index 4be369f2..01bcad9d 100644 --- a/electron/ui/src/views/Optimization/Optimization.js +++ b/electron/ui/src/views/Optimization/Optimization.js @@ -268,7 +268,7 @@ export default function Optimization(props) { { Object.entries(advancedOptions).map(([ key, data ]) => ( - +

{data.displayName}

From a87784e71a432db955975d475d9d77fd87ac4a37 Mon Sep 17 00:00:00 2001 From: MichaelPesce <35114629+MichaelPesce@users.noreply.github.com> Date: Wed, 24 Jul 2024 11:19:46 -0400 Subject: [PATCH 03/11] Update electron/ui/src/views/Optimization/AdvancedOptions.js add hyphens to distance/capacity based Co-authored-by: Travis Arnold --- electron/ui/src/views/Optimization/AdvancedOptions.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/electron/ui/src/views/Optimization/AdvancedOptions.js b/electron/ui/src/views/Optimization/AdvancedOptions.js index 475701ec..e35c7702 100644 --- a/electron/ui/src/views/Optimization/AdvancedOptions.js +++ b/electron/ui/src/views/Optimization/AdvancedOptions.js @@ -19,8 +19,8 @@ export const advancedOptions = { displayName: "Pipeline Cost", defaultValue: "distance_based", options: { - "Distance based": "distance_based", - "Capacity based": "capacity_based" + "Distance-based": "distance_based", + "Capacity-based": "capacity_based" } }, node_capacity: { From a349cab5ff69e7a554125e7337e0acc9293c1c95 Mon Sep 17 00:00:00 2001 From: MichaelPesce <35114629+MichaelPesce@users.noreply.github.com> Date: Wed, 24 Jul 2024 11:25:33 -0400 Subject: [PATCH 04/11] Update electron/ui/src/views/Optimization/Descriptions.js Co-authored-by: Travis Arnold --- electron/ui/src/views/Optimization/Descriptions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron/ui/src/views/Optimization/Descriptions.js b/electron/ui/src/views/Optimization/Descriptions.js index d8a5388c..e95aebe4 100644 --- a/electron/ui/src/views/Optimization/Descriptions.js +++ b/electron/ui/src/views/Optimization/Descriptions.js @@ -38,7 +38,7 @@ export const descriptions = { pipeline_capacity:
Alternate pipeline capacity selection:
- -Input: use pipeline capacities and rate in [currency/volume] to calculate pipeline capex costs
+ -Input: use input for pipeline capacity
-Calculated: calculate pipeline capacity from pipeline diameters
, pipeline_cost:
Alternate pipeline capex cost structures (distance or capacity based):
From a4278539ee6f0f69e85a39a6b9e9812087d42816 Mon Sep 17 00:00:00 2001 From: MichaelPesce <35114629+MichaelPesce@users.noreply.github.com> Date: Wed, 24 Jul 2024 11:25:48 -0400 Subject: [PATCH 05/11] Update electron/ui/src/views/Optimization/Descriptions.js Co-authored-by: Travis Arnold --- electron/ui/src/views/Optimization/Descriptions.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/electron/ui/src/views/Optimization/Descriptions.js b/electron/ui/src/views/Optimization/Descriptions.js index e95aebe4..6aed3970 100644 --- a/electron/ui/src/views/Optimization/Descriptions.js +++ b/electron/ui/src/views/Optimization/Descriptions.js @@ -42,8 +42,8 @@ export const descriptions = { -Calculated: calculate pipeline capacity from pipeline diameters
, pipeline_cost:
Alternate pipeline capex cost structures (distance or capacity based):
- -Capacity Based: use input for pipeline capacity
- -Distance Based: use pipeline distances and rate in [currency/(diameter-distance)] to calculate pipeline capex costs
, + -Capacity-based: use pipeline capacities and rate in [currency/volume] to calculate pipeline CAPEX costs
+ -Distance-based: use pipeline distances and rate in [currency/(diameter-distance)] to calculate pipeline CAPEX costs
, node_capacity:
Selection to include Node Capacity:
-True: Include network node capacity constraints
From 26efbc775c552ef13d2f0449eb92bdb192a7c40f Mon Sep 17 00:00:00 2001 From: MichaelPesce Date: Wed, 24 Jul 2024 11:26:42 -0400 Subject: [PATCH 06/11] remove quotes around false --- electron/ui/src/views/Optimization/AdvancedOptions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron/ui/src/views/Optimization/AdvancedOptions.js b/electron/ui/src/views/Optimization/AdvancedOptions.js index e35c7702..5829ec8e 100644 --- a/electron/ui/src/views/Optimization/AdvancedOptions.js +++ b/electron/ui/src/views/Optimization/AdvancedOptions.js @@ -70,7 +70,7 @@ export const advancedOptions = { defaultValue: true, options: { "True": true, - "False": "false" + "False": false }, }, } \ No newline at end of file From f948de26e2e71f4347e092428162969bcf7fe153 Mon Sep 17 00:00:00 2001 From: MichaelPesce Date: Wed, 24 Jul 2024 12:55:54 -0400 Subject: [PATCH 07/11] update version number; run build --- .github/workflows/build.yml | 14 +++++--------- electron/package-lock.json | 4 ++-- electron/package.json | 10 +++++----- electron/ui/src/views/LandingPage/LandingPage.js | 2 +- 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 94169cc2..a4c8099b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,7 +3,7 @@ name: App build on: push: branches: - - "fix-compare-page" + - "add-slack-option" defaults: run: @@ -46,13 +46,9 @@ jobs: - name: Get idaes extensions run: idaes get-extensions - - name: Install correct tag of pareto + - name: Install correct branch of pareto working-directory: ../ - run: git clone https://github.com/tarnold17/project-pareto.git && cd project-pareto && git fetch --all && git checkout generate_report_fix && pip install --progress-bar off . - - # - name: Install correct branch of pareto - # working-directory: ../ - # run: git clone https://github.com/project-pareto/project-pareto.git && cd project-pareto && pip install --progress-bar off . + run: git clone https://github.com/project-pareto/project-pareto.git && cd project-pareto && pip install --progress-bar off . - name: Install build requirements working-directory: ./backend @@ -70,7 +66,7 @@ jobs: - name: Sign Windows Distribution run: | - AzureSignTool sign -kvu "${{ secrets.AZURE_KEY_VAULT_URI }}" -kvi "${{ secrets.AZURE_CLIENT_ID }}" -kvt "${{ secrets.AZURE_TENANT_ID }}" -kvs "${{ secrets.AZURE_CLIENT_SECRET }}" -kvc ${{ secrets.AZURE_CERT_NAME }} -tr http://timestamp.digicert.com -v electron/dist/ParetoUI-24.07.15-win64.exe + AzureSignTool sign -kvu "${{ secrets.AZURE_KEY_VAULT_URI }}" -kvi "${{ secrets.AZURE_CLIENT_ID }}" -kvt "${{ secrets.AZURE_TENANT_ID }}" -kvs "${{ secrets.AZURE_CLIENT_SECRET }}" -kvc ${{ secrets.AZURE_CERT_NAME }} -tr http://timestamp.digicert.com -v electron/dist/ParetoUI-24.07.24-win64.exe - name: Upload artifact for windows build uses: actions/upload-artifact@v4 @@ -78,4 +74,4 @@ jobs: with: name: windows-pareto-dist path: | - electron/dist/ParetoUI-24.07.15-win64.exe \ No newline at end of file + electron/dist/ParetoUI-24.07.24-win64.exe \ No newline at end of file diff --git a/electron/package-lock.json b/electron/package-lock.json index b5936434..ada3cc29 100644 --- a/electron/package-lock.json +++ b/electron/package-lock.json @@ -1,12 +1,12 @@ { "name": "pareto-ui", - "version": "24.07.15", + "version": "24.07.24", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pareto-ui", - "version": "24.07.15", + "version": "24.07.24", "dependencies": { "@electron/remote": "^2.0.8", "axios": "^0.27.2", diff --git a/electron/package.json b/electron/package.json index e3ddc1bb..9d2cb381 100644 --- a/electron/package.json +++ b/electron/package.json @@ -1,6 +1,6 @@ { "name": "pareto-ui", - "version": "24.07.15", + "version": "24.07.24", "author": "Michael Pesce", "private": true, "main": "build/main.js", @@ -74,10 +74,10 @@ "nsis": { "oneClick": false, "allowToChangeInstallationDirectory": true, - "artifactName": "ParetoUI-24.07.15-win64.exe" + "artifactName": "ParetoUI-24.07.24-win64.exe" }, "dmg": { - "artifactName": "ParetoUI-24.07.15-arm64.dmg" + "artifactName": "ParetoUI-24.07.24-arm64.dmg" }, "deb": { "depends": [ @@ -86,7 +86,7 @@ "liblapack3", "libblas3" ], - "artifactName": "ParetoUI-24.07.15-amd64.deb" + "artifactName": "ParetoUI-24.07.24-amd64.deb" }, "directories": { "buildResources": "assets" @@ -106,7 +106,7 @@ "win": { "target": "nsis", "icon": "build/pareto-logo.ico", - "artifactName": "ParetoUI-24.07.15-win64.exe" + "artifactName": "ParetoUI-24.07.24-win64.exe" }, "linux": { "target": "Deb", diff --git a/electron/ui/src/views/LandingPage/LandingPage.js b/electron/ui/src/views/LandingPage/LandingPage.js index 073d6e83..6befb146 100644 --- a/electron/ui/src/views/LandingPage/LandingPage.js +++ b/electron/ui/src/views/LandingPage/LandingPage.js @@ -58,7 +58,7 @@ export default function LandingPage(props) { -

v24.07.15 (PARETO v{process.env.REACT_APP_PARETO_VERSION})

+

v24.07.24 (PARETO v{process.env.REACT_APP_PARETO_VERSION})

From 39bba7119456761787c865e8eb05796756eddfac Mon Sep 17 00:00:00 2001 From: MichaelPesce Date: Wed, 24 Jul 2024 13:22:10 -0400 Subject: [PATCH 08/11] remove redundant pipelineCost description --- electron/ui/src/views/Optimization/Descriptions.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/electron/ui/src/views/Optimization/Descriptions.js b/electron/ui/src/views/Optimization/Descriptions.js index 6aed3970..65cb34b8 100644 --- a/electron/ui/src/views/Optimization/Descriptions.js +++ b/electron/ui/src/views/Optimization/Descriptions.js @@ -4,11 +4,6 @@ export const descriptions = { This setting limits the runtime for the solver to find a solution. Note that this time does not include time to build the model and process output.
, - pipelineCost:
- There are two ways pipeline capacity expansion costs can be calculated:
- -Distance-based: Uses pipeline distance, diameter and $/inch-mile rate
- -Capacity-based: Uses pipeline capacity and $/bbl rate -
, optimalityGap:
Measure of optimality guaranteed (example: 0% gap is the mathematically proven best possible solution, 3% optimality From aeec2fc9ff3063df496aef5f9257a898d12b000f Mon Sep 17 00:00:00 2001 From: MichaelPesce <35114629+MichaelPesce@users.noreply.github.com> Date: Wed, 24 Jul 2024 13:34:10 -0400 Subject: [PATCH 09/11] Update electron/ui/src/views/Optimization/Descriptions.js capex -> CAPEX Co-authored-by: Travis Arnold --- electron/ui/src/views/Optimization/Descriptions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron/ui/src/views/Optimization/Descriptions.js b/electron/ui/src/views/Optimization/Descriptions.js index 65cb34b8..f4d83b20 100644 --- a/electron/ui/src/views/Optimization/Descriptions.js +++ b/electron/ui/src/views/Optimization/Descriptions.js @@ -36,7 +36,7 @@ export const descriptions = { -Input: use input for pipeline capacity
-Calculated: calculate pipeline capacity from pipeline diameters
, pipeline_cost:
- Alternate pipeline capex cost structures (distance or capacity based):
+ Alternate pipeline CAPEX cost structures (distance or capacity based):
-Capacity-based: use pipeline capacities and rate in [currency/volume] to calculate pipeline CAPEX costs
-Distance-based: use pipeline distances and rate in [currency/(diameter-distance)] to calculate pipeline CAPEX costs
, node_capacity:
From a367e5750abae9035cbb021a03e555206dbcf3eb Mon Sep 17 00:00:00 2001 From: MichaelPesce Date: Wed, 24 Jul 2024 14:04:28 -0400 Subject: [PATCH 10/11] add pkg_resources.py2_warn to hidden imports --- backend/app/extra-hooks/hook-pyomo.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/app/extra-hooks/hook-pyomo.py b/backend/app/extra-hooks/hook-pyomo.py index 003d1e92..8a55c9a2 100644 --- a/backend/app/extra-hooks/hook-pyomo.py +++ b/backend/app/extra-hooks/hook-pyomo.py @@ -61,4 +61,5 @@ print('error on my part') continue -hiddenimports = list(imports) \ No newline at end of file +hiddenimports = list(imports) +hiddenimports.append("pkg_resources.py2_warn") \ No newline at end of file From e050e4d85ac640c90fd9bf6c0f122eba6ac7ca91 Mon Sep 17 00:00:00 2001 From: MichaelPesce Date: Wed, 24 Jul 2024 15:02:41 -0400 Subject: [PATCH 11/11] add lorem ipsum.txt to jaraco as data during build --- backend/app/extra-hooks/hook-pareto.py | 3 +++ backend/app/extra-hooks/hook-pyomo.py | 3 +-- backend/app/internal/assets/Lorem ipsum.txt | 0 3 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 backend/app/internal/assets/Lorem ipsum.txt diff --git a/backend/app/extra-hooks/hook-pareto.py b/backend/app/extra-hooks/hook-pareto.py index 9b69c4db..8c2d66e2 100644 --- a/backend/app/extra-hooks/hook-pareto.py +++ b/backend/app/extra-hooks/hook-pareto.py @@ -81,4 +81,7 @@ datas.append(('internal/assets/pareto_input_template.xlsx', 'app/internal/assets')) datas.append(('internal/assets/workshop_baseline_all_data_0.9.0.xlsx', 'app/internal/assets')) +# add lorem ipsum.txt for jaraco +datas.append(('internal/assets/Lorem ipsum.txt', 'jaraco/text')) + print(datas) \ No newline at end of file diff --git a/backend/app/extra-hooks/hook-pyomo.py b/backend/app/extra-hooks/hook-pyomo.py index 8a55c9a2..003d1e92 100644 --- a/backend/app/extra-hooks/hook-pyomo.py +++ b/backend/app/extra-hooks/hook-pyomo.py @@ -61,5 +61,4 @@ print('error on my part') continue -hiddenimports = list(imports) -hiddenimports.append("pkg_resources.py2_warn") \ No newline at end of file +hiddenimports = list(imports) \ No newline at end of file diff --git a/backend/app/internal/assets/Lorem ipsum.txt b/backend/app/internal/assets/Lorem ipsum.txt new file mode 100644 index 00000000..e69de29b