For grids suffering from large-scale renewable generation curtailment, the reasonable allocation of energy storage can smooth renewable generation fluctuation for better utilization. This paper analyzes the optimal no...
详细信息
For grids suffering from large-scale renewable generation curtailment, the reasonable allocation of energy storage can smooth renewable generation fluctuation for better utilization. This paper analyzes the optimal non-profit planning of energy storage in a grid rich in renewable generation from the perspective of third-party investors. First of all, to model the prediction errors of wind and solar output, a multi-stage scenario tree of intraday uncertainty is established to describe the stochastic output of wind and photovoltaics. In addition, scenario reduction techniques and nonanticipativity constraints are adopted to realize multi-stage optimization. Second, aimed to improve social welfare with an acceptable cost, a tri-level optimization model is established to describe storage siting and sizing, storage dispatch, and market clearing respectively to reach a high level of renewable generation utilization. Furthermore, Karush-Kuhn-Tucker conditions and linearization techniques are used to reform the tri-level model into a linear bi-level one. Third, a decomposition algorithm and a differential cut are proposed to solve the bi-level problem. The optimum is gradually approached via iterating by adding differential cuts and integer cuts. Finally, the model and method are verified based on a region of the HRP-38 system. The results show that storage investment aimed at social welfare can effectively achieve a much higher goal of renewable generation utilization than individual profit-seeking storage investment.
In his paper, The Next 700 programming Languages, the late Landin writes that "most programming languages are partly a way of expressing things in terms of other things and partly a basic set of given things.&quo...
详细信息
ISBN:
(纸本)9781605587271
In his paper, The Next 700 programming Languages, the late Landin writes that "most programming languages are partly a way of expressing things in terms of other things and partly a basic set of given things." Landin tries to separate the general purpose aspects of a language from the problem specific aspects. Instead of hundreds of languages with ad-hoc differences, Landin proposes one general-purpose language with many different sets of primitive operations for different problem ***, achieving this separation is not so easy: the domain specific parts cannot always be neatly packaged up in a set of primitives, but instead may require complex syntactic and semantics structures. In the last decade or so we made significant steps towards this vision through the development domain-specific embedded languages (DSELs). We discovered how to trick several general purpose languages into making software libraries look like domain-specific languages. As a result, we now develop DSELs that enjoy many of the benefits of a real languages: they perform domain-specific type checking, they provide custom syntactic abstractions, and they optimize themselves to achieve high efficiency. Most importantly, unlike real languages, DSELs nicely inter-operate with each other through the underlying general purpose *** main limitation of today's DSELs is that they leak: the underlying general purpose language peeks through at inopportune times. This is not surprising; these general purpose languages were not designed to be metalanguages for building DSELs. In this talk I argue that general purpose languages should be designed to be metalanguages and I identify some features that could help our general purpose languages become metalanguages.
multi-stage programming languages provide a convenient notation for explicitly staging programs. Staging a definitional interpreter for a domain specific language is one way of deriving an implementation that is both ...
详细信息
ISBN:
(纸本)9781581134872
multi-stage programming languages provide a convenient notation for explicitly staging programs. Staging a definitional interpreter for a domain specific language is one way of deriving an implementation that is both readable and efficient. In an untyped setting, staging an interpreter "removes a complete layer of interpretive overhead", just like partial evaluation. In a typed setting however, Hindley-Milner type systems do not allow us to exploit typing information in the language being interpreted. In practice, this can mean a slowdown cost by a factor of three or ***, both type specialization and tag elimination were applied to this problem. In this paper we propose an alternative approach, namely, expressing the definitional interpreter in a dependently typed programming language. We report on our experience with the issues that arise in writing such an interpreter and in designing such a language. .To demonstrate the soundness of combining staging and dependent types in a general sense, we formalize our language (called Meta-D) and prove its type safety. To formalize Meta-D, we extend Shao, Saha, Trifonov and Papaspyrou's λH language to a multi-level setting. Building on λH allows us to demonstrate type safety in a setting where the type language contains all the calculus of inductive constructions, but without having to repeat the work needed for establishing the soundness of that system.
暂无评论