PLEXOS OVERVIEW & TUTORIAL

It is assumed you are using a Windows machine. You should read the following to prepare yourself for following this overview/tutorial. All reading material is found at

  • Getting Started/Concise User Guide
  • Modeling Guide/Resource and Expansion Plan/LT Plan Overview
  • Modeling Guide/Technical Reference/…
  • Simulation Phases
  • Long Term (LT) Plan
  • Short Term (ST) Schedule

You may have questions about Plexos arising outside class. Please post them to the EE 590F Discussion board in WebCT, to have them addressed (you will be able to see each other’s questions and corresponding answers).

1.0 High-level description

Plexos is an optimization-basedsimulation tool,capable of

  • Production costing:
  • Running optimal power flow,
  • Running short-term, medium-term, or long-term unit commitment;
  • Expansion planning:
  • Determining optimal size/timing of new investments,
  • Valuing generation and transmission assets, including mixed hydro-thermal systems,
  • Projecting short, medium, long-term capacity adequacy,
  • Calculating stranded-asset cost;
  • Assessing the impact of security-of-supply constraints, and environmental constraints,
  • Maintenance: Optimizing the timing and duration of maintenance outages;
  • Market assessment:
  • Performing market benefit analysis for transmission and generation assets,
  • Calculating market outcomes that account for both fixed and variable cost components,
  • Calculating optimal trading strategies for a portfolio of generation and transmission assets including entrepreneurial interconnectors,
  • Projecting pool prices under various scenarios of load growth and new entry,
  • Determining the impact of market design decisions, and rule changes,
  • As a real-time market-clearing engine,
  • Analyzing generation and transmission constraints and calculating congestion rents.

There are four different simulation options within Plexos.

  • LT Plan: This performs the long-term expansion planning function.The purpose of the LT Plan model is to find the optimal combination of generation new builds and retirements and transmission upgrades (and retirements) that minimizes the net present value of the total costs of the system over a long-term planning horizon. That is, to simultaneously solve a generation and transmission capacity expansion problem and a dispatch problem from a central planning, long-term perspective. Planning horizons for the LT Plan model are user-defined and are typically expected to be in the range of 10 to 30 years. LT Plan appropriately deals with discounting and end-year effects.The following types of features are supported:
  • Building new generating plant
  • Retiring existing generating plant
  • Multi-stage projects
  • Building new AC or DC transmission lines
  • Retiring existing AC or DC transmission lines
  • Multi-stage transmission projects
  • Expanding capacity on transmission interfaces
  • Taking up new physical generation contracts
  • Taking up new physical load contracts
  • Deterministic or stochastic optimization
  • PASA/Preschedule: PASA is “projected assessment of system adequacy.” It distributes and optimizes available generation capacity between regions. Preschedule is a model of discrete, distributed maintenance, and random (forced) outage of generators and transmission lines. PASA and Preschedule are run together.
  • MT Schedule: This is a model based on load duration curve analysis that can be run on a week-by-week or month-by-month basis, withfull representation of the generation and transmission system.
  • ST Schedule: This is a full trading-period level dispatch and pricing optimization with (optional) thermal unit commitment.

These tools can be used as stand-alone applications, but they may also be used in an integrated way. Plexos provides automatic integration of these tools so that information can be fed from one tool to the next. But there are only certain sequences in which such tool-information-flow may take place, as shown below.

For example, the user may choose to run

  • LT Plan, then PASA/Preschedule, then MT Schedule, and then ST Schedule in sequence,
  • LT Plan, then PASA/Preschedule in sequence,
  • MT Schedule, then ST Schedule in sequence

The program does not allow a sequence of ST Schedule, then LT Plan. So longer-term decisions inform shorter-term decisions, but the converse is not allowed.

Some key modeling capabilities within Plexos follow:

Category / Feature / Description
Generation / Unit Commitment / Mixed-integer optimization of unit on/off decisions respecting minimum up and down times.
Heat Rate Curves / Multi-point heat rate functions of various forms
SCUC / Security-constrained unit commitment i.e. Generation optimized with respect to transmission contingencies
Technical Constraints / Ramp limits, minimum stable levels
Reliability / Monte Carlo modelling of generator outages
Maintenance / Optimal planning of generator maintenance periods
Transmission / Optimal Power Flow / Linearized DC optimal power flow (OPF) fully cooptimized with generation dispatch
SCOPF / Security constrained OPF
Large-scale Systems / Ability to model thousands of busbars and transmission lines
DC Lines / Optimization of DC lines
Phase Shifters / Optimization of phase shifters
Reliability / Monte Carlo modelling of line outages
Interfaces and Generic Constraints / Support for interfaces, generic constraints and transmission nomograms including shadow price reporting
Nodal Pricing / Calculation of locational marginal prices (LMP)
LMP Decomposition / Decomposition of LMP into congestion and marginal loss components with various slack bus options
Hydro / Energy Limits / Multi-period energy limits (annual, monthly, quarterly, weekly, daily)
Cascading Networks / Long-term storage optimization, short-term storage, interconnecting waterways and junctions
Water Value Curves / Multi-band water value functions for long-term storages
Pump Storage / Genuine optimization of pump storage resources
Ancillary Services / Cooptimization / Complete cooptimization of ancillary services and generation dispatch
Pricing / Consistent energy and AS pricing outcomes
AS Classes / Spinning, regulation, and non-spinning reserves
Emissions / Constraints / Generation dispatch optimally reflects emission constraints
Taxes / Support for taxes on emissions
Types / Unlimited number of emission types (including CO2, NoX, SoX)
Kyoto Protocol / Modelling of grandfather rights and their impact on generator bidding
Financial / Dynamic Generator Bidding / Bid optimization using game-theoretic models (Nash-Cournot, Bertrand), and heuristic bid-formation algorithms for long-term marginal cost modelling
Market Arbitrage / Cooptimization of self-dispatch versus external market sales for energy, and fuels
Contracts / Resolution of financial contracts including transmission contracts
Compatibility / Transmission / Ability to choose between zonal and nodal markets
Pricing / Options for computing uplift and constraint payments
Market Design / Wide range of market designs supported through simulation options, with direct support for many US, Europe, and Australasian markets

You should be aware that our version of Plexos runs on our ISU-located server and on a remote server. This is a set-up we are using for now, in a sort-of trial mode. The figure below illustrates this operation:

The database which contains the input data is created through Plexos as a Microsoft Access database, and this is done on the local computer. Following database creation, execution is performed as illustrated in the figure above:

  1. Plexos, on the local computer, sends to the remote server to request the license information.
  2. The remote server, which is located at the Plexos site, checks the license information and then extends permission for the local Plexos program to run.
  3. The local Plexos program then operates on the Access database and creates a set of optimization code. The optimization code is then sent across the network to the Plexos site where it is input to a commercial grade solver. MOSEK is used but CPLEX can also be used.
  4. The commercial grade solver solves the optimization problem and then sends the result back as an Access database over the network to the local computer where it can be read by the user.

2.0 Object-oriented design

Plexos uses an object-oriented programming design. If you are familiar with object-oriented programming (OOP), then you have a head start. If not, then it is OK, but you will need to consider with a few ideas:

  • Main concept: Whereas traditional programming focuses on procedures or instructions, OOP focuses on classes and objects. OOP is a programming language model organized around objects rather than actions and data rather than logic.
  • Class: A set of rules and definitions that specify how objects of that class behave and what data can be defined on those objects.A class encapsulates data and operations that belong together, and it controls the visibility of both data and operations.Class behavior specifies what collections objects are allowed to belong to, what collections they must belong to, and how those objects interact with other objects of the same and other types.The class Dog would consist of traits shared by all dogs, such as breed and fur color (characteristics), and the ability to bark and sit (behaviors).Examples of Plexos classes include System, Company, Region, Zone, Node, Line, Transformer, Contingency, Fuel, Emission, Generator, and Data File.
  • Object: A particular instance of a class. The classDogdefines all possible dogs by listing the characteristics and behaviors they can have; the object Lassie is one particular dog, with particular versions of the characteristics. A Dog has fur; Lassie has brown-and-white fur. We may speak of a “class of an object.”
  • File (object model): A file is a Microsoft Database (.mdb) that describes a single System object, which generally represents the power system being studied. This is the root object to which all other objects belong.
  • Collection:The System has a set of collections, one for each class of object. All other objects belong primarily to these System collections e.g. Companies, Generators, Fuels, Storages, etc. For example,
  • To define a generator, one adds a new Generator object to the System's Generators collection. To represent ownership of a generator by a company, one adds the Generator object to the Generators collection of the Company object that owns it.

