Giter Site home page Giter Site logo

sandialabs / snl-quest Goto Github PK

View Code? Open in Web Editor NEW
127.0 21.0 38.0 246.01 MB

An open source, Python-based software platform for energy storage simulation and analysis developed by Sandia National Laboratories.

License: Other

Makefile 0.04% Batchfile 0.07% Python 75.74% HTML 12.71% kvlang 7.54% Shell 0.01% CSS 0.82% JavaScript 3.09%
energy-storage pyomo kivy sandia-national-laboratories optimization python scr-2333

snl-quest's Introduction

QuESt logo

QuESt 2.0: Open-source Platform for Energy Storage Analytics

Current release version: 2.0

Release date: Feb, 2024

Contact

For issues and feedback we would appreciate it if you could use the "Issues" feature of this repository. This helps others join the discussion and helps us keep track of and document issues.

Email

Project maintainer (Tu Nguyen) @sandia.gov: tunguy

Table of contents

What is it?

QuESt 2.0 is an evolved version of the original QuESt, an open-source Python software designed for energy storage (ES) analytics. It transforms into a platform providing centralized access to multiple tools and improved data analytics, aiming to simplify ES analysis and democratize access to these tools.

Download U.S. utility rate structure data

Currently, QuESt 2.0 includes three main components:

The App Hub

The QuESt App Hub operates similarly to an app store, offering access points to a multitude of applications. Currently, various energy storage analytics tools have been available on QuESt App hub. For example:

  • QuESt Data Manager manages the acquisition of data.

  • QuESt Valuation estimates the potential revenue generated by energy storage systems when providing ancillary services in the electricity markets.

  • QuESt BTM (Behind-The-Meter) calculates the cost savings for time-of-use and net energy metering customers utilizing behind-the-meter energy storage systems.

  • QuESt Technology Selection supports in selecting the appropriate energy storage technology based on specific applications and requirements.

  • QuESt Performance evaluates the performance of energy storage systems in different climatic conditions.

  • QuESt Microgrid supports microgrid design and simulation considering energy storage as a key component.

It has been designed with key features to improve user experience and application management:

  • User-Friendly Access: Users can easily find and install applications that suit their specific needs.

  • Isolated Environments: Upon installation, each application creates an isolated environment. This ensures that applications run independently, preventing conflicts, and enhancing stability.

  • Simultaneous Operation: Multiple applications can be installed and operated simultaneously, allowing users to leverage different tools without interference.

The Workspace

The QuESt Workspace provides an integrated environment where users can create workflows by assembling multiple applications into a coherent process. It enhances the platform's usability and efficiency through several mechanisms:

  • Integration of Applications: Users can create work processes that integrate multiple apps by assembling pipelines using plugin extensions. This modular approach allows for the flexible composition of analytics workflows tailored to specific needs.

  • Workflow Management: The workspace supports the selection, assembly, connection, and post-processing of data and tools. This structured approach streamlines the analytics process, from data preparation to visualization, making it easier to manage and understand.

QuESt GPT

QuESt GPT represents a leap forward in data analytics within the platform, utilizing generative AI (specifically Large Language Models, or LLM) for data characterization and visualization:

  • Data Insights: Users can select datasets and ask questions about the data, with QuESt GPT providing insights based on the data's characteristics. This interaction model simplifies complex data analysis, making it accessible to users without deep technical expertise.

  • Utilization of LLMs: By leveraging advanced open-source LLMs such as OpenAi’sGPT4 and Meta’s Llama2, QuESt GPT can perform sophisticated data analytics tasks, such as characterizing and visualizing large datasets. This enables users to gain deeper insights from their data, supporting more informed decision-making at no costs.

What are the key innovations of QuESt 2.0?

QuESt 2.0 facilitates the advancement of energy storage technology by making powerful analytics tools accessible to all energy storage stake holders, aligning with DOE’s energy storage program goals. The platform standardizes data and program structures, integrates applications seamlessly, and utilizes generative AI for advanced analytics, simplifying user interaction and enabling deeper insights from diverse data sources. This positions QuESt 2.0 as a pioneering platform in the energy storage domain, with the potential to significantly impact both the field and the broader energy landscape. Specifically, the key innovations of QuESt 2.0 include:

  1. Integration and Usability: At its core, QuESt 2.0 revolutionizes how energy storage analytics are performed by providing a seamless, user-friendly platform that integrates multiple applications developed by independent developers. This allows for a more cohesive and efficient user experience, significantly lowering the learning curve for users at various levels of expertise.
  2. AI-powered Data Analytics: The incorporation of QuESt GPT, utilizing Large Language Models (LLM), represents a significant technological leap forward. This feature enables users to perform more sophisticated data analytics, providing deeper insights from diverse data sources. It allows users to interact with data in an intuitive way, asking questions and receiving insights, which democratizes access to complex data analysis.
  3. Complex Workflows: The QuESt Workspace and the QuESt App Hub enhance the platform's capability to support complex analytical workflows. Users can integrate multiple applications into a single process, creating efficient pipelines for data analysis. The users can run their work flows locally or schedule them to run on cloud services (e.g., AWS, Azure..)

How is QuESt 2.0 different from the other tools in Energy Storage Analytics?

QuESt 2.0 distinguishes itself in the crowded space of energy storage analytics tools by offering a unified platform rather than a collection of individual tools. While there are numerous tools available, these tend to focus on specific aspects of energy storage analysis and lack the integration and broad applicability that QuESt 2.0 provides.

Key Competitive Advantages of QuESt 2.0:

  • Unified Platform: Unlike individual tools that offer limited capabilities in specific topics, QuESt 2.0 serves as a comprehensive platform that integrates multiple applications for energy storage analytics. This integration allows users to access a wide range of tools and functionalities within a single environment, streamlining the workflow and enhancing productivity.

  • Advanced Data Analytics: With the inclusion of QuESt GPT for advanced data analytics, QuESt 2.0 utilizes generative AI to provide deeper insights from diverse data sources. This capability is not commonly found in other tools, giving QuESt 2.0 a significant technological edge.

  • Flexibility and Scalability: QuESt 2.0's modular design allows for the easy integration of new tools and applications, ensuring that the platform remains relevant and adaptable to future developments in energy storage analytics.

  • Collaborative Development: As an open-source platform, QuESt 2.0 benefits from contributions by a wide community of developers, enhancing its capabilities and ensuring continuous improvement.

How to download QuESt?

QuESt is currently available on Github at: https://github.com/sandialabs/snl-quest.

Installation Instructions for QuESt

Prerequisites

  • Python (3.9.x recommended) installed on your system
  • Git installed on your system
  • Currently QuESt is only compatible with Windows

Installing Python

  1. Python 3.9.13 is recommended.
  2. Installers can be found at: https://www.python.org/downloads/release/python-3913/
  3. Make sure to check the box "Add Python to PATH" at the bottom of the installer prompt.

Installing Git

  • Visit git-scm.com to download Git for your operating system.
  • Follow the installation instructions provided on the website.

Setting Up a Virtual Environment

  1. Open Command Prompt.
  2. Install virtualenv (if not already installed):
    python -m pip install virtualenv
  3. Create a virtual environment:
    cd <your_path>
    python -m virtualenv <env_name>
    Replace <your_path> with the path to the folder where you want to create the virtual environment.
  4. Activate the virtual environment:
    • On Windows:
      cd <your_path>
      .\<env_name>\Scripts\activate

Installing QuESt

  1. Clone the Repository:

    git clone https://github.com/sandialabs/snl-quest.git
  2. Navigate to the QuESt Directory:

    cd <path_to_quest>

    Replace <path_to_quest> with the path to the directory where QuESt was cloned.

  3. Install Dependencies:

    python - m pip install -r requirements.txt

Running QuESt

  1. Run QuESt:
    • Once the dependencies are installed, ensure you have navigated to the directory where QuESt is installed and the Virtual environment is activated. You can run QuESt using the following command:
      python main.py

Deactivating the Virtual Environment

  1. Deactivate the Virtual Environment:
    deactivate
    This will return you to your system's default Python environment.

References

Nguyen, Tu A., David A. Copp, and Raymond H. Byrne. "Stacking Revenue of Energy Storage System from Resilience, T&D Deferral and Arbitrage." 2019 IEEE Power & Energy Society General Meeting (PESGM). IEEE, 2019.

Byrne, Raymond H., Tu A. Nguyen, and Ricky J. Concepcion. "Opportunities for Energy Storage in CAISO." 2018 IEEE Power & Energy Society General Meeting (PESGM). IEEE, 2018. Available online.

