Keywords

These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

1 Introduction

The main goal of the distributed MPC is to overcome computational and communication limitations of centralized architectures. There are many approaches to this problem, following the lines of hierarchical, distributed and price coordination: acting on the setpoints, interchanging information or modifying the cost functions as different ways of coordinating the actions of the distributed controllers, an excellent review of these techniques can be seen in [9]. In particular, in price coordination, several MPC controllers, each one acting on a subset of the process, reach a global optimum using a market-like mechanism for coordination: each controller modifies the cost function that defines its control or optimization aims according to a set of prices assigned from an upper layer, as in [5] and [4]. The advantages of this approach are the ease of application, because it is only necessary to implement a simple coordinator and to add just one extra term on the objective function. Therefore, the existing local industrial model predictive controllers can still be used without any problem. Several approaches based on price coordination methods have been proposed for large-scale and networked systems, some of them being based on price coordination methods [3, 7] and [10].

The purpose of this chapter is to show the principal ideas of the price-driven coordination approach in the coordination of coupled dynamic subsystems and its application in a simulation benchmark. Sections 4.2 and 4.3 show how to solve dynamic shared resource allocation where several consumer units are fed by a common resource, implying inequality global constraints. This approach has been successfully implemented in [8] and it will be described in the first part of Sect. 4.4. In the second part of Sect. 4.4, the method is particularized to solve subsystems which are coupled by interprocess streams which imply equality global constraints.

2 Boundary Conditions

In this section, the generic formulation of the NMPC problem for large-scale systems, where there are some shared resources, is explained. Consider a system composed by a set of interconnected subsystems \(\mathcal {N}=\{S_1,S_2,\dots ,S_{|\mathcal {N}|}\}\) where \(|\mathcal {N}|\) corresponds to the total number of subsystems. The associated optimization problem (4.1) implies minimizing an objective function which can include both control and economic aims subject to nonlinear models \(\mathbf {h_i}(.)\) and \(\mathbf {g_i}(.)\) and \(~i \in \mathcal {N} \) corresponding to the dynamics and local constraints of each subsystem. On the other hand, the optimization problem (4.1) has some global constraints related to common shared resources (see constraint type 1 for a specific resource on Fig. 4.1).

(4.1)

In this expression, \(\mathcal {K}=\{1,2,3,\ldots \}\) represents the set of shared resources and \(|\mathcal {K}|\) is the number of shared resources, \(r_{T_j}\) is the availability of the shared resource \(j\), and \(r_{ji}(u_{ji})\) represents the consumption of the shared resource \(j\) in each subsystem \(i\), being a function of the corresponding manipulated variable \(u_{ji}\). So, \(u_{ji}\) is the use of resource \(j\) in the plant \(i\), and these variables can be written in a compact form \(\mathbf {u_i} = [u_{1i}, u_{2i},\ldots , u_{|\mathcal {K}|i}]\). In addition, each subsystem can have its own independent manipulated variables \(\mathbf {v_i}=[v_{1i},v_{2i},\ldots ,v_{n_{v_ii}}]\) and states \(\mathbf {x_i}=[x_{1i},x_{2i},\ldots ,x_{n_{x_ii}}]\), where \(n_{v_i}\) and \(n_{x_i}\) are the corresponding dimension of the vectors in each subsystem \(i\).

Fig. 4.1
figure 1

Hierarchical scheme for using price-driven coordination and subsystem interconnections. Type 1: Shared resource constraint and type 2: interprocess stream constraints

Now we consider (4.1) under the relaxed assumption that the objective functions \(J_i({\mathbf {v_i},\mathbf {u_i}})\) are not strictly increasing, then the associated Lagrangian is:

$$\begin{aligned} \mathcal {L}=\sum _{i=1}^{|\mathcal {N}|}J_i\left( \mathbf {v_i},\mathbf {u_i},{\mathbf{x_i}}\right) +\sum _{i=1}^{|\mathcal {N}|}{\lambda _{\mathbf {i}}}^T \mathbf {h_i}+\sum _{i=1}^{|\mathcal {N}|}\mu _\mathbf{i}^T\mathbf {g_i}+\sum _{j=1}^{|\mathcal {K}|}p_j \left( \sum _{i=1}^{|\mathcal {N}|}~r_{ji}(u_{ji})- r_{T_j}\right) \end{aligned}$$
(4.2)