So classes are also collections. But whereas an object can exist in only 1 class, it may belong to several collections and it may have several collections. For example,

  • Generator G injects at node N: Generator object G belongs to Node N Generators collection;
  • Generator G uses fuel F: Fuel object F belongs to Generator G Fuels collection, and so Generator object G has a Fuel collection.
  • Transmission line A-B flows between nodes A and B: Both Node objects A and B belong to the Nodes collection of Line A-B.

In the figure below, the object “3node” in class “region” (left-hand pane) has collections Reference Node, Exporting lines, etc. (right-hand pane).

  • Memberships (relationships):Membership shows the relationship between objects. For example, a Company may own a set of Generators, and each such relationship is stored as a membership between a Company and a Generator object. After a certain object is created, we need to define its membership. Memberships always involve two objects: a parent object and a child object. For example, if we want to show node A (object A) is inside region B (object B), we need to edit the membership of either object so that the parent object is B and the child object is A.
  • Properties: Properties are used to store the physical values associated with an object. For example, the properties of an object “lines” include reactance, resistance, max flow, min flow, etc.

3.0 Step-by-step example of building case

  1. Remote login to Plexos machine:
  2. Go to your machine’s “Start” menu and click on “All programs,” “Accessories,” “Communications,” and then “Remote Desktop Connection.” Some computers are configured so that the “Remote Desktop Connection” is directly under the “Accessories” menu.
  3. A dialog box will appear. Type plexos.ece.iastate.edu beside “computer” and click on “connect.”
  4. A login box will appear. Use below account name and password that you will be given.

Last Name / First Name / Username
Ali / Kamran / pl01
Gu / Yang / pl02
Ibanez / Eduardo / pl03
Kline / Daniel / pl04
Kline / Jared / pl05
Lambert / Ed / pl06
Li / Juan / pl07
Li / Hongyan / pl08
McCabe / Joseph / pl09
Mejia / Diego / pl10
Parham / Jamasen / pl11
Persinger / Thomas / pl12
Pham / Hieu / pl13
Quinn / Patrick / pl14
Reid / Krysten / pl15
Sun / Wei / pl16
VanDelinder / Mike / pl17
Vijayan / Pradip / pl18
Coakley / Troy / pl19
Odo / Ejiofor / pl20
Cronier / Micheal / pl21
  1. Start Plexos: Click on the icon titled “PLEXOS 5.0.” A security warning might pop up, if so, click on “Open.”
  2. Create a new file: Click “File” from menu and “New.” Provide a name. I will assume in what follows that the new name given is “sam.” Plexos will create an Access database called “sam.mdb.” Once sam is created, Plexos will show you a window called “Settings for sam.mdb.” Here, you need to decide whether you will be using metric or imperial units. We will use imperial, and so you will need to click on “Imperial” at the bottom of this window. Then close out of this window by clicking the “X” at the top right-hand-corner.
  3. Observe:

The numbers 1-5 above refer to

1. The Main Tree

This tree shows you all the Objects in the database organized into Collections shown as folders. This tree is your primary means of navigating the data in the system. The other interface elements respond to your selections in this tree.

2. The Membership Tree