Byrne, Raymond H., Tu Anh Nguyen, and Ricky James Concepcion. Opportunities for Energy Storage in CAISO. No. SAND2018-5272C. Sandia National Lab.(SNL-NM), Albuquerque, NM (United States), 2018. Available online.

Concepcion, Ricky J., Felipe Wilches-Bernal, and Raymond H. Byrne. "Revenue Opportunities for Electric Storage Resources in the Southwest Power Pool Integrated Marketplace." 2018 IEEE Power & Energy Society General Meeting (PESGM). IEEE, 2018. Available online.

Wilches-Bernal, Felipe, Ricky J. Concepcion, and Raymond H. Byrne. "Electrical Energy Storage Participation in the NYISO Electricity and Frequency Regulation Markets." 2018 IEEE Power & Energy Society General Meeting (PESGM). IEEE, 2018.

Nguyen, Tu A., and Raymond H. Byrne. "Maximizing the cost-savings for time-of-use and net-metering customers using behind-the-meter energy storage systems." 2017 North American Power Symposium (NAPS). IEEE, 2017. Available online.

Nguyen, Tu A., et al. "Maximizing revenue from electrical energy storage in MISO energy & frequency regulation markets." 2017 IEEE Power & Energy Society General Meeting. IEEE, 2017. Available online.

Byrne, Raymond H., Ricky J. Concepcion, and César A. Silva-Monroy. "Estimating potential revenue from electrical energy storage in PJM." 2016 IEEE Power and Energy Society General Meeting (PESGM). IEEE, 2016. Available online.

Byrne, Raymond H., et al. "The value proposition for energy storage at the Sterling Municipal Light Department." 2017 IEEE Power & Energy Society General Meeting. IEEE, 2017. Available online.

Byrne, Raymond H., et al. "Energy management and optimization methods for grid energy storage systems." IEEE Access 6 (2017): 13231-13260. Available online.

Byrne, Raymond H., and César A. Silva-Monroy. "Potential revenue from electrical energy storage in ERCOT: The impact of location and recent trends." 2015 IEEE Power & Energy Society General Meeting. IEEE, 2015. Available online.

snl-quest's People

Contributors

alvarofurlani avatar atribera avatar cancom84 avatar rconcep avatar wilchesf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

snl-quest's Issues

Utility Rate Structures fail to display

@rconcep:
I might have run into a bug but I am fairly confused because I was able to successfully run a similar case just one day ago, but I will flag it so in case you have run into it, you can guide me as to why ?
I am just trying to select a utility rate structure and even though I select a utility as shown in the screenshot, it fails to load the "Select a rate structure", next to it. What is even more weird is I can see it very lightly but it doesn't become active on the screen. When I look at the back-end in main.py, I see the following error:

python_Z08NkoxoCL

image

GUI flashing and lagging, leaving all the images on the window

Hi Ricky,

Thank you for your work and sharing!
I am using Spyder 4.0.1, Python 3.7 with kivy 1.11.1. I am able to run main modules. But the GUI is experiencing serious lagging and flashing (usually appears duplicate image that flashes); the mouse is also not able to click the tabs; When accidentally clicked the "correct" tabs, it leaves every images on the top of black background. This makes me not able to use the tool at all.

May I ask is there anything I can do to fix this?
Thanks!

Lucia

Linux support

Is Linux supported? Has it been tested? It works well on OS X, it seems like Linux should be compatible. Just found this, great tool BTW!

Valuation app error while using SPP data

This error comes up while trying to run arbitrage and regulation with the valuation tool with SPP data (I downloaded January 2021 data) in the console:

At least one of the array-like parameter objects is not the expected length. (It should match the length of the price_electricity object.)

Arbitrage alone seems to work fine.

Permanently preserve generated reports from wizards and their figures

Currently, reports generated by, e.g., QuESt Valuation and QuESt BTM are generated "in-place" and subsequent reports of the same type overwrite older renditions. Additionally, figures generated for each report have no indication what report they belong to. This can cause confusion when revisiting the HTML copy of older reports. For example, if there are QuESt Valuation reports for both ISO-NE and MISO, opening each report will use the same figures (since the file name for the image is the same for all reports) but the figures will only truly correspond for the most recently generated report.

To address this, we will implement the following:

  • Reports will no longer be generated "in-place" and will instead be timestamped in the filename.
  • Likewise, figures for the report will be identically timestamped.

This will ensure the following:

  • Opening the HTML file of the report will always use the correct images.
  • Old reports are preserved indefinitely.

The drawback is the indefinite accumulation of reports and figures until the files are manually cleaned out. We encourage saving to PDF when permanently storing the document or sharing them but hopefully this change will eliminate confusion that has become apparent recently.

Kivy type error when running Performance Simulation

This error is triggered when pressing the 'Go' button in the performance tool.

Exception in thread Thread-7:
Traceback (most recent call last):
File "C:\Users\wolis\AppData\Local\Continuum\anaconda3\lib\threading.py", line 917, in _bootstrap_inner
self.run()
File "C:\Users\wolis\AppData\Local\Continuum\anaconda3\lib\threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\wolis\Documents\snl-quest\es_gui\apps\performance\performance_sim.py", line 91, in run_batch
run_popup = PerformanceRunPopup()
File "C:\Users\wolis\Documents\snl-quest\es_gui\apps\performance\performance_sim.py", line 546, in init
super(PerformanceRunPopup, self).init(**kwargs)
File "C:\Users\wolis\AppData\Local\Continuum\anaconda3\lib\site-packages\kivy\uix\modalview.py", line 195, in init
super(ModalView, self).init(**kwargs)
File "C:\Users\wolis\AppData\Local\Continuum\anaconda3\lib\site-packages\kivy\uix\anchorlayout.py", line 68, in init
super(AnchorLayout, self).init(**kwargs)
File "C:\Users\wolis\AppData\Local\Continuum\anaconda3\lib\site-packages\kivy\uix\layout.py", line 76, in init
super(Layout, self).init(**kwargs)
File "C:\Users\wolis\AppData\Local\Continuum\anaconda3\lib\site-packages\kivy\uix\widget.py", line 361, in init
self.canvas = Canvas(opacity=self.opacity)
File "kivy\graphics\instructions.pyx", line 608, in kivy.graphics.instructions.Canvas.init
File "kivy\graphics\instructions.pyx", line 154, in kivy.graphics.instructions.InstructionGroup.init
File "kivy\graphics\instructions.pyx", line 60, in kivy.graphics.instructions.Instruction.init
TypeError: Cannot create graphics instruction outside the main Kivy thread

Issue downloading rate structure

Exception in thread Thread-2:
Traceback (most recent call last):
File "threading.py", line 917, in _bootstrap_inner
File "threading.py", line 865, in run
File "es_gui\apps\data_manager\rate_structure.py", line 296, in _execute_search
self._download_utility_ref_table()
File "es_gui\apps\data_manager\rate_structure.py", line 173, in _download_utility_ref_table
data_iou = pd.read_csv(io.StringIO(data_down))
File "site-packages\pandas\io\parsers.py", line 702, in parser_f
File "site-packages\pandas\io\parsers.py", line 435, in _read
File "site-packages\pandas\io\parsers.py", line 1139, in read
File "site-packages\pandas\io\parsers.py", line 1995, in read
File "pandas_libs\parsers.pyx", line 899, in pandas._libs.parsers.TextReader.read
File "pandas_libs\parsers.pyx", line 914, in pandas._libs.parsers.TextReader._read_low_memory
File "pandas_libs\parsers.pyx", line 968, in pandas._libs.parsers.TextReader._read_rows
File "pandas_libs\parsers.pyx", line 955, in pandas._libs.parsers.TextReader._tokenize_rows
File "pandas_libs\parsers.pyx", line 2172, in pandas._libs.parsers.raise_parser_error
pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 7, saw 10

Crashing on 'TerminationCondition' object has no attribute 'key'