For simplicity, and without loss of generality, in (4.1), we are going to consider only the manipulated variables related to shared resources, then the Lagrangian of the optimization problem is:

$$\begin{aligned} \mathcal {L}=\sum _{i=1}^{|\mathcal {N}|}J_{i}\left( {{\mathbf {u}}_{\mathbf {i}}},{\mathbf{x}}_{\mathbf {i}}\right) +\sum _{i=1}^{|\mathcal {N}|}{\lambda _{\mathbf {i}}}^T {h_{i}}+\sum _{i=1}^{|\mathcal {N}|}{\mu _{\mathbf {i}}}^{T}{{\mathbf {g}}_{\mathbf {i}}}+\sum _{j=1}^{|\mathcal {K}|}p_j \left( \sum _{i=1}^{|\mathcal {N}|}~r_{ji}(u_{ji})- r_{T_j}\right) \end{aligned}$$
(4.3)

The conditions for optimality for (4.3) (which are necessary for the existence of an optimum) are:

$$\begin{aligned} \nabla _{{\mathbf {u}}_{\mathbf {i}}}J_i({\mathbf {u}}_{\mathbf {i}},{\mathbf {x}}_{\mathbf {i}})+ \nabla _{{\mathbf {u}}_{\mathbf {i}}} {\mathbf {h}}_{\mathbf {i}}^{\mathbf {T}} {\lambda _{i}^{*}}+ \nabla _{{\mathbf {u}}_{\mathbf {i}}}{{\mathbf {g}}_{\mathbf {i}}}^{\mathbf {T}} {\mu _{\mathbf {i}}^{*}}+\sum _{\mathbf {j=1}}^{|\mathcal {K}|} \frac{{\mathbf {dr}}_{\mathbf {ji}}({\mathbf {u}}_{\mathbf {ji}})}{{\mathbf {du}}_{\mathbf {ji}}}{\mathbf {p}}_{\mathbf {j}}^{*}=0 ~~\forall {\mathbf {i}}\in \mathcal {N} \\ {\mathbf {h}}_{\mathbf {i}}(\dot{\mathbf {x_i}},{\mathbf {x}}_{\mathbf {i}},{\mathbf {u}}_{\mathbf {i}})=0~~\forall i\in \mathcal {N} \nonumber \\ {\mathbf {g}}_{\mathbf {i}}(\dot{\mathbf {x_i}},{\mathbf {x}}_{\mathbf {i}},{\mathbf {u}}_{\mathbf {i}})\le 0~~\forall i\in \mathcal {N} \nonumber \\ {\mathbf {g}}_{\mathbf {i}}(\dot{\mathbf {x_i}},{\mathbf {x}}_{\mathbf {i}},{\mathbf {u}}_{\mathbf {i}})^T \mu _{\mathbf {i}}^{*} =0~~\forall i\in \mathcal {N} \nonumber \\ \mu _{\mathbf {i}}^{*}\ge 0~~\forall i \in \mathcal {N} \nonumber \\ \sum _{i=1}^{|\mathcal {N}|}r_{ji}(u_{ji})-r_{T_j}\le 0 ~~\forall j\in \mathcal {K} \nonumber \\ p_j^*\left( \sum _{i=1}^{|\mathcal {N}|}r_{ji}(u_{ji})-r_{T_j}\right) \le 0~~\forall j\in \mathcal {K} \nonumber \\ p_j^*\ge 0 ~~\forall j\in \mathcal {K} \nonumber \end{aligned}$$
(4.4)

Notice that, KKT conditions (4.4) are equivalent to the ones that result from solving \(|\mathcal {N}|\) independent optimization problems (4.5) for given Lagrangian multipliers \(p_j\), plus a coordinator level to fulfill the global conditions (4.6).