Shows the relationships (called Memberships) between objects. The contents of this tree change according to your selection inthe Main Tree.

3. The Properties Tree:

Lists the properties available for the type of objects selected in the Main Tree.

4. The Data Grid

There are three tabs for the grid (Objects, Memberships, Properties). Each presents a standard Access datasheet where you can edit/add/delete data. You can also use the standard Access filtering and sorting commands to organize the data presented.

5. The Menu Bar

Provides the action commands for PLEXOS such as Execute to begin execution of a simulation.

Now we are going to create the following power system.

We will do seven types of operations:

  • Set configuration
  • Create objects (regions, nodes, lines, generators)
  • Add objects to collections
  • Set properties
  • Set memberships
  • Execute
  • Examine solution
  1. Set configuration: Click on “Configuration” in the menu bar.
  2. Click on the word “Node” under the “Network” category in the left-hand-side “Classes” area of the screen. On the right-hand-side “Properties” area of the screen, click in the empty box beside “Is slack bus.”
  3. Click on the word “Generator” under the “Supply and Demand” category in the left-hand-side “Classes” area of the screen. On the right-hand-side “Properties” area of the screen, click on the folder “Outages.” Then under this folder, click in the boxes labeled “Forced outage rate,” “Outage rating,” and “Mean time to repair.”
  4. Click on the word “Data File” under the “Data” category in the left-hand-side “Classes” area of the screen. On the right-hand-side “Properties” area of the screen, click in the box labeled “Attributes,” so that the following get activated: “Enabled,” “Growth Period,” “Method,” “Relative growth at min,” and “Decimal places.”
  5. Click on “OK” at the bottom right-hand-corner of the screen. A message will pop up indicating that “The changes you have made will cause the database to be closed and reopened. Press OK to close and reopen the database now.” Then press OK. The database will close and reopen.
  6. Create a region: Right click on “Region” (from main tree) and select “New Region.”

A dialog box will appear, where you will need to provide your new region with a name. I will assume in what follows the new region name given is “3node.” Click “Next,” and you will see a warning of “There is no object in this control.” Click “OK,” and a “3node” Properties window will appear. Close out of this window.

  1. Create node 1: Right click on “Nodes” from main tree and select “New node.”

A dialog box will appear, where you will need to provide your new node with a name. I will assume in what follows the new node name given is “1” Click “Next,” and you will see a warning of “There is no object in this control.” Click “OK,” and a “1” Properties window will appear. Close out of this window.

  1. Create node 2: Repeat step 7 except name the new node “2”
  2. Create node 3:Repeat step 7 except name the new node “3”
  3. Create Lines: Right click on “Lines” from main tree and select “New line.” A dialog box will appear, where you will need to provide your new line with a name. Name your new line “L12” Click “Next,” and you will see a warning of “There is no object in this control.” Click “OK,” and a “L12” Properties window will appear. Close out of this window.Repeat this process to create lines L13 and L23.
  4. Create generators: Right click on “Generators” from main tree and select “New generator.” A dialog box will appear, where you will need to provide your new generator with a name. Name your new generator “Gen_11”. Click “Next,” and you will see a warning of “There is no object in this control.” Click “OK,” and a “Gen_11” Properties window will appear. Close out of this window. Repeat this process to create generators Gen_12 and Gen_3.
  5. Add nodes 1, 2, 3 to node collection of region:
  6. Left click on “Regions” in main tree.
  7. Left click on “Nodes” in membership tree.
  8. Left click in first row of “Node” column in data grid. When you do this, you will see a drop-down menu appear on the right-side of the cell. Left-click on it, and select “1”.
  9. Left click in the first row of the “Region” column in data grid. When you do this, you will see a drop-down menu appear on the right-side of the cell. Left click on it, and select “3node”.
  10. Repeat steps c and d except use row 2, selecting “2” and “3node” for the node and region columns, respectively.
  11. Repeat steps c and d except use row 3, selecting “3” and “3node” for the node and region columns, respectively.

The screen should appear as below.