Using GLPK solver, BTM and Valuation with different inputs (ERCOT, CAISO)
[INFO ] [Logger ] Record log in C:\Users\sean.kivy\logs\kivy_21-03-11_9.txt
[INFO ] [deps ] Successfully imported "kivy_deps.sdl2" 0.3.1
[INFO ] [deps ] Successfully imported "kivy_deps.glew" 0.3.0
[INFO ] [deps ] Successfully imported "kivy_deps.angle" 0.3.0
[INFO ] [Kivy ] v2.0.0
[INFO ] [Kivy ] Installed at "C:\Users\sean\anaconda3\lib\site-packages\kivy_init_.py"
[INFO ] [Python ] v3.8.3 (default, Jul 2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)]
[INFO ] [Python ] Interpreter at "C:\Users\sean\anaconda3\python.exe"
[INFO ] [Factory ] 186 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
[INFO ] [Text ] Provider: sdl2
[INFO ] [Window ] Provider: sdl2
[INFO ] [GL ] Using the "OpenGL" graphics system
[INFO ] [GL ] GLEW initialization succeeded
[INFO ] [GL ] Backend used
[INFO ] [GL ] OpenGL version <b'4.6.0 - Build 26.20.100.7639'>
[INFO ] [GL ] OpenGL vendor <b'Intel'>
[INFO ] [GL ] OpenGL renderer <b'Intel(R) HD Graphics 620'>
[INFO ] [GL ] OpenGL parsed version: 4, 6
[INFO ] [GL ] Shading version <b'4.60 - Build 26.20.100.7639'>
[INFO ] [GL ] Texture max size <16384>
[INFO ] [GL ] Texture max units <32>
[INFO ] [Window ] auto add sdl2 input provider
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
[INFO ] [GL ] NPOT texture support is available
[INFO ] [GL ] Unpack subimage support is available
[INFO ] [DMS ] Successfully loaded valuation_dms.p.
[INFO ] [DMS ] Successfully loaded btm_dms.p.
[INFO ] [Base ] Start application main loop
[INFO ] [DataManager ] Data bank scan complete.
[INFO ] [ValuationBatch] ISO changed to CAISO.
[INFO ] [ValuationBatch] Pricing node changed to EMBRCDR_2_N104.
[INFO ] [ValuationBatch] Pricing node changed to DGAP_TEPC-APND.
[INFO ] [ValuationBatch] ISO changed to ERCOT.
[INFO ] [ValuationBatch] Pricing node selection reset.
[INFO ] [ValuationBatch] Pricing node changed to HB_HOUSTON.
[INFO ] [ValuationBatch] Revenue streams changed to ercot_arbreg.
[INFO ] [DMS ] Loading ERCOT DA-SPP
[INFO ] [DMS ] Data not yet in DMS, loading...
[INFO ] [DMS ] Saving valuation_dms.p.
[INFO ] [DMS ] Loading ERCOT DA-CCP
[INFO ] [DMS ] Data not yet in DMS, loading...
[INFO ] [DMS ] Saving valuation_dms.p.
[INFO ] [DMS ] Saving valuation_dms.p.
[INFO ] [Optimizer ] Setting fraction_reg_down to 0.25
[INFO ] [Optimizer ] Setting fraction_reg_up to 0.25
[INFO ] [Optimizer ] Setting Reserve_reg_max to 10.0
[INFO ] [Optimizer ] Setting Reserve_reg_min to 25.0
[INFO ] [Optimizer ] Setting State_of_charge_max to 90.0
[INFO ] [Optimizer ] Setting State_of_charge_min to 10.0
[INFO ] [Optimizer ] Setting State_of_charge_init to 65.0
[INFO ] [Optimizer ] Setting Power_rating to 10.0
[INFO ] [Optimizer ] Setting Energy_capacity to 5.5
[INFO ] [Optimizer ] Setting Round_trip_efficiency to 87.0
[INFO ] [Optimizer ] Setting Self_discharge_efficiency to 95.0
[WARNING] [ValuationOptimizer] Self_discharge_efficiency provided is greater than 1.0, interpreting as percentage...
[WARNING] [ValuationOptimizer] Round_trip_efficiency provided is greater than 1.0, interpreting as percentage...
[WARNING] [ValuationOptimizer] Reserve_reg_min provided is greater than 1.0, interpreting as percentage...
[WARNING] [ValuationOptimizer] Reserve_reg_max provided is greater than 1.0, interpreting as percentage...
[WARNING] [ValuationOptimizer] State_of_charge_min provided is greater than 1.0, interpreting as percentage...
[WARNING] [ValuationOptimizer] State_of_charge_max provided is greater than 1.0, interpreting as percentage...
[WARNING] [ValuationOptimizer] State_of_charge_init provided is greater than 1.0, interpreting as percentage...
GLPSOL: GLPK LP/MIP Solver, v4.65
Parameter(s) specified in the command line:
--write C:\Users\sean\AppData\Local\Temp\tmpxfjvgwry.glpk.raw --wglp C:\Users\sean\AppData\Local\Temp\tmp5_9wd9ty.glpk.glp
--cpxlp C:\Users\sean\AppData\Local\Temp\tmphcq53hg1.pyomo.lp
Reading problem data from 'C:\Users\sean\AppData\Local\Temp\tmphcq53hg1.pyomo.lp'...
2979 rows, 3722 columns, 10419 non-zeros
26061 lines were read
Writing problem data to 'C:\Users\sean\AppData\Local\Temp\tmp5_9wd9ty.glpk.glp'...
22334 lines were written
GLPK Simplex Optimizer, v4.65
2979 rows, 3722 columns, 10419 non-zeros
Preprocessing...
2974 rows, 3719 columns, 10410 non-zeros
Scaling...
A: min|aij| = 8.700e-02 max|aij| = 1.000e+00 ratio = 1.149e+01
GM: min|aij| = 6.516e-01 max|aij| = 1.535e+00 ratio = 2.355e+00
EQ: min|aij| = 4.304e-01 max|aij| = 1.000e+00 ratio = 2.323e+00
Constructing initial basis...
Size of triangular part is 2974
0: obj = 2.186338506e+02 inf = 1.083e+03 (746)
Perturbing LP to avoid stalling [201]...
1492: obj = -4.383968150e+02 inf = 0.000e+00 (0) 13
Removing LP perturbation [3505]...

  • 3505: obj = 7.210148155e+04 inf = 0.000e+00 (0) 18
    OPTIMAL LP SOLUTION FOUND
    Time used: 0.5 secs
    Memory used: 5.0 Mb (5247889 bytes)
    Writing basic solution to 'C:\Users\sean\AppData\Local\Temp\tmpxfjvgwry.glpk.raw'...
    6710 lines were written
    [INFO ] [Base ] Leaving application in progress...
    Traceback (most recent call last):
    File "main.py", line 503, in
    QuEStApp().run()
    File "C:\Users\sean\anaconda3\lib\site-packages\kivy\app.py", line 950, in run
    runTouchApp()
    File "C:\Users\sean\anaconda3\lib\site-packages\kivy\base.py", line 582, in runTouchApp
    EventLoop.mainloop()
    File "C:\Users\sean\anaconda3\lib\site-packages\kivy\base.py", line 347, in mainloop
    self.idle()
    File "C:\Users\sean\anaconda3\lib\site-packages\kivy\base.py", line 391, in idle
    self.dispatch_input()
    File "C:\Users\sean\anaconda3\lib\site-packages\kivy\base.py", line 342, in dispatch_input
    post_dispatch_input(*pop(0))
    File "C:\Users\sean\anaconda3\lib\site-packages\kivy\base.py", line 308, in post_dispatch_input
    wid.dispatch('on_touch_up', me)
    File "kivy_event.pyx", line 709, in kivy._event.EventDispatcher.dispatch
    File "C:\Users\sean\anaconda3\lib\site-packages\kivy\uix\behaviors\button.py", line 179, in on_touch_up
    self.dispatch('on_release')
    File "kivy_event.pyx", line 705, in kivy._event.EventDispatcher.dispatch
    File "kivy_event.pyx", line 1248, in kivy._event.EventObservers.dispatch
    File "kivy_event.pyx", line 1132, in kivy._event.EventObservers._dispatch
    File "C:\Users\sean\anaconda3\lib\site-packages\kivy\lang\builder.py", line 57, in custom_callback
    exec(kvlang.co_value, idmap)
    File "C:\Users\sean\Desktop\NexESS\QuEST\snl-quest\es_gui\apps\valuation\batchrunscreen.kv", line 38, in
    on_release: root.run_batch()
    File "C:\Users\sean\Desktop\NexESS\QuEST\snl-quest\es_gui\apps\valuation\batchrunscreen.py", line 77, in run_batch
    solved_ops, handler_status = handler.process_requests(requests)
    File "C:\Users\sean\Desktop\NexESS\QuEST\snl-quest\es_gui\apps\valuation\op_handler.py", line 121, in process_requests
    solved_op = self._solve_model(op)
    File "C:\Users\sean\Desktop\NexESS\QuEST\snl-quest\es_gui\apps\valuation\op_handler.py", line 148, in _solve_model
    op.run()
    File "C:\Users\sean\Desktop\NexESS\QuEST\snl-quest\es_gui\tools\optimizer.py", line 97, in run
    assert (results.solver.termination_condition.key == 'optimal')
    AttributeError: 'TerminationCondition' object has no attribute 'key'