(4.5)
$$\begin{aligned} \sum _{i=1}^{|\mathcal {N}|}r_{ji}(u_{ji})-r_{T_j}&\le 0 ~~\forall j\in \mathcal {K} \\ p_j^*\left( \sum _{i=1}^{|\mathcal {N}|}r_{ji}(u_{ji})-r_{T_j}\right)&= 0~~\forall j\in \mathcal {K} \nonumber \\ p_j^*&\ge 0 \forall j\in \mathcal {K} \nonumber \end{aligned}$$
(4.6)

Therefore, the principle of the price coordination method is based on assigning a price \(p_j\) to the resource \(j\) consumed in each individual subsystem \(i\), in such a way that each subsystem tries to optimize its objective function by accepting an amount of the resources at a certain price such that the global constraint is satisfied. When the price meets (4.6), then the individual optimal solutions of (4.5) are equal to the centralized optimal solution of problem (4.1) and the sum of the local cost function is equal to the global cost function. An extended demonstration can be seen in [5].

The mechanisms for updating the price \(p\) until it satisfies Eq. (4.6) can be considered as the coordinator (see Fig. 4.1) in price-driven approaches [3]. Different policies to fix \(p\) have given rise to different price-coordination methods, for instance, in [3], the authors use a price-adjustment algorithm based on Newton’s method, in which sensitivity analysis and active set change identification techniques are employed. In addition, [10] uses the same technique, but in this case, Broyden’s algorithm [6], which does not require the calculation of the Jacobian matrix, is implemented. All these techniques use the Eq. (4.7) for updating the price, which is evaluated iteratively each sampling time. On the other hand, in [2], the authors try to overcome the problematic of the interaction balance. For this reason, they show three algorithms based on the theoretical aspects of the interaction balance theorem and their application to the optimum allocation problem.

$$\begin{aligned} p_j(k+1)=p_j(k)-\left( \frac{\sum _{i=1}^{|\mathcal {N}|}dr_{ji}(u_{ji})}{d~p_j}\right) ^{-1}\left( \sum _{i=1}^{|\mathcal {N}|} r_{ji}(u_{ji})- r_{T_j}\right) \end{aligned}$$
(4.7)

Finally, the distributed coordinated control algorithm to solve (4.1) will be explained in the next sections and is based on the following main assumptions:

  1. 1.

    The objective function is separable and strictly convex.

  2. 2.

    The nonlinear internal model is separable in several subsystems \(i\in \mathcal {N}\).

  3. 3.

    The global constraints are formulated in terms of manipulated variables \(\mathbf {u_i}\) and they are written as inequality constraints (see the lower part of Fig. 4.1). This means that the subsystems are only coupled by the inputs.

  4. 4.

    The local NMPC controllers solve all these dynamic optimization problems using an SQP algorithm based on a sequential approach, where each manipulated variable \(\mathbf {u_i}\) and \(\mathbf {v_i}\) is discretized using a constant parameterization. On the other hand, the NMPC controllers are well-tunned to achieve their objectives, obtaining a stable solution.

  5. 5.

    The data exchange is done once per sampling time between each NMPC controller and the coordinator or coordinators following the topology shown in Fig. 4.1. The NMPC controllers communicate the computed optimal manipulated variable to an upper layer and they receive the Lagrangian multipliers or prices.

Of particular interest are those kinds of subsystem interconnections common in chemical processes, electric power distribution networks, water supply networks, etc., that represent global equality constraints (see Fig. 4.1). This kind of constraints are related to interprocess streams. For instance, one way to decompose these global equality constraints is to apply a standard Lagrangian decomposition, but as it is argued in [5], this technique has convergence problems because the pricing interprocess streams are not well-defined. To overcome this problem, it is possible to rewrite the equality constraints into shared resource constraints or inequality constraints, and then subsystems coupled by equality constraints can be addressed first using shared resource decomposition. How to deal with these problems and what kind of mechanism is used for updating the price in the coordinator layer will be explained in the next section.

3 Description of the Approach

