Snlquest

Latest version: v1.6

Safety actively analyzes 641171 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 3

2018.04.06

NOTE: If you experience import errors, try clearing your compiled Python files (*.pyc). In PyCharm, you can do this by right-clicking the top level directory in the project viewer and clicking "Clean Python Compiled Files."

Systems

* Relative imports for package modules have been reimplemented.
* Fixes for compatibility with Python 3.4 have been implemented.
* RC: I cannot get Kivy to run in Python 3.6 on OSX...

Resolved issues
* An issue where get_node_name() under ValuationDMS would return None, causing the app to crash when loading the node list in Wizard in Python 3.x.
* An issue where loading certain charts in the Wizard would cause the app to crash due to dictionary changes in Python 3.x.
* An issue where the app would fail to initialize due to a non-Python 3.x-compliant print() statement in the hoverable module.

Known issues
* An issue where LMP data for MISO nodes in the node list is not available.
* An issue where the wizard execute screen says it is finished when it is not.

2018.04.05

NOTE: If you experience import errors, try clearing your compiled Python files (*.pyc). In PyCharm, you can do this by right-clicking the top level directory in the project viewer and clicking "Clean Python Compiled Files."

Systems

Optimizer
The class formerly known as Optimizer has been redesigned for future extensibility. The focus was on minimal interface design, encapsulation, and designing for inheritance.

* Factored out an abstract base class (ABC) "Optimizer"; this ABC is intended to serve as a template class to inherit from when creating future Pyomo model frameworks. This ABC lives in `/es_gui/tools/optimizer.py`.
* Renamed the class formerly known as Optimizer to "ValuationOptimizer." It resides in `/es_gui/tools/valuation/valuation_optimizer.py`
* Created test class for ValuationOptimizer. You can run a test by running `valuation_optimizer.py`. It runs a couple of optimizations and gives you a value to check the result against.
* The market_type 'arbreg' has been renamed 'ercot_arbreg'.
* The var, param, and validate_attr modules have been encapsulated into the ValuationOptimizer class.
* The public interface of the class has been streamlined according to minimal interface design. Parameters have been named/renamed as follows:
* lmp --> price_electricity
* ru --> price_reg_up
* rd --> price_reg_down
* regCCP --> price_reg_capacity
* regPCP --> price_reg_performance
* cost_charge (NEW)
* cost_discharge (NEW)
* regA_mi --> mileage_slow
* regD_mi --> mileage_fast
* mi_ratio --> mileage_ratio
* gamma_ru --> fraction_reg_up
* gamma_rd --> fraction_reg_down
* Gamma_s --> Storage_efficiency
* Gamma_c --> Conversion_efficiency
* Reserve_reg (NEW)
* Reserve_charge (NEW)
* Make_whole (NEW)
* time_interval --> time

* Names were selected to be generic and minimize conflation with market-specific terminology.
* Regulation prices are matched to the appropriate interface. For example, PJM's RMCCP is matched to price_reg_capacity. MISO's RegMCP is matched to price_reg_performance. (RC: I picked this because it's the only reg. price and it's multiplied by Perf_score in the revenue calculation.)
* The matching of Val.Opt. interface parameters to Pyomo model attributes is done in the instantiate_model class method.
* At the moment, the actual parameter names used in the Pyomo expressions are largely unchanged. These are implementation details that can be changed at any time.
* Greek letter names have been removed from the code. These symbols should be used for documentation/publications as necessary.
* Cost of charging/discharging parameters have been declared, but not yet implemented.
* Reserve_reg and Reserve_charge parameters have been implemented. These adjust the state of charge limits at each time step. Reserve_reg is defined in terms of fractions of the regulation bid at the current time step. Reserve_charge is defined in terms of fractions of S_max. These parameters are provided as length-2 array-likes (tuple, list, ...). From the IEEE Access article, Reserve_reg is roughly equivalent to ($`a_0`$, $`b_0`$) and Reserve_charge is roughly equivalent to ($`a_1`$, $`b_1`$).
* `block.py` and `constraints_optimizer.py` have been rolled into `constraints.py`. The functionality of block was rolled into a class "ExpressionsBlock," an object that interacts with the Val.Opt. object. The constraint and objective functions are functions in the `constraints.py` module.
* Console output from the Pyomo solver has been eliminated.
* Logging functionality has been introduced to Val.Opt.

ValuationDMS
* Logging functionality has been introduced to Val.Opt.