Font size in plots for Tech Selection

Fonts in the plots of the technology selection tool are too large, making them unreadable.

It seems that this problem occurs only if the user has already used the "Plot/Redraw" functionality of "QuESt Valuation" in the current Quest run.

EnergyPlus not found issue with QuESt performance (v1.6-beta)

I am getting the following error while trying to run QuESt performance using the "Performance Simulation" button:

EnergyPlus not found. Please visit help tab to configure EnergyPlus on your machine.

Note: I have downloaded and moved the software to the QuESt directory on my computer and have renamed it to "energyplus" as instructed in the help tab.

How to access time-series resutls?

@rconcep & @wilchesf :
When an analysis has been run and I want to access the time-series results of my simulation run in Quest, how can I do that ? When I go to Results Viewer, it does not allow me to access more than 0 to 744, when I try to export as .csv, it only is exporting hours 0 to 744. I am running a BTM simulation with 1 year of data and would like to access the entire years worth of data. I couldn't find a relevant section for this in the documentation either. Can you kindly help ? If there is a way to extract this data by writing a small script, happy to do that as well.

Crash When Building and Solving Models

In this particular crash, using the QuESt Valuation Wizard, ERCOT, HB_HOUSTON, Arbitrage and regulation, 2018, Li-ion Battery. However it has shown up on several different market areas and on a couple of different computers. Also tried the 1.1 release as well as the master

Console output follows:
[INFO ] [Logger ] Record log in C:\Users\dharwell.kivy\logs\kivy_19-03-06_0.txt
[INFO ] [Kivy ] v1.10.1
[INFO ] [Python ] v3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)]
[INFO ] [Factory ] 194 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored)
[INFO ] [Text ] Provider: sdl2
[INFO ] [Window ] Provider: sdl2
[INFO ] [GL ] Using the "OpenGL" graphics system
[INFO ] [GL ] GLEW initialization succeeded
[INFO ] [GL ] Backend used
[INFO ] [GL ] OpenGL version <b'4.5.0 - Build 22.20.16.4771'>
[INFO ] [GL ] OpenGL vendor <b'Intel'>
[INFO ] [GL ] OpenGL renderer <b'Intel(R) HD Graphics 520'>
[INFO ] [GL ] OpenGL parsed version: 4, 5
[INFO ] [GL ] Shading version <b'4.50 - Build 22.20.16.4771'>
[INFO ] [GL ] Texture max size <16384>
[INFO ] [GL ] Texture max units <32>
[INFO ] [Window ] auto add sdl2 input provider
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
[INFO ] [GL ] NPOT texture support is available
[INFO ] [GL ] Unpack subimage support is available
[INFO ] [DMS ] Successfully loaded valuation_dms.p.
[INFO ] [Base ] Start application main loop
[INFO ] [DataManager ] Data bank scan complete.
[INFO ] [Loader ] using a thread pool of 2 workers
[INFO ] [ValuationWizard] ISO changed to ERCOT.
[INFO ] [ValuationWizard] Pricing node changed to HB_HOUSTON (ID: HB_HOUSTON).
[INFO ] [ValuationWizard] Market formulation changed to Arbitrage and regulation.
[INFO ] [ValuationWizard] Changed historical data set to 2018.
[INFO ] [ValuationWizard] Energy storage device changed to Li-ion Battery.
[INFO ] [DMS ] Loading ERCOT DA-SPP
[INFO ] [DMS ] Data located in DMS, retrieving...
[INFO ] [DMS ] Loading ERCOT DA-CCP
[INFO ] [DMS ] Data located in DMS, loading...
[INFO ] [Optimizer ] Setting Power_rating to 36.0
[INFO ] [Optimizer ] Setting Energy_capacity to 24.0
[INFO ] [Optimizer ] Setting Round_trip_efficiency to 90.0
[INFO ] [Optimizer ] Setting Self_discharge_efficiency to 100.0
[INFO ] [Base ] Leaving application in progress...
Traceback (most recent call last):
File "main.py", line 526, in
QuEStApp().run()
File "C:\Python37\lib\site-packages\kivy\app.py", line 826, in run
runTouchApp()
File "C:\Python37\lib\site-packages\kivy\base.py", line 502, in runTouchApp
EventLoop.window.mainloop()
File "C:\Python37\lib\site-packages\kivy\core\window\window_sdl2.py", line 727, in mainloop
self._mainloop()
File "C:\Python37\lib\site-packages\kivy\core\window\window_sdl2.py", line 460, in _mainloop
EventLoop.idle()
File "C:\Python37\lib\site-packages\kivy\base.py", line 337, in idle
Clock.tick()
File "C:\Python37\lib\site-packages\kivy\clock.py", line 581, in tick
self._process_events()
File "kivy_clock.pyx", line 384, in kivy._clock.CyClockBase._process_events
File "kivy_clock.pyx", line 414, in kivy._clock.CyClockBase._process_events
File "kivy_clock.pyx", line 412, in kivy._clock.CyClockBase._process_events
File "kivy_clock.pyx", line 167, in kivy._clock.ClockEvent.tick
File "C:\Python37\lib\site-packages\kivy\animation.py", line 352, in _update
self.stop(widget)
File "C:\Python37\lib\site-packages\kivy\animation.py", line 217, in stop
self.dispatch('on_complete', widget)
File "kivy_event.pyx", line 703, in kivy._event.EventDispatcher.dispatch
File "kivy_event.pyx", line 1214, in kivy._event.EventObservers.dispatch
File "kivy_event.pyx", line 1138, in kivy._event.EventObservers._dispatch
File "C:\Python37\lib\site-packages\kivy\uix\screenmanager.py", line 419, in _on_complete
self.screen_in.dispatch('on_enter')
File "kivy_event.pyx", line 707, in kivy._event.EventDispatcher.dispatch
File "C:\Temp\snl-quest-1.1\es_gui\apps\valuation\wizard.py", line 935, in on_enter
self.execute_run()
File "C:\Temp\snl-quest-1.1\es_gui\apps\valuation\wizard.py", line 967, in execute_run
self.solved_ops, handler_status = valop_handler.process_requests(handler_requests)
File "C:\Temp\snl-quest-1.1\es_gui\apps\valuation\op_handler.py", line 121, in process_requests
solved_op = self._solve_model(op)
File "C:\Temp\snl-quest-1.1\es_gui\apps\valuation\op_handler.py", line 138, in _solve_model
op.run()
File "C:\Temp\snl-quest-1.1\es_gui\tools\optimizer.py", line 79, in run
self.populate_model()
File "C:\Temp\snl-quest-1.1\es_gui\tools\valuation\valuation_optimizer.py", line 531, in populate_model
self.model.objective_expr = NumericConstant(0.0)
NameError: name 'NumericConstant' is not defined

TypeError: Cannot create graphics instruction outside the main Kivy thread

I am experiencing an issue when using QuESt BTM. The error below occurs when I go to select a rate structure.