The price-Driven Coodination NMPC scheme (PCNMPC) uses an upper layer where the coordinator is seen as a control problem (see Fig. 4.2). A non-linear SISO controller is defined for each common resource and gathers the value of the total demanded resource as the sum of all \(r_{ji}\) and compares it with the maximum \(r_{T_j}\). If it is below this total, the price is assigned to zero, otherwise, a control law is enforced to maintain the total resource consumed as less than or equal to \(r_{T_j}\) using the price \(p_j\) of each shared resource as the manipulated variable.

Fig. 4.2
figure 2

Structure of price-driven resource allocation for solving shared resource constraints

figure a

The implementation of the PCNMPC scheme is carried out according to Algorithm 4.1. The coordinator (4.8) is executed continuously along the time of the process, but the values of \(u_{ji}\) and \(p_j\) are exchanged at each sampling time.

On the other hand, to deal with interprocess streams and use the decomposition (4.5) it is necessary to rewrite the equality constraints in a form of a resource constraint (4.1). For instance in Fig. 4.1, an interprocess streams \(u_{21}=u_{22}\) is equivalent to:

$$\begin{aligned} u_{21}=u_{22}\Leftrightarrow \ u_{21}-u_{22}=0 \Leftrightarrow \ \left| u_{21}-u_{22}\right| \le 0 \Leftrightarrow \ \left( u_{21}-u_{22}\right) ^2\le 0 \\ \left( u_{21}-u_{22}\right) ^2\le 0 \Leftrightarrow \ \underbrace{\left( u_{21}-u_{22}\right) ^2}_{r_{21}()} + \underbrace{\left( u_{22}-u_{22}\right) ^2}_{r_{22}()}\le \underbrace{0}_{r_{T_2}} \nonumber \end{aligned}$$
(4.9)

In the last inequality of (4.9), the lefthand side can be interpreted as an aggregate demand for common resource, and the righthand side can be interpreted as an available resource \(r_{T_2}\). Notice, the first term of the left hand side in this inequality depends on a variable \(u_{21}\) of subsystem 1, but also on a variable \(u_{22}\) of subsystem 2. However, the second term depends only on a variable of the subsystem 2. This particular way of rewriting the interprocess stream has been chosen because it is easy to transfer to the standard MPC controller’s cost function in order to solve the problem (4.5).

4 Application Results

In this section, two applications of price-driven coordination are presented. The first one is a dynamic resource allocation problem corresponding to the problem denominated as 1 in Fig. 4.1. Meanwhile, the second one corresponds to the problem denominated as 2, where subsystems are coupled by interprocess streams. In addition, the last one is compared to centralized and decentralized schemes.

4.1 Oxygen Supply Network. Preliminary Results

figure b

In [8], the approach showed in Algorithm 4.2 was directly applied in a simulation of an oxygen distribution network (Fig. 4.3) which includes two oxygen generators (\(P_1\) and \(P_2\)): each of them produces oxygen, which are the shared resources \(r_{T_1}\) and \(r_{T_2}\), at different purities, capacities and production costs (\(r_{T_1}\) is cheaper than \(r_{T_2}\)). There are also two different collectors in charge of driving the oxygen from each generator to each consumer unit (\(C_1\), \(C_2\) and \(C_3\)). Every consumer unit is a chemical reactor where a reaction that consumes oxygen takes place, where the manipulated variables are the feed flows from both collectors and the controlled variable is the concentration of dissolved oxygen. In addition, each one has a NMPC controller to maintain a certain level of dissolved oxygen minimizing, at the same time, operational costs. This implies that each NMPC tries to use only the cheapest resource. On the other hand, three kinds of laws for updating prices have been implemented: market policy, PI and PID controllers.

The solid line in the upper picture of Fig. 4.4 shows the availability of the resource, which is the total production of resource \(r_{T_1}\). In the same picture, each dashed line corresponds to the needed oxygen demand (\(\sum _{i=1}^{3} r_{1i}(u_{1i})\)) by all NMPC controllers for the same resource using different price-adjustment policies. The optimal solution, from the point of view of the centralized approach, is to use as much cheap resource as possible. This solution is addressed in a distributed price-coordination scheme when the optimal price is achieved (see lower picture of Fig. 4.4). Therefore, an affective coordination of all NMPC controllers has been obtained. In [8] it can be seen how this optimal solution cannot be achieved with a fully decentralized architecture. Notice, during the transition of the prices, the resource constraints are not fulfilled, but when the steady state is achieved, then the optimal allocation of the resource is equal to the allocation achieved using the centralized scheme.

Fig. 4.3
figure 3

The oxygen benchmark process diagram

Fig. 4.4
figure 4

Dynamic resource allocation results and price evolution

4.2 Four-Tank Benchmark

The plant chosen (Fig. 4.5) is based on the one used by Alvarado et al. in [1]. It consists of four tanks interconnected in such a way that the flow \(q_A\) fills tanks 1 and 4, whereas flow \(q_B\) fills tanks 2 and 3. On the other hand, tank 3 empties its content into tank 1, and tank 4 does the same into tank 2. So, two manipulated variables \(q_A\) and \(q_B\) are available to control two variables \(h_1\) and \(h_2\). In order to compare the price-driven coordination approach with other schemes such as the distributed MPC ones presented in [1], the same conditions, the same tracking experiment (references change in the levels of tank 1 and 2) and the same performance index \(J_{per}\) has been used. The model is given by the following differential equations:

$$\begin{aligned} S dh_1/dt = - a_1 \sqrt{2gh_1} + a_3 \sqrt{2gh_3} + \gamma _a q_A \end{aligned}$$
(4.12)
$$\begin{aligned} S dh_2/dt = - a_2 \sqrt{2gh_2} + a_4 \sqrt{2gh_4} + \gamma _a q_B \end{aligned}$$
(4.13)
$$\begin{aligned} S dh_3/dt = - a_3 \sqrt{2gh_3} + (1-\gamma _b) q_B \end{aligned}$$
(4.14)
$$\begin{aligned} S dh_4/dt = - a_4 \sqrt{2gh_4} + (1-\gamma _a) q_A \end{aligned}$$
(4.15)

where \(h_i\) and \(a_i\) are the water level and the constant discharge of tank \(i\in \{1, 2, 3, 4\}\), \(S\) is the cross section of the tanks, \(q_j\) and \(\gamma _j\) denote the flow and the ratio of the three-way valve of pump \(j\in \{{A, B}\}\), and \(g\) is the gravitational acceleration.

Fig. 4.5
figure 5

The four-tank process diagram

4.3 Price Coordination Non-Linear Model Predictive Control

The plant is split into two subsystems: subsystem 1 includes tank 1 and tank 3, while subsystem 2 comprises tanks 2 and 4, as indicated in Fig. 4.5. One NMPC controller is assigned to each subsystem, but both of them are able to manipulate flows \(q_A\) and \(q_B\), denoting as \(q_{A1}\), \(q_{B1}\) or \(q_{A2}\), \(q_{B2}\) the ones seen by each controller. This means that two global constraints related to interprocessing streams have to be satisfied; \(q_{A1}=q_{A2}\) and \(q_{B1}=q_{B2}\). So, it is necessary to rewrite these equality constraints in the form of a resource constraint (4.1) as follows:

$$\begin{aligned} q_{A1}=q_{A2}\Leftrightarrow \ q_{A1}-q_{A2}=0 \Leftrightarrow \ \left| q_{A1}-q_{A2}\right| \le 0 \Leftrightarrow \ \left( q_{A1}-q_{A2}\right) ^2\le 0 \nonumber \\ \left( q_{A1}-q_{A2}\right) ^2\le 0 \Leftrightarrow \ \underbrace{\left( q_{A1}-q_{A2}\right) ^2}_{r_{11}()} + \underbrace{\left( q_{A2}-q_{A2}\right) ^2}_{r_{12}()}\le \underbrace{0}_{r_{T_1}} \nonumber \end{aligned}$$
(4.16)
$$\begin{aligned} q_{B1}=q_{B2}\Leftrightarrow \ q_{B1}-q_{B2}=0 \Leftrightarrow \ \left| q_{B1}-q_{B2}\right| \le 0 \Leftrightarrow \ \left( q_{B1}-q_{B2}\right) ^2\le 0 \nonumber \\ \left( q_{B1}-q_{B2}\right) ^2\le 0 \Leftrightarrow \ \underbrace{\left( q_{B1}-q_{B1}\right) ^2}_{r_{21}()} + \underbrace{\left( q_{B1}-q_{B2}\right) ^2}_{r_{22}()}\le \underbrace{0}_{r_{T_2}} \nonumber \end{aligned}$$
(4.17)