App
* Integrated Val.Opt. changes.
* Removed placeholder accordion items from Index.
* Changed About screen to a modal view and changed its content.
* Removed "Quick Demo" button from the Valuation - Advanced screen.
* Adjusted size_hint_x values in View Results screen to reduce clipping.
* Added two more energy storage device templates to the Wizard.
* The ValuationDMS has been moved to be a property of the Valuation - Home screen.

Resolved issues
* An issue where "regulation capacity offered" was incorrectly calculated as "reg_up - reg_down" in ERCOT arbreg plots in the View Results screen.
* An issue where a blank field in "Select time" in "View Results" screen can be entered, causing the app to crash.
* An issue where View Screen's toolbar would remain disabled after selecting runs to view.

Known issues
* An issue where LMP data for MISO nodes in the node list is not available.
* An issue where the wizard execute screen says it is finished when it is not.

2018.03.29

Systems

Optimizer
* Overloaded gamma_ru and gamma_rd to accept single value or arrays.
* If single value, it is constant over entire time horizon.
* If no value is provided, a default is used (defined in param.py).
* Added iso_ne_pfp market_type.
* Removed redundant constraint definitions (state of charge min/max).
* Added results and net_revenue properties. results gives you a DataFrame representation of the solution. net_revenue gives you the objective function value.

ValuationDMS
* Reworked ERCOT to use datafiles from their website ("historical").
* Transitioning out of nested dictionary setup of DMS. Will use a single key that can be parsed for utility function arguments.

Data
* Added ERCOT data from 2013-2017. Replaced the 2011 data.
* Added ISONE zonal data for 2013-2017.

App
* Integrated ISO-NE into advanced, wizard, and report sections.
* Updated for new ERCOT data.
* Changed ISO select buttons to be in a grid layout to fix their dimensions.

Resolved issues
* An issue where MISO data in 12/2014 was incomplete or corrupted.

Known issues
* An issue where LMP data for MISO nodes in the node list is not available.
* An issue where the wizard execute screen says it is finished when it is not.

1.2

This patch is the official release of QuESt BTM, the application for behind-the-meter energy storage analysis tools. A number of fixes and quality of life improvements for QuESt have also been implemented.

QuESt
QuESt Data Manager
* A tool for downloading utility rate structure data has been implemented.
* This tool is designed for use in behind-the-meter applications.
* This tool leverages the [OpenEI](https://openei.org) database through their API.
* An API key, available through the OpenEI website, is required to use this tool.
* Search for a utility in the U.S. Utility Rate Database and select a rate structure.
* <img src="patch_note_resources/patch-utility-rate-structure.png" alt="Search for a utility in the U.S. Utility Rate Database and select a rate structure." width=600px margin="auto" />
* The time-of-use energy and demand rate schedules are retrieved from the database, in addition to the monthly flat demand schedule.
* <img src="patch_note_resources/patch-energy-schedule.png" alt="The time-of-use energy and demand rate schedules are retrieved from the database, in addition to the monthly flat demand schedule." width=600px margin="auto" />
* Modify the period rates or rate schedules as desired.
* Specify the net-metering scheme.
* Save the rate structure for use in other QuESt applications.
* <img src="patch_note_resources/patch-save-rate-structure.png" alt="Save the rate structure for use in other QuESt applications." width=600px margin="auto" />
* A tool for downloading simulated hourly load profiles for commercial and residential buildings has been implemented.
* This tool is designed for use in behind-the-meter applications.
* For commercial buildings, search by city to determine the climate and select from one of 17 different commercial building types.
* <img src="patch_note_resources/patch-commercial-load.png" alt="For commercial buildings, search by city to determine the climate and select from one of 17 different commercial building types." width=600px margin="auto" />
* For residential buildings, specify the amount of load from "base", "low", and "high" and select the climate based on location.
* <img src="patch_note_resources/patch-residential-load.png" alt="For residential buildings, specify the amount of load from 'base', 'low', and 'high' and select the climate based on location." width=600px margin="auto" />
* A tool for downloading simulated photovoltaic power profiles has been implemented.
* This tool is designed for behind-the-meter applications.
* This tool leverages the [PVWatts](https://pvwatts.nrel.gov/) software through their API.
* An API key, the same as the one used for the OpenEI utility rate structure database, is required to use this tool.
* Specify parameters such as the location of the system in latitude and longitude coordinates, the nameplate capacity, the module and array types, and the system efficiency.
* <img src="patch_note_resources/patch-pv-profile.png" alt="Specify parameters such as the location of the system in latitude and longitude coordinates, the nameplate capacity, the module and array types, and the system efficiency." width=600px margin="auto" />
* Save the photovoltaic power profile for use in other QuESt applications.

QuESt Valuation
* The appearance of the Valuation Wizard has been slightly adjusted.
* Some rudimentary value checking for energy storage system parameters has been implemented.
* The terms for adjusting the allowable range of state of charge have been changed.
* % of energy capacity to reserve for charging (default: 0) --> maximum state of charge (%) (default: 100)
* % of energy capacity to reserve for discharging (default: 0) --> minimum state of charge (%) (default: 0)
* The default initial (and final) state of charge has been set to 50% (was: 0).

QuESt BTM
* A new application in the QuESt suite, QuESt BTM, has been implemented.
* This application is designed to have a collection of tools for behind-the-meter energy storage.
* The time-of-use cost savings wizard has been added to QuESt BTM.
* This tool is for estimating the cost savings provided by energy storage for time-of-use and net-energy-metering customers.
* Select a utility rate structure and load profile both of which can be obtained using QuESt Data Manager.
* <img src="patch_note_resources/patch-costsavings-1.png" alt="Select a utility rate structure." width=600px margin="auto" />
* <img src="patch_note_resources/patch-costsavings-2.png" alt="Select a load profile." width=600px margin="auto" />
* Optionally, select a photovoltaic power profile which can also be obtained using QuEST Data Manager.
* <img src="patch_note_resources/patch-costsavings-3.png" alt="Select a PV profile (optional)." width=600px margin="auto" />
* Describe the parameters of the energy storage system.
* <img src="patch_note_resources/patch-costsavings-4.png" alt="Describe the parameters of the energy storage system." width=600px margin="auto" />
* One year of operation will be simulated to minimize cost and the total bill with and without energy storage will be calculated. This includes energy charges, demand charges, and net metering charges and/or credits.
* <img src="patch_note_resources/patch-costsavings-5.png" alt="One year of operation will be simulated to minimize cost and the total bill with and without energy storage will be calculated. This includes energy charges, demand charges, and net metering charges and/or credits." width=600px margin="auto" />
* A summary report can be generated at the end of the wizard that includes more detail on the mathematical formulation, a summary of the scenario specified, and a summary of the results including figures.
* <img src="patch_note_resources/patch-costsavings-6.png" alt="A summary report can be generated at the end of the wizard that includes more detail on the mathematical formulation, a summary of the scenario specified, and a summary of the results including figures." width=600px margin="auto" />
* The results of each individual month can be analyzed further in the results viewer. This includes time series of the adjusted total power draw and the energy storage system's state of charge.
* <img src="patch_note_resources/patch-costsavings-7.png" alt="The results of each individual month can be analyzed further in the results viewer. This includes time series of the adjusted total power draw and the energy storage system's state of charge." width=600px margin="auto" />

Miscellaneous
* Multiset bar charts generated by, e.g., QuESt Valuation and QuESt BTM wizards, now annotate the maximum value for each set.
<img src="patch_note_resources/chart_total_bill_comparison_multiset.png" alt="Multiset bar charts now annotate the maximum value of each set." width=600px margin="auto" />
* The "solved model" list in results viewer tools now lists the models in reverse chronological order.
<img src="patch_note_resources/sorted_solved_models.png" alt="Multiset bar charts now annotate the maximum value of each set." width=600px margin="auto" />

Resolved issues
* An issue where versions of the Pyomo (~5.6) package would cause QuESt to crash to desktop when trying to solve optimization models.
* An issue where non-numeric characters could not be entered into the "NodeID" field in the ISO/RTO market and operations data tool in QuESt Data Manager. Previously, this prevented you from entering in Node ID values with alphanumeric characters and downloading the corresponding data.

Known issues
* An issue where a blank image instead of the expected chart appears when generating a report from the QuESt Valuation wizard or QuESt BTM Time-of-Use Cost Savings wizard.
* If this issue persists, we may consider using alternative means to generate the charts external to the GUI. Generating the report again may solve the issue.
* An issue where search filters, such as those in selection lists or in the utility rate structure tool in QuESt Data Manager, are too sensitive to queries.
* We plan on implementing "fuzzy" search or similar concepts to ease the use of these search tools and filters.
* An issue where QuESt will be reported as "not responding" by the operating system during batch optimization processes such as those in the QuESt Valuation and QuESt BTM applications.
* This is due to the processing requirements of solving the models preventing the GUI from being updated. We will consider restructuring how the computation is performed in order to minimize GUI freezes.

1.2.c

Resolved issues
* An issue where attempting to download ISO/RTO market data for ERCOT resulted in a fatal crash.

1.2.b

Resolved issues
* An issue where attempting to export a PNG from a results viewer when solved models were selected but no plot had yet been drawn resulted in a fatal crash.

Page 2 of 3

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.