Exception in thread Thread-7:
Traceback (most recent call last):
File "threading.py", line 973, in _bootstrap_inner
File "threading.py", line 910, in run
File "es_gui\apps\btm\cost_savings.py", line 115, in _generate_preview
self.generate_schedule_charts()
File "es_gui\apps\btm\cost_savings.py", line 152, in generate_schedule_charts
self.energy_weekday_chart.draw_chart(np.array(weekday_schedule_data), palette, labels, legend_labels=legend_labels)
File "es_gui\proving_grounds\charts.py", line 1211, in draw_chart
self.generate_tiles(schedule_data, category_colors, labels)
File "es_gui\proving_grounds\charts.py", line 1180, in generate_tiles
row_label = Label(pos=(0.80x0 - self.width/2, self.max_height/2 - (iy+0.5)(self.tile_height + self.tile_spacing)),
File "kivy\uix\label.py", line 317, in init
File "kivy\uix\widget.py", line 361, in init
File "kivy\graphics\instructions.pyx", line 608, in kivy.graphics.instructions.Canvas.init
File "kivy\graphics\instructions.pyx", line 154, in kivy.graphics.instructions.InstructionGroup.init
File "kivy\graphics\instructions.pyx", line 60, in kivy.graphics.instructions.Instruction.init
TypeError: Cannot create graphics instruction outside the main Kivy thread

matplotlib import error

[CRITICAL] [Window ] Unable to find any valuable Window provider. Please enable debug logging (e.g. add -d if running from the command line, or change the log level in the config) and re-run your app to identify potential causes
sdl2 - ImportError: DLL load failed while importing window_sdl2: The specified module could not be found.
File "C:\Users\tunguy\Anaconda3\lib\site-packages\kivy-2.0.0-py3.8-win-amd64.egg\kivy\core_init
.py", line 58, in core_select_lib
mod = import(name='{2}.{0}.{1}'.format(
File "C:\Users\tunguy\Anaconda3\lib\site-packages\kivy-2.0.0-py3.8-win-amd64.egg\kivy\core\window\window_sdl2.py", line 27, in
from kivy.core.window._window_sdl2 import _WindowSDL2Storage

Traceback (most recent call last):
File "main.py", line 55, in
from es_gui.apps.data_manager.data_manager import DataManager
File "c:\work\quest\snl-quest\es_gui\apps\data_manager\data_manager.py", line 17, in
from es_gui.resources.widgets.common import LoadingModalView
File "c:\work\quest\snl-quest\es_gui\resources\widgets\common.py", line 11, in
mpl.use('module://kivy.garden.matplotlib.backend_kivy')
File "C:\Users\tunguy\Anaconda3\lib\site-packages\matplotlib_init_.py", line 1171, in use
plt.switch_backend(name)
File "C:\Users\tunguy\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 276, in switch_backend
class backend_mod(matplotlib.backend_bases.Backend):
File "C:\Users\tunguy\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 277, in backend_mod
locals().update(vars(importlib.import_module(backend_name)))
File "C:\Users\tunguy\Anaconda3\lib\importlib_init
.py", line 127, in import_module
return _bootstrap.gcd_import(name[level:], package, level)
File "C:\Users\tunguy\Anaconda3\lib\site-packages\kivy-2.0.0-py3.8-win-amd64.egg\kivy\garden_init
.py", line 180, in load_module
return self.load_module(fullname, moddir)
File "C:\Users\tunguy\Anaconda3\lib\site-packages\kivy-2.0.0-py3.8-win-amd64.egg\kivy\garden_init
.py", line 183, in _load_module
mod = imp.load_module(fullname, None, moddir,
File "C:\Users\tunguy\Anaconda3\lib\imp.py", line 244, in load_module
return load_package(name, filename)
File "C:\Users\tunguy\Anaconda3\lib\imp.py", line 216, in load_package
return load(spec)
File "C:\work\quest\snl-quest\libs\garden\garden.matplotlib_init
.py", line 1, in
from kivy.garden.matplotlib.backend_kivy import FigureCanvasKivy,
File "C:\work\quest\snl-quest\libs\garden\garden.matplotlib\backend_kivy.py", line 256, in
from matplotlib import _png
ImportError: cannot import name 'png' from 'matplotlib' (C:\Users\tunguy\Anaconda3\lib\site-packages\matplotlib_init.py)

Issue connecting to the profile database

I have installed QuESt and run it satisfactorily but I fail when trying to download (for example) an utility rate structure. The next message appears: "There was an issue connecting to and downloading the lists of utilities. Check your connection settings and try again". This is the screenshot of what´s happening. I have my own API key.

Thanks

Captura

Python version 3.9.13

Hi all, I keep getting this "Error: Package 'quest' requires a different Python: 3.9.13 not '>=36'" when trying to install. Not sure what this means as 3.9.13 is greater than 3.6. Your help is needed.

QuESt 2.0 doesn't run on MacOS

I get the following error when I try to run main.py:

Traceback (most recent call last):
  File "/Users/abera/Desktop/snl-quest/main.py", line 210, in <module>
    ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)
AttributeError: module 'ctypes' has no attribute 'windll'

This error seems to originate from the fact that I am trying to run a script on MacOS which is specifically written for Windows.

Issue downloading ISO/RTO market operations data from SPP

[ERROR ] [SPPdownloader] 20140101: Failed to establish a connection to the host server.
[ERROR ] [SPPdownloader] 20140101: Failed to establish a connection to the host server.
[ERROR ] [SPPdownloader] 20140101: Failed to establish a connection to the host server.
[ERROR ] [SPPdownloader] 20140101: Failed to establish a connection to the host server.
[ERROR ] [SPPdownloader] 20140101: Failed to establish a connection to the host server.
[ERROR ] [SPPdownloader] 20140101: Failed to establish a connection to the host server.
[WARNING] [SPPdownloader] 20140101 MCP: Hit download retry limit.
Hit wx limit

PJM - Regulation market assumptions

Hi, I was just wondering if there was anywhere that;
a) Outlined what the default PJM market assumptions were for Regulation D service (i.e. in terms of performance score, average benefits factor. I'm struggling to align the RMPCP revenue portion when running PJM analysis with a few typical battery assumptions that I would have expected.

b) If there was anyway to update or modify some of the assumptions to test different performing assets?

Thanks

Clicking "Go" when using the batch runs mode in QuESt Valuation before viewing the parameters screen results in a fatal crash

Summary of issue

Clicking "Go" when using the batch runs mode in QuESt Valuation before viewing the parameters screen results in a fatal crash. This is because data validation that is executed on pressing the "go" button checks for parameter values. However, the parameter widgets that it checks are not created until on_enter of the parameter screen. Hence, an AttributeError or similar is thrown, resulting in a fatal crash.

Steps to replicate

  1. Open the batch runs mode in QuESt Valuation.
  2. Provide any market area, value stream, node, historical data options.
  3. Click the "go" button to execute without clicking the toggle to view the parameters screen.

The intended behavior here is that the default values should be used.

Action items

  • Currently on the development branch for v1.2.e, a warning popup catches this situation and indicates that parameters should be set. However, this does not match the intent of the design.

  • Either disable the "go" button until the parameters screen is viewed or redesign the GUI such that the process is more sequential like the wizard (e.g., hide access to an execute/"go" button until all steps are completed).

Can Quest Evaluate Other Battery Services?

@rconcep:
Ricky, Thanks a lot for compiling a great tool. I have been reading the available documentation and the project description in the Github page and it looks really promising and helpful.
Assuming this is the appropriate forum for requesting more information on the tool, I would like to request some more information:

  1. From the screenshots provided, it looks like Quest Valuation supports the evaluation of a storage system, either as a frequency regulation asset or an arbitrage asset or both. Does Quest Valuation or Quest BTM have the capabilities to simulate other services like asset upgrade deferral, resource adequacy, peak shaving etc. ?
  2. If the answer is no to (1), can you please provide guidance on if there are any plans to offer these features in your future road map ?
  3. Is the financial performance of the energy storage asset available at hourly time steps ?
  4. Is it possible to compile the anaconda environment via an yml file ? When I look through the instructions, it looks like the preferred path even after cloning the project is to download the glpk binaries and IPOPT binaries from other sources, so am curious.
    Looking forward to learning more about Quest.

Best
Uday

Dispatchable BTM generation

I'd like to model a system operating simultaneous CHP, PV, and electrical storage behind the meter. CHP is like a battery source in that it's dispatchable, but the economics are more complicated since the real time value of the CHP asset depend on the thermal demand of the building, and the electricity rate. I have two questions:

  1. Is CHP support planned for quest?
  2. If the answer to question 1 is no, how flexible is the code, and could an experienced programmer integrate CHP modeling into the optimization routine with reasonable effort?

Thanks!

PJM data download issue in Data Manager

I am unable to enter any input into the box designated for the Node ID. I am getting the following error when I try to download data without the Node ID but with one of the four boxes checked (PJM average, Aggregate, Zone, Hub):

201001, n/a, mileage: No data retrieved in this API call.
At least one download thread failed. See the log for details. Please retry downloading data for the months that returned errors.

Crash when starting the valuation wizard

(base) ...\snl-quest-BTM-UI>python main.py
[INFO ] [Logger ] Record log in C:\Users\rdtrevi.kivy\logs\kivy_19-05-17_0.txt
[INFO ] [Kivy ] v1.10.1
[INFO ] [Python ] v3.7.1 (default, Dec 10 2018, 22:54:23) [MSC v.1915 64 bit (AMD64)]
[INFO ] [Factory ] 194 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO ] [Text ] Provider: sdl2
[INFO ] [Window ] Provider: sdl2
[INFO ] [GL ] Using the "OpenGL" graphics system
[INFO ] [GL ] GLEW initialization succeeded
[INFO ] [GL ] Backend used
[INFO ] [GL ] OpenGL version <b'4.5.0 - Build 25.20.100.6472'>
[INFO ] [GL ] OpenGL vendor <b'Intel'>
[INFO ] [GL ] OpenGL renderer <b'Intel(R) UHD Graphics 620'>
[INFO ] [GL ] OpenGL parsed version: 4, 5
[INFO ] [GL ] Shading version <b'4.50 - Build 25.20.100.6472'>
[INFO ] [GL ] Texture max size <16384>
[INFO ] [GL ] Texture max units <32>
[INFO ] [Window ] auto add sdl2 input provider
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
[INFO ] [GL ] NPOT texture support is available
[INFO ] [GL ] Unpack subimage support is available
[INFO ] [Base ] Start application main loop
[INFO ] [Loader ] using a thread pool of 2 workers
[INFO ] [Base ] Leaving application in progress...
Traceback (most recent call last):
File "main.py", line 556, in
QuEStApp().run()
File "...\AppData\Local\Continuum\anaconda3\lib\site-packages\kivy\app.py", line 826, in run
runTouchApp()
File "...\AppData\Local\Continuum\anaconda3\lib\site-packages\kivy\base.py", line 502, in runTouchApp
EventLoop.window.mainloop()
File "...\AppData\Local\Continuum\anaconda3\lib\site-packages\kivy\core\window\window_sdl2.py", line 727, in mainloop
self._mainloop()
File "...\AppData\Local\Continuum\anaconda3\lib\site-packages\kivy\core\window\window_sdl2.py", line 460, in _mainloop
EventLoop.idle()
File "...\AppData\Local\Continuum\anaconda3\lib\site-packages\kivy\base.py", line 340, in idle
self.dispatch_input()
File "...\AppData\Local\Continuum\anaconda3\lib\site-packages\kivy\base.py", line 325, in dispatch_input
post_dispatch_input(*pop(0))
File "...\AppData\Local\Continuum\anaconda3\lib\site-packages\kivy\base.py", line 291, in post_dispatch_input
wid.dispatch('on_touch_up', me)
File "kivy_event.pyx", line 707, in kivy._event.EventDispatcher.dispatch
File "...\AppData\Local\Continuum\anaconda3\lib\site-packages\kivy\uix\behaviors\button.py", line 179, in on_touch_up
self.dispatch('on_release')
File "kivy_event.pyx", line 703, in kivy._event.EventDispatcher.dispatch
File "kivy_event.pyx", line 1214, in kivy._event.EventObservers.dispatch
File "kivy_event.pyx", line 1098, in kivy._event.EventObservers._dispatch
File "...\AppData\Local\Continuum\anaconda3\lib\site-packages\kivy\lang\builder.py", line 64, in custom_callback
exec(kvlang.co_value, idmap)
File "...\snl-quest-BTM-UI\es_gui\apps\valuation\wizard.kv", line 80, in
root._next_screen()
File "...\snl-quest-BTM-UI\es_gui\apps\valuation\wizard.py", line 66, in _next_screen
self.manager.current = 'iso_select'
File "kivy\properties.pyx", line 483, in kivy.properties.Property.set
File "kivy\properties.pyx", line 524, in kivy.properties.Property.set
File "kivy\properties.pyx", line 579, in kivy.properties.Property.dispatch
File "kivy_event.pyx", line 1214, in kivy._event.EventObservers.dispatch
File "kivy_event.pyx", line 1120, in kivy._event.EventObservers._dispatch
File "C:\Users\rdtrevi\AppData\Local\Continuum\anaconda3\lib\site-packages\kivy\uix\screenmanager.py", line 1050, in on_current
self.transition.start(self)
File "C:\Users\rdtrevi\AppData\Local\Continuum\anaconda3\lib\site-packages\kivy\uix\screenmanager.py", line 377, in start
self.screen_in.dispatch('on_pre_enter')
File "kivy_event.pyx", line 707, in kivy._event.EventDispatcher.dispatch
File "C:\Users\rdtrevi\Documents\QuESt\snl-quest-BTM-UI\es_gui\apps\valuation\wizard.py", line 121, in on_pre_enter
ISO_OPTIONS = App.get_running_app().data_manager.get_markets()
File "C:\Users\rdtrevi\Documents\QuESt\snl-quest-BTM-UI\es_gui\apps\data_manager\data_manager.py", line 195, in get_markets
return self.data_bank['valuation'].keys()
KeyError: 'valuation'

ERCOT Download Not Working

Hi SNL Quest Team,

When attempting to download ERCOT data, I simply receive the message "Failed to establish a connection to the host server" for all years. Seems like the API endpoint or login credentials have changed.

Thanks,
Lydia

Can't start application

python main.py

/home/user/Android/venv3/lib/python3.6/site-packages/kivy/data/images/defaulttheme.atlas
 Traceback (most recent call last):
   File "main.py", line 558, in <module>
     QuEStApp().run()
   File "/home/user/Android/venv3/lib/python3.6/site-packages/kivy/app.py", line 800, in run
     root = self.build()
   File "main.py", line 504, in build
     sm = QuEStScreenManager(transition=RiseInTransition(duration=0.2, clearcolor=[1, 1, 1, 1]))
   File "main.py", line 208, in __init__
     self.about_screen = AboutScreen()
   File "main.py", line 184, in __init__
     third_party_code_licenses])
 AttributeError: 'AboutScreen' object has no attribute 'about_label'