The price coordinated optimization problem is then composed of two layers: In the lower one, two separate NMPC; \(\mathrm {NMPC}_1\) (4.17) and \(\mathrm {NMPC}_2\) (4.18), perform the control level of the corresponding subsystem. The first one, \(\mathrm {NMPC}_1\), manipulates the variables \(q_{A1}\) and \(q_{B1}\), and the second one, \(\mathrm {NMPC}_2\), manipulates \(q_{A2}\) and \(q_{B2}\). In the upper coordinating layer, two controllers assign prices \(p_1\) and \(p_2\) to the NMPCs, as in Fig. 4.6. Then, the term \(p_1 r_{11}\) is added to \(\mathrm {NMPC}_1\)’s cost function, while the term \(p_1 r_{12}\) is added to \(\mathrm {NMPC}_2\)’s cost function. Similar terms are added for the second resource.

Fig. 4.6
figure 6

Coordination feedback control scheme using a SISO controller for each interprocess stream

Two SISO PID controllers are used for updating the prices, selecting one of the equivalent statements in equations (4.16) and (4.17). The controlled variable is the absolute difference between the flows demanded, which are the solutions obtained by each NMPC controller in the previous sampling time \(\left| q_{A1}^{*}- q_{A2}^{*}\right| \) or \(\left| q_{B1}^{*}- q_{B2}^{*}\right| \). The setpoints correspond to the total shared resource available (which is equal to zero because it is an interprocess stream), and the manipulated variables are the prices that are communicated to every NMPC controller in order to modify their cost functions. This means that, when the optimal prices are found, then the global equality constraints \(q_{A1} = q_{A2}\) and \(q_{B1} = q_{B2}\) are satisfied.

Notice that the first NMPC computes \(q_{A1}\) and \(q_{B1}\), and the second one computes \(q_{A2}\) and \(q_{B2}\), but only a single \(q_A\) and \(q_B\) can be applied physically to the process. The coordination layer changes the prices \(p_1\) and \(p_2\) to equate them, but perfect equality cannot be guaranteed at every sampling time. So, an implementation policy must be designed. For this purpose, the relative gain array (RGA) of the process can be computed as in [1]. The RGA, calculated from the linearized process model at steady state, is the following one:

$$\begin{aligned} RGA = \left( \begin{array}{ccc} q_A &{} q_B \\ -0.4 &{} 1.38 &{} h_1\\ 1.38 &{} -0.4 &{} h_2\\ \end{array} \right) \end{aligned}$$
(4.18)

This matrix indicates that, for subsystem 1 (tanks 1 and 3) level \(h_1\) should be controlled with \(q_B\), and for subsystem 2 (tanks 2 and 4), \(h_2\) should be controlled with \(q_B\). Then, the implemented flow \(q_A\) is the solution obtained by \(\mathrm {NMPC}_2\) (\(q_{A2}^{*}\)) and the implemented flow \(q_B\) is the solution obtained by \(\mathrm {NMPC}_1\) (\(q_{B1}^{*}\)).

For both NMPC controllers, the cost function in (4.17) and (4.18) includes penalty terms in manipulated variables in order to penalize excessive control changes, i.e. \(\Delta q_{A1}(k) = q_{A1}(k) - q_{A1}(k-1)\), the first term of this sequence being (\(k=0\)) \(\Delta q_{A1}(0) = q_{A1}(0) - q_{A1}(-1)\). However, \(q_{A1}(k-1)\) is the implemented solution in the process for the flow \(q_A\), that is, the solution obtained by \(\mathrm {NMPC}_2\) (\(q_{A2}^{*}\)). In this way, the first term of the sequence is \(\Delta q_{A1}(0) = q_{A1}(0) - q_{A2}^{*}\), corresponding just with the term \(r_{11}\) in (4.16), \(q_{A1}\) is a decision variable of the controller \(\mathrm {NMPC}_1\), but \(q_{A2}^{*}\) is data read from the process. A similar penalty term is included in the cost function of the \(\mathrm {NMPC}_{2}\): \(\Delta q_{A2}(k) = q_{A2}(k) - q_{A2}(k-1)\) and for \(k =0\), \(\Delta q_{A2}(0) = q_{A2}(0) - q_{A2}(-1) = q_{A2}(0) - q_{A2}^{*}\), where \(q_{A2}\) is a decision variable of the controller \(\mathrm {NMPC}_2\), and \(q_{A2}^{*}\) is the solution obtained before for this same controller, being equivalent to the term \(r_{12}\) of Eq. (4.16). In this way, and during the process time, the individual different flow solutions for the same stream are penalized.

The results which have been obtained using the PCNMPC are shown in Fig. 4.7 and they illustrate the fact that the scheme can fulfill all the global constraints and achieve a good tracking of the different setpoints, the performance index being \(J_{per}=32.4\). The lower picture in Fig. 4.8 shows the evolution of the prices, i.e. when the price of \(q_A\) achieves an optimal steady value, because Eq. 4.6 is met, (4.6), then both flows, \(q_{A1}\) calculated by \(\mathrm {NMPC}_1\) and \(q_{A2}\) calculated by \(\mathrm {NMPC}_2\), are equal,which means that an effective coordination of both controllers has been achieved (see also the upper pictures in Fig. 4.8). Local solutions of each NMPC controller are the optimal solution of the optimization of the entire process, but of course, during the transient equality constraints are not satisfied.

Fig. 4.7
figure 7

Manipulated and controlled variables using a price-driven coordination method

Fig. 4.8
figure 8

Evolution of the interprocess stream flow and prices

4.4 Comparative Test with Centralized and Decentralized Schemes

The centralized NMPC architecture implies solving a global optimization problem by taking into account the complete nonlinear model of the process, \(q_A\) and \(q_B\) being the manipulated variables. The results are shown in Fig. 4.9 and the performance index was \(J_{per} = 23.83\).

Fig. 4.9
figure 9

Manipulated and controlled variables using a centralized NMPC scheme

Fig. 4.10
figure 10

Manipulated and controlled variables using a decentralized NMPC scheme

The decentralized non-linear model predictive architecture involves using two independent NMPC controllers. Subsystem 1 is controlled by NMPC controller 1, where \(q_B\) is the manipulated variable and \(q_A\) is treated as a measured disturbance. On the other hand, subsystem 2 is controlled by NMPC controller 2, where \(q_A\) is the manipulated variable and \(q_B\) is treated as a measured disturbance. The pairing between manipulated and controlled variables has been done using RGA analysis (4.16). In this architecture, there is no kind of communication between controllers and the results are shown in Fig. 4.10. The performance index \(J_{per}=34.63\) was the worst of all approaches, the value of the offset between setpoint and controlled variable in subsystem 2 being significantly.

The results show that this technique achieves the same steady state solution which has been obtained using the centralized approach. They also match the optimal analytic steady state (see Table 4.1), so a correct decomposition of the global dynamical problem has been achieved. In addition, all control objectives are satisfied, but the response is slower than the centralized architecture compare the controlled variables in Fig. 4.7 with the controlled ones in Fig. 4.9. This effect can seen in the performance indexes which are different (see Table 4.1).

5 Conclusions

In this chapter, a method has been developed to coordinate several NMPC controllers working in parallel in a price-driven scheme. Each NMPC controls a subsystem being all subsystems coupled by the manipulated variables and the coordinator is formulated as a control problem, that uses the prices as manipulated variables and try to fulfill (4.6) as target. This method presents several advantages. It is easy to implement in existing MPC industrial controllers and less data interchange is needed to coordinate the NMPC controllers. Moreover, if a PID controller is used inside the non-linear controller, to find the optimal price, it is possible to determine, in a well known way, the behavior of the fulfillment of the global constraints in terms of the tuning parameters of that PID.

Table 4.1 Steady state achieved by the different approaches