About Running QuESt

Dear sir,
Please help me! When I run QuESt,the following situation has occurred.
(base) C:\ProgramData\Anaconda3\Lib\site-packages\snl-quest-master>python main.py
[INFO ] [Logger ] Record log in C:\Users\Kevin_xo.kivy\logs\kivy_19-06-02_0.txt
[INFO ] [Kivy ] v1.10.1
[INFO ] [Python ] v3.7.1 (default, Dec 10 2018, 22:54:23) [MSC v.1915 64 bit (AMD64)]
[INFO ] [Factory ] 194 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_pil, img_gif (img_sdl2, img_ffpyplayer ignored)
[INFO ] [Text ] Provider: pil(['text_sdl2'] ignored)
[CRITICAL] [Window ] Unable to find any valuable Window provider.
sdl2 - ImportError: DLL load failed: 找不到指定的模块。
File "C:\ProgramData\Anaconda3\lib\site-packages\kivy\core_init_.py", line 59, in core_select_lib
fromlist=[modulename], level=0)
File "C:\ProgramData\Anaconda3\lib\site-packages\kivy\core\window\window_sdl2.py", line 26, in
from kivy.core.window._window_sdl2 import _WindowSDL2Storage

[CRITICAL] [App ] Unable to get a Window, abort.
[ERROR ]
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site-packages\kivy\lang\parser.py", line 412, in execute_directives
value = eval(value, global_idmap)
File "", line 1, in
File "C:\ProgramData\Anaconda3\lib\site-packages\kivy\metrics.py", line 142, in sp
return dpi2px(value, 'sp')
File "kivy\properties.pyx", line 291, in kivy.properties.dpi2px
File "kivy\properties.pyx", line 296, in kivy.properties.dpi2px
File "C:\ProgramData\Anaconda3\lib\site-packages\kivy\utils.py", line 496, in get
retval = self.func(inst)
File "C:\ProgramData\Anaconda3\lib\site-packages\kivy\metrics.py", line 174, in dpi
EventLoop.ensure_window()
File "C:\ProgramData\Anaconda3\lib\site-packages\kivy\base.py", line 125, in ensure_window
sys.exit(1)
SystemExit: 1
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site-packages\kivy\lang\parser.py", line 412, in execute_directives
value = eval(value, global_idmap)
File "", line 1, in
File "C:\ProgramData\Anaconda3\lib\site-packages\kivy\metrics.py", line 142, in sp
return dpi2px(value, 'sp')
File "kivy\properties.pyx", line 291, in kivy.properties.dpi2px
File "kivy\properties.pyx", line 296, in kivy.properties.dpi2px
File "C:\ProgramData\Anaconda3\lib\site-packages\kivy\utils.py", line 496, in get
retval = self.func(inst)
File "C:\ProgramData\Anaconda3\lib\site-packages\kivy\metrics.py", line 174, in dpi
EventLoop.ensure_window()
File "C:\ProgramData\Anaconda3\lib\site-packages\kivy\base.py", line 125, in ensure_window
sys.exit(1)
SystemExit: 1

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "main.py", line 61, in
Builder.load_file(os.path.join(dirname, 'es_gui', 'resources', 'widgets', 'common.kv'))
File "C:\ProgramData\Anaconda3\lib\site-packages\kivy\lang\builder.py", line 301, in load_file
return self.load_string(data, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\kivy\lang\builder.py", line 368, in load_string
parser = Parser(content=string, filename=fn)
File "C:\ProgramData\Anaconda3\lib\site-packages\kivy\lang\parser.py", line 392, in init
self.parse(content)
File "C:\ProgramData\Anaconda3\lib\site-packages\kivy\lang\parser.py", line 498, in parse
self.execute_directives()
File "C:\ProgramData\Anaconda3\lib\site-packages\kivy\lang\parser.py", line 415, in execute_directives
raise ParserException(self, ln, 'Invalid value')
kivy.lang.parser.ParserException: Parser: File "C:\ProgramData\Anaconda3\Lib\site-packages\snl-quest-master\es_gui\resources\widgets\common.kv", line 55:
...
53:
54:# Font sizes.

55:#:set default_font sp(20)
56:#:set stnd_font sp(22)
57:#:set large_font sp(30)
...
Invalid value
What should I do?

Float values such as NaN and Inf that lead to infeasible problems result in fatal crashes

Summary of issue

Values used in the mathematical program that are NaN or Inf are not caught and result in infeasible problems that are passed to the solver. For example, when using PJM data for formulations including frequency regulation, the computed mileage multiplier for a particular time may be Inf due to division by zero. This results in an error from Pyomo when building an expression (e.g., objective function) that uses such data.

Steps to replicate

  1. Obtain data for PJM for an offending month, such as February 2018.
  2. Use this data in QuESt Valuation for a formulation including frequency regulation, such as through the wizard. Pricing node and parameter selections do not matter.
  3. Use CBC as solver.
  4. When forming and solving an LP with data including Inf, an AssertionError is raised in the Optimizer.run() method.

Currently, this error propagates and the Pyomo model is passed the solver. It turns out that different solvers handle this situation differently. When using GLPK, the model is recognized properly as being unsolvable and QuESt handles this gracefully. The offending model is omitted from the set of results. On the other hand, when using CBC, the problem is also unsolvable but instead raises an AssertionError due to the solver termination condition of the Pyomo model being False after "solving." This exception is not handled gracefully by QuESt and results in a fatal crash.

Action items

  • Make sure exceptions from solving the Pyomo models are handled properly and issues are communicated explicitly. This is related to #18. Evidently, similar scenarios have different behavior when using different solvers. Since they have the same root cause they should be handled and reported in the same manner.

  • Determine the appropriate approach for dealing with computed mileage multiplier data that results in Inf values. This should be handled at the data reading level since it is a problem related to reading acquired

[CRITICAL] [Window ] Unable to find any valuable Window provider

[INFO ] [Logger ] Record log in C:\Users\tunguy.kivy\logs\kivy_21-08-13_6.txt
[INFO ] [deps ] Successfully imported "kivy_deps.gstreamer" 0.3.2
[INFO ] [deps ] Successfully imported "kivy_deps.sdl2" 0.3.1
[INFO ] [deps ] Successfully imported "kivy_deps.glew" 0.3.0
[INFO ] [deps ] Successfully imported "kivy_deps.angle" 0.3.0
[INFO ] [Kivy ] v2.0.0
[INFO ] [Kivy ] Installed at "C:\Users\tunguy\Anaconda3\lib\site-packages\kivy-2.0.0-py3.8-win-amd64.egg\kivy_init_.py"
[INFO ] [Python ] v3.8.8 (default, Apr 13 2021, 15:08:03) [MSC v.1916 64 bit (AMD64)]
[INFO ] [Python ] Interpreter at "C:\Users\tunguy\Anaconda3\python.exe"
[INFO ] [Factory ] 186 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_pil (img_sdl2, img_ffpyplayer ignored)
[INFO ] [Text ] Provider: pil(['text_sdl2'] ignored)
[CRITICAL] [Window ] Unable to find any valuable Window provider. Please enable debug logging (e.g. add -d if running from the command line, or change the log level in the config) and re-run your app to identify potential causes
sdl2 - ImportError: DLL load failed while importing _window_sdl2: The specified module could not be found.

ISO-NE Data - Time series data has mismatched sizes

Experiencing a fairly common issue with ISO-NE data downloaded through Quest data manager then valuation coming up with errors of
(02 2021) the time series data has mismatched sizes

Checked throughout and LMP + reg data files align in terms of total rows etc, just wondering if there's a common fix?

kivy.uix.screenmanager.ScreenManagerException: No Screen with name "iso_select".

I see the following errors and the QuESt window is closed when I try to go back to the previous window by clicking the button on the top left corner after I run valuation wizard and generate report.

[INFO ] [Base ] Leaving application in progress...
Traceback (most recent call last):
File "C:\Users\hchoi\Downloads\snl-quest-1.6-beta\snl-quest-1.6-beta\main.py", line 560, in
QuEStApp().run()
File "C:\Users\hchoi\Anaconda3\envs\quest\lib\site-packages\kivy\app.py", line 955, in run
runTouchApp()
File "C:\Users\hchoi\Anaconda3\envs\quest\lib\site-packages\kivy\base.py", line 574, in runTouchApp
EventLoop.mainloop()
File "C:\Users\hchoi\Anaconda3\envs\quest\lib\site-packages\kivy\base.py", line 339, in mainloop
self.idle()
File "C:\Users\hchoi\Anaconda3\envs\quest\lib\site-packages\kivy\base.py", line 379, in idle
Clock.tick()
File "C:\Users\hchoi\Anaconda3\envs\quest\lib\site-packages\kivy\clock.py", line 733, in tick
self.post_idle(ts, self.idle())
File "C:\Users\hchoi\Anaconda3\envs\quest\lib\site-packages\kivy\clock.py", line 776, in post_idle
self._process_events()
File "kivy_clock.pyx", line 620, in kivy._clock.CyClockBase._process_events
File "kivy_clock.pyx", line 653, in kivy._clock.CyClockBase._process_events
File "kivy_clock.pyx", line 649, in kivy._clock.CyClockBase._process_events
File "kivy_clock.pyx", line 218, in kivy._clock.ClockEvent.tick
File "C:\Users\hchoi\Anaconda3\envs\quest\lib\site-packages\kivy\animation.py", line 371, in _update
self.stop(widget)
File "C:\Users\hchoi\Anaconda3\envs\quest\lib\site-packages\kivy\animation.py", line 236, in stop
self.dispatch('on_complete', widget)
File "kivy_event.pyx", line 727, in kivy._event.EventDispatcher.dispatch
File "kivy_event.pyx", line 1307, in kivy._event.EventObservers.dispatch
File "kivy_event.pyx", line 1231, in kivy._event.EventObservers._dispatch
File "C:\Users\hchoi\Anaconda3\envs\quest\lib\site-packages\kivy\uix\screenmanager.py", line 420, in _on_complete
self.screen_out.dispatch('on_leave')
File "kivy_event.pyx", line 731, in kivy._event.EventDispatcher.dispatch
File "C:\Users\hchoi\Downloads\snl-quest-1.6-beta\snl-quest-1.6-beta\es_gui\apps\valuation\wizard.py", line 45, in on_leave
self.sm.clear_widgets(screens=self.sm.screens[1:])
File "C:\Users\hchoi\Anaconda3\envs\quest\lib\site-packages\kivy\uix\screenmanager.py", line 1034, in clear_widgets
remove_widget(widget)
File "C:\Users\hchoi\Anaconda3\envs\quest\lib\site-packages\kivy\uix\screenmanager.py", line 1017, in remove_widget
self.current = other
File "kivy\properties.pyx", line 520, in kivy.properties.Property.set
File "kivy\properties.pyx", line 567, in kivy.properties.Property.set
File "kivy\properties.pyx", line 606, in kivy.properties.Property._dispatch
File "kivy_event.pyx", line 1307, in kivy._event.EventObservers.dispatch
File "kivy_event.pyx", line 1213, in kivy._event.EventObservers._dispatch
File "C:\Users\hchoi\Anaconda3\envs\quest\lib\site-packages\kivy\uix\screenmanager.py", line 1063, in on_current
self.transition.start(self)
File "C:\Users\hchoi\Anaconda3\envs\quest\lib\site-packages\kivy\uix\screenmanager.py", line 377, in start
self.screen_in.dispatch('on_pre_enter')
File "kivy_event.pyx", line 731, in kivy._event.EventDispatcher.dispatch
File "C:\Users\hchoi\Downloads\snl-quest-1.6-beta\snl-quest-1.6-beta\es_gui\apps\valuation\wizard.py", line 298, in on_pre_enter
self.iso = self.manager.get_screen('iso_select').iso
File "C:\Users\hchoi\Anaconda3\envs\quest\lib\site-packages\kivy\uix\screenmanager.py", line 1078, in get_screen
raise ScreenManagerException('No Screen with name "%s".' % name)
kivy.uix.screenmanager.ScreenManagerException: No Screen with name "iso_select".

AttributeError: 'AboutScreen' object has no attribute 'about_label'

When run the main.py file, it shows errors:

 Traceback (most recent call last):
   File "main.py", line 500, in <module>
     QuEStApp().run()
   File "/home/lk/.pyenv/versions/anaconda3-2020.02/envs/rlai/lib/python3.7/site-packages/kivy/app.py", line 954, in run
     self._run_prepare()
   File "/home/lk/.pyenv/versions/anaconda3-2020.02/envs/rlai/lib/python3.7/site-packages/kivy/app.py", line 924, in _run_prepare
     root = self.build()
   File "main.py", line 446, in build
     sm = QuEStScreenManager(transition=RiseInTransition(duration=0.2, clearcolor=[1, 1, 1, 1]))
   File "main.py", line 221, in __init__
     self.about_screen = AboutScreen()
   File "main.py", line 198, in __init__
     third_party_code_licenses])
 AttributeError: 'AboutScreen' object has no attribute 'about_label'

I am using:
Ubuntu 16.04
Python 3.7.8
Anaconda 3-2020.2
QuESt version 1.2.g

Feature request: DAM/RT Toggle

Requesting a UI toggle similar to zonal/generator in Data Manager to select DAM/RT pricing. Working with NYISO specifically, default is DAM only and to get RT data had to go set it manually in widgets.py.

Thanks!

No GUI pops up when main.py is run

New issues upon installation. I was expecting a GUI to pop up when python main.py command was run. No GUI. This is what was returned:
(base) Y:\Energy\Energy Storage\SNL Tools\snl-quest-1.2.a>python main.py
[INFO ] [Logger ] Record log in C:\Users\laurences.kivy\logs\kivy_19-04-30_1.txt
[INFO ] [Kivy ] v1.10.1
[INFO ] [Python ] v3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)]
[INFO ] [Factory ] 194 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO ] [Text ] Provider: sdl2
[INFO ] [Window ] Provider: sdl2

Any insight on how to proceed would be helpful. Thank you!

AssertionError on launch with Kivy v1.11.0

After today's release of Kivy v1.11.0, an AssertionError occurs on launch when running with that version of Kivy.

 Traceback (most recent call last):
   File "main.py", line 558, in <module>
     QuEStApp().run()
   File "C:\Users\ricky\Anaconda3\lib\site-packages\kivy\app.py", line 827, in run
     self.load_config()
   File "C:\Users\ricky\Anaconda3\lib\site-packages\kivy\app.py", line 700, in load_config
     self.build_config(config)
   File "main.py", line 494, in build_config
     config.setdefaults('data_manager_pjm', {'pjm_subscription_key': ''})
   File "C:\Users\ricky\Anaconda3\lib\site-packages\kivy\config.py", line 511, in setdefaults
     self.adddefaultsection(section)
   File "C:\Users\ricky\Anaconda3\lib\site-packages\kivy\config.py", line 544, in adddefaultsection
     assert("_" not in section)
 AssertionError

We'll have to look into what changes cause issues after this update.

Handle Windows Scaling gracefully [Solution Provided]

Quest cannot handle high resolution displays with scaling activated. The current solution is to set the scaling to 100%

However, seems like this issue can be resolved by simply adding the following before importing kivy
from ctypes import windll
windll.user32.SetProcessDpiAwarenessContext(-4)

Details here
kivy/kivy#7299

Issue downloading ISO/RTO market operations data from MISO

[ERROR ] [MISOdownloader] 20150130: HTTPError('404 Client Error: Not Found for url: https://docs.misoenergy.org/marketreports/20150130_asm_exante_damcp.csv')
[ERROR ] [MISOdownloader] 20150131: HTTPError('404 Client Error: Not Found for url: https://docs.misoenergy.org/marketreports/20150131_da_exante_lmp.csv')
[ERROR ] [MISOdownloader] 20150131: HTTPError('404 Client Error: Not Found for url: https://docs.misoenergy.org/marketreports/20150131_asm_exante_damcp.csv')
[WARNING] [MISOdownloader] At least one download thread failed. See the log for details. Please retry downloading data for the months that returned errors.

Issue Packging Valuation app on windows

When I build the app and then run it, I obtain the following dependencies error message.

image

How are you building the app.

This is how I proceed located in the root directory of the project:

PyInstaller main.py -D

PyInstaller main.spec --clean --noconfirm

Handle exceptions for data being unavailable and solver being unavailable differently

There are many reasons for an Optimizer instance to be unavailable to be solved. Two reasons that are currently being conflated:

  • An incomplete data set. For example, the data for regulation prices is incomplete relative to the LMP data.
  • A solver for Pyomo is not available. For example, the user has not installed a solver in such a way that Python can recognize and use it.

Currently, these two common scenarios yield the same exception and the resulting error message relayed to the user does not definitively communicate which case it is.

The goal is to differentiate so that the underlying issue is able to be diagnosed. The former case may not be solvable but the latter should be.

QuEST Valuation crashing

Dear sir ,
I have downloaded CAISO data about 201901.When I start Wiard or single run,it will crash.what should I do?

Unable to select a market in Quest Valuation Tool

After setting up Quest, no matter how many times, I try, I am unable to select a market area. After selecting a market area, I see nothing happens, no message is printed on my Python IDE either. I have closed the application couple of times and reopened with the same result

image

Issue with kivy / matplotlib

When running main.py, I get a blank white screen for a few seconds, then it exits.
Error message: No module named 'kivy.garden.matplotlib.backend_kivy'
(complete error log below)

I've downgraded to kivy=1.10.1 and matplotlib=3.1.3 since these versions are successfully used in other solved issues.


[INFO ] [Logger ] Record log in C:\Users\oskarra.kivy\logs\kivy_22-02-17_4.txt
[INFO ] [Kivy ] v1.10.1
[INFO ] [Python ] v3.7.11 (default, Jul 27 2021, 09:42:29) [MSC v.1916 64 bit (AMD64)]
[INFO ] [Factory ] 194 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO ] [Text ] Provider: sdl2
[INFO ] [Window ] Provider: sdl2
[INFO ] [GL ] Using the "OpenGL" graphics system
[INFO ] [GL ] GLEW initialization succeeded
[INFO ] [GL ] Backend used
[INFO ] [GL ] OpenGL version <b'4.6.0 - Build 26.20.100.7812'>
[INFO ] [GL ] OpenGL vendor <b'Intel'>
[INFO ] [GL ] OpenGL renderer <b'Intel(R) UHD Graphics 620'>
[INFO ] [GL ] OpenGL parsed version: 4, 6
[INFO ] [GL ] Shading version <b'4.60 - Build 26.20.100.7812'>
[INFO ] [GL ] Texture max size <16384>
[INFO ] [GL ] Texture max units <32>
[INFO ] [Window ] auto add sdl2 input provider
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
Traceback (most recent call last):
File "main.py", line 55, in
from es_gui.apps.data_manager.data_manager import DataManager
File "C:\Users\oskarra\snl-quest-1.2.f-win10\es_gui\apps\data_manager\data_manager.py", line 17, in
from es_gui.resources.widgets.common import LoadingModalView
File "C:\Users\oskarra\snl-quest-1.2.f-win10\es_gui\resources\widgets\common.py", line 11, in
mpl.use('module://kivy.garden.matplotlib.backend_kivy')
File "C:\Users\oskarra\Anaconda3\envs\QUEST\lib\site-packages\matplotlib\cbook\deprecation.py", line 307, in wrapper
return func(*args, **kwargs)
File "C:\Users\oskarra\Anaconda3\envs\QUEST\lib\site-packages\matplotlib_init_.py", line 1307, in use
switch_backend(name)
File "C:\Users\oskarra\Anaconda3\envs\QUEST\lib\site-packages\matplotlib\pyplot.py", line 221, in switch_backend
backend_mod = importlib.import_module(backend_name)
File "C:\Users\oskarra\Anaconda3\envs\QUEST\lib\importlib_init_.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named 'kivy.garden.matplotlib.backend_kivy'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.