text:
\section{Introduction}\label{sec:introduction}
\Gls*{rl} is a class of machine learning algorithms that discover optimal policies in the sense of maximizing some notion of utility through interacting with the dynamic system to be controlled \citep{sutton_reinforcement_2018}. It therefore offers an interesting complementary approach to developing control systems for problems unsuited to traditional control approaches based purely on first principles modeling. \Gls*{rl} has already proven to be the state-of-the-art approach to classes of problems requiring complex decision-making over large time frames such as game playing \citep{mnih2015human,Schrittwieser2019MasteringAG,berner2019dota}. However there are some major limitations to the \gls*{rl} framework that inhibits its applicability to control applications, notably the lack of guarantees for safe operation and ability to specify constraints. Some of these limitations can be addressed by combining \gls*{rl} with trusted control approaches such as \gls*{mpc}, thereby allow for learning of various aspects of the control problem while having a trusted controller oversee the process and ensure safe operation \citep{zanon_safe_2020,gros_safe_2020}.

\iffalse
\seb{Some papers from us:
\begin{itemize}
    \item Safe Reinforcement Learning Using Robust MPC, S. Gros, M. Zanon, Transaction on Automatic Control, 2020
    \item Data-driven Economic NMPC using Reinforcement Learning, S. Gros, M. Zanon, Transaction on Automatic Control, 2019
    \item Reinforcement Learning Based on the Real-Time Iteration and NMPC, M. Zanon, V. Kungurtsev, S. Gros, IFAC 2020
    \item Reinforcement Learning for mixed-integer problems based on MPC, S. Gros, M. Zanon, IFAC 2020
    \item Safe Reinforcement Learning via projection on a safe set: how to achieve optimality? S. Gros, M. Zanon, A. Bemporad, IFAC 2020
    \item Combining system identification with reinforcement learning-based MPC, A. B. Martinsen, A. M. Lekkas, S. Gros, IFAC 2020
    \item 	Practical Reinforcement Learning of Stabilizing Economic MPC, M. Zanon, S. Gros, A. Bemporad, European Control Conference 2019
\end{itemize}
}
\fi

On the other hand, the \gls*{mpc} approach has a few major drawbacks of its own, notably its reliance on having a reasonably accurate model of the system. Unfortunately, obtaining such a model can be both difficult and costly. Moreover, the \gls*{mpc} approach has a heavy online computational cost, as it involves solving an \gls*{ocp} at every time step over a selected horizon. \gls*{mpc} is therefore in many cases unsuited for low-powered or battery-driven applications, and employing \gls*{mpc} in these scenarios often necessitates some form of compromise, see e.g. \cite{le_approximate_2012} and \cite{gondhalekar_tackling_2015}. While we in this paper address this problem from an energy perspective of reducing the frequency of computations, one can also look at reducing the complexity of the \gls*{mpc} computation itself. The two main tunable parameters in this regard is the optimization horizon length, which when lowered can lead to myopic behaviour, and the step size which when too large impacts control performance as the controller is unable to properly respond to high frequency dynamics and transient disturbances. The main techniques to reduce computational complexity are early termination (suboptimal) \gls*{mpc} \citep{scokaert_suboptimal_1999}, explicit \gls*{mpc} \citep{bemporad_explicit_2002}, semi-explicit \gls*{mpc} \citep{goebel_simple_2015} and move-blocking \citep{cagienard_move_2004}.

As an alternative to the normal digital control system approach of measuring system state and calculating control signal at equidistant points in time, one can instead select these points by some other criteria, yielding a control system that consists of a control law and a triggering policy. This event-triggered control paradigm could be used to increased control performance or reduce frequency of computations based on how the triggering policy is designed \citep{astrom_comparison_2002,heemels_analysis_2008}. Event-triggered \gls*{mpc} has been suggested in the literature to reduce resource usage particularly in networked communication systems and multi-agent systems \citep{iino_event_2009,berglind_self_2012,li_event_2014,chakrabarty_event_2018}. In these works the triggering policy is a predetermined hand-crafted policy based on domain knowledge about the system and the controller, a learned policy on the other hand can be derived without requiring system knowledge and be adaptive to changing dynamics and uncertain disturbances. In \cite{yoo_event_2019} the authors use a learned empirical risk minimization model to predict the unknown system noise in \pgls*{mpc} framework and use its output to determine the triggering thresholds. For a recent review of machine learning applied to event-triggered networked control systems, see \cite{sedghi2020machine}.

In this work we look at the single agent setting and suggest to learn the triggering policy with \gls*{rl}. Several other works such as \cite{baumann_deep_2018} and \cite{yang_event_2019} have proposed \gls*{rl} for learning the triggering policy, however these works simultaneously learn the control law as opposed to our work which employs \gls*{mpc} for this purpose. The contribution of this paper lies in proposing a novel architecture involving a dual mode \gls*{mpc} and \gls*{lqr} control law and \pgls*{rl} based triggering policy, and in deriving how the event-triggered \gls*{mpc} problem can be framed as \pgls*{mdp}. The \gls*{mpc} solves the \gls*{ocp}, providing a plan in the form of an input sequence and the predicted state trajectory from executing the input sequence, while the \gls*{lqr} provides an additive compensatory input based on the state trajectory prediction errors extending the viability of \gls*{mpc} solution. Finally, the \gls*{rl} triggering policy, henceforth referred to as the recomputation policy, selects time instants when the improved control performance from recomputing the \gls*{mpc} solution outweigh the computational costs. We empirically demonstrate the effectiveness of the proposed architecture through two simulated use cases.

The rest of the paper is organized as follows. First, Section \ref{sec:theory} presents the requisite theoretical background of the proposed architecture, while Section \ref{sec:method} presents the implementation details. Section \ref{sec:experiments} describes the two case studies illustrating the proposed system, and Section \ref{sec:results} presents the results of these case studies and discusses their significance. Finally, Section \ref{sec:conclusion} presents our closing thoughts on the paper.

\section{Related Works}\label{sec:related}

The \gls*{lqr} arises as the optimal solution to the \gls*{mpc} optimization problem when the system equations are linear with no or only zero-mean Gaussian disturbance, and the cost is quadratic in the state and the inputs. Because of this clear relationship between the two, there has been several cross-applications of \gls*{mpc} and \gls*{lqr} in the literature. One of the first established stability proofs for the \gls*{mpc} framework, the dual-mode \gls*{mpc}, was designed around an \gls*{lqr} controller that would provide the terminal inputs, and the \gls*{mpc} would generate state trajectories that were required to end in an invariant set for the \gls*{lqr}. In this architecture, the \gls*{lqr} is never used in practice, and is only a theoretical tool to guarantee stability of the controller design. \citep{michalska_robust_1993,chen_quasi-infinite_1998}  More MPC + LQR crossovers (?)

As the substantial online computation cost is a major drawback of the \gls*{mpc} framework, there have been several proposed approaches to lessen this problem. Some approaches look at adjusting the sampling time to weigh the relationship between performance, stability and computation, either by having the sampling time as a decision variable of the optimization problem or as part of the cost function.\citep{hoffmann_variable_2012,cao_variable_2014,altin_model_2018}. Move blocking is a technique in which the inputs or other optimization variables are fixed to be constant over several contiguous time steps, in order to reduce the amount of decision variables in the optimization problem \citep{cagienard_move_2004}.

Even more closely linked with this work are the works that suggest combining \gls*{mpc} with other controllers to reduce the computational burden. In \cite{song_hybrid_2012} a global nonlinear controller is approximated by a number of piecewise affine linear controllers that are scheduled by a global \gls*{mpc} controller. \cite{akesson_neural_2006} train a \gls*{nn} to mimic the outputs of a \gls*{mpcr} with the intention of the \gls*{nn} controller replacing the \gls*{mpc} in online operation to reduce computational requirements. In this approach, the \gls*{mpc} is evaluated offline on systems to generate the training data for  the \gls*{nn} controller. As \gls*{nmpc} is significantly more computationally demanding than linear \gls*{mpc}, \cite{zhu_hybrid_1999} suggest decomposing the plant into nonlinear and linear subsystems and employ linear \gls*{mpc} wherever possible. They show that such an approach can reduce the computational time by an order of magnitude.
\section{Proposed Control System Architecture}\label{sec:method}

The proposed architecture is described in Algorithm \ref{alg:cfs}. The \gls*{mpc} solution is computed at the first time step, generating an optimal predicted state trajectory $\hat{x}_{k+1, \dots, k + N}$ and a sequence of optimal inputs that produces this trajectory $u^{\mathrm{MPC}}_{k, \dots, k + N - 1}$. The first input is then applied to the system as usual, but instead of discarding the rest of the \gls*{mpc} solution, we allow a learned policy to decide based on an observation of the current recomputation state, $s$, whether the last \gls*{mpc} solution is still of acceptable quality, or if it should be recomputed. If the recomputation policy decides not to recompute, a tracking \gls*{lqr} is applied to the state prediction error $\epsilon_x$ to correct the state trajectory to match the plan generated by the \gls*{mpc}. Algorithm \ref{alg:cfs} describes the operation of the control system with a fixed recomputation policy, e.g. after the \gls*{rl} policy is done learning, as how and when the learning is performed would depend on the chosen learning algorithm.

In this paper we use the GPOMDP algorithm \citep{Baxter_2001} to train the \gls*{rl} recomputation policy, and implement the \gls*{mpc} with the CasADi framework \citep{Andersson2019}, the Ipopt optimizer \citep{ipopt} and the do-mpc python library \citep{lucia2017rapid}.
\begin{remark}
In our experiments computing the \gls*{lqr} input and evaluating the \gls*{rl} policy takes on the order of $10^{-3}$ less time than computing the \gls*{mpc} solution, lending credence to this architecture saving significant computational resources.
\end{remark}

\begin{algorithm2e}[htbp]
    \SetAlgoLined
    \caption{Control System Architecture}

    Initialize state and parameters: $x_k = x_0, \enspace \hat{p}_k = p_0$ \;
    \For{$k = 0, 1, 2, \dots$}{
        Compute MPC solution: $\hat{x}_{k+1, \dots, k+N}, \enspace u^{\mathrm{MPC}}_{k, \dots, k + N - 1} = \mathrm{MPC}(x_k, \hat{p}_k)$ \;
        Execute MPC control input: $u^{\mathrm{MPC}}_{k}$  \;
        \For{i = k, \dots, k + N - 1}{
            Wait for next sampling instant and measure system state: $\bar{x}_{i}$ \;
            Compute prediction errors: $\epsilon_{x_{i}} = \hat{x}_{i} - \bar{x}_{i}$ \;
            \eIf{\textup{Recomputation policy} $\pi(a_i \thinspace | \thinspace s_i)$ \textup{ draws } $a_i = 1$}{
                Break loop
            }{
                Compute additive LQR input: $u_{i} = u^{\mathrm{MPC}}_{i} + LQR(\epsilon_{x_{i}})$ \;
                Apply input constraints: $u_{i} = \min\left(\max\left(u_{i}, u^{\mathrm{low}}\right), u^{\mathrm{high}}\right)$ \;
                Execute control input: $u_{i}$
            }
        }
        Update MPC model, state and parameters: $k \leftarrow i$
    }
    \label{alg:cfs}
\end{algorithm2e}
\iffalse
\begin{algorithm2e}[htb]
    \SetAlgoLined
    \caption{CFS architecture}

    Initialize state $x_k = x_0$ \\
    \For{$k = 0, 1, 2, \dots$}{
        Compute MPC solution: $\hat{x}_{k+1}, \dots, \hat{x}_{k+N}, \enspace u_{{MPC_k}}, \dots, u_{MPC_{k+N - 1}} = MPC(x_k, p_k)$ \\
        Execute MPC control input: $x_{k+1} = f(x_k, u_{MPC_k}, p_k)$ \\
        \For{i = 1, \dots, N - 1}{
            Compute prediction errors: $\epsilon_{x_{k+i}} = \hat{x}_{k+i} - x_{k+i}, \enspace \epsilon_{p_{k+i}} = \hat{p}_{k+i} - p_{k+i}$ \\
            \eIf{Recomputation policy evaluates to True: $\pi(a_{k+i} \thinspace | \thinspace s_{k+i}) == 1$}{
                Break loop
            }{
                Compute LQR input: $u_{k+i} = u_{{MPC}_{k+i}} + LQR(\epsilon_{k+i})$ \\
                Apply input constraints: $u_{k+i} = \min\left(\max(u_{k+i}, u^{low}), u^{high}\right)$ \\
                Execute control input: $x_{k + i + 1} = f(x_{k+i}, u_{k+i}, p_{k+i})$
            }
        }
        \iffalse
        \While{\textrm{Recomputation policy returns 0 and number of steps since computation is less than horizon}: $\pi(a | s_{k+i}) == 0 \textrm{ and } i < N$}{
            Compute prediction errors: $\epsilon_{k+i} = \hat{x}_{k+i} - x_{k+i}$ \\
            Compute LQR input: $u_{k+i} = u_{{MPC}_{k+i}} + LQR(\epsilon_{k+i})$ \\
            Apply input constraints: $u_{k+i} = \min\left(\max(u_{k+i}, u^{low}), u^{high}\right)$ \\
            Execute control input: $x_{k + i + 1} = f(x_{k+i}, u_{k+i}, p_{k+i})$ \\
            $i \mathrel{{+}{=}} 1$
        }
        \fi
        Update MPC model, state and parameters: $k \mathrel{{+}{=}} i$
    }
    \label{alg:cfs}
\end{algorithm2e}
\fi

\section{Results and Discussion}\label{sec:results}

\begin{figure}[htbp]
\floatconts
    {fig:training
    {\caption{Learning curves for the training phase of the \gls*{rl} recomputation policy showing mean values and standard deviation (shaded region) over five different seeds.}
    {%
    \subfigure[Cart pendulum system]{%
        \label{fig:training:cartpend
        \includegraphics[width=0.6975\textwidth]{figs/Cart_Pendulum_training.pdf}
    }
    \subfigure[Battery storage system]{%
        \label{fig:training:battery
        \includegraphics[width=0.2825\textwidth]{figs/Battery_training.pdf}
    }
    }
\end{figure}

Figure \ref{fig:training} shows the evolution of the learning process of the \gls*{rl} recomputation policy evaluated every 150 episodes on the test set. It starts out emulating the \gls*{mpc} strategy achieving similar objective value scores, and from there identifies instances where similar control performance can be achieved without recomputing the \gls*{mpc} solution. It converges after around 1500 episodes corresponding to about 4 hours of real world training time for the cart pendulum system and 400 hours for the battery storage systems. While this is considerable training time, in our experiments the policy generally monotonically improves on the objective and the system could be designed such that even the maximum recomputation interval guarantees safe operation.

\begin{figure}[htbp]
\floatconts
    {fig:eval
    {\caption{Undiscounted return $G$ over the test sets for the different recomputation policies. The \gls*{rl} bars are mean values with the lines representing one standard deviation.}
    {%
    \subfigure[Cart pendulum system]{%
        \label{fig:eval:cartpend
        \includegraphics[width=0.49\textwidth]{figs/cart_pendulum_evaluation.pdf}
    }
    \subfigure[Battery storage system]{%
        \label{fig:eval:battery
        \includegraphics[width=0.49\textwidth]{figs/battery_evaluation.pdf}
    }
    }
\end{figure}

The trained \gls*{rl} policy is compared to the baseline controllers in Figure \ref{fig:eval}. It is the best performing policy for both systems, outperforming the second best policy by around 5\% and 7\% for the cart pendulum and battery storage systems, respectively. While this might seem like a minuscule improvement we would argue that the optimization landscape in the recomputation optimization problem is very noisy --- involving complex interactions between the \gls*{mpc} and \gls*{lqr} control laws as well as the plant dynamics --- and the ability to consistently estimate a gradient even with such little room for improvement speaks to the potential of the proposed architecture. For the cart pendulum problem the \gls*{rl} policy is able to have virtually the same control performance as the standard \gls*{mpc} approach with less than one fourth of the computational cost. A noteworthy result is that for the battery system the computational cost is negligible, meaning the performance improvements of the \gls*{rl} policy mainly stem from it recognizing situations where carrying out larger parts of a single \gls*{mpc} solution is more optimal than individual parts of separate solutions. These situations arises due to the battery storage system having considerable stochasticity which is not modeled by the \gls*{mpc}, meaning its solutions are generally suboptimal.

One major effect we do not account for in this work is the time it takes to obtain the \gls*{mpc} solution, which is often significant compared to the sampling time. The recomputation policy could therefore instead by trained as a self-triggering policy predicting the number of time steps the current solution is viable for. The \gls*{mpc} could then be scheduled so that a new solution is ready when needed, while also giving the \gls*{mpc} more optimization time resulting in a higher quality solution.

\section{Conclusion}\label{sec:conclusion}
In this paper we have presented a novel control system architecture which promises to deliver the performance of  \gls*{mpc} with reduced computational frequency and energy usage, opening up new applications particularly for battery driven systems and other applications where energy is a limiting factor. It is important to note that we did not spend significant time tuning the parameters of the \gls*{mpc} and \gls*{lqr} controllers, being satisfied with establishing the \gls*{mpc} as the superior controller, and employed a basic classical \gls*{rl} algorithm with a simple function approximator containing only a handful of learned parameters. All this is to say that the architecture seems to be fairly robust towards tuning and suboptimality of the individual components, and larger improvements could likely be obtained with more effort put into hyperparameter optimization. Moreover it is not clear how one would even tune the \gls*{lqr} when its objective is to extend the viability of the \gls*{mpc} solution, aside from trial-and-error. One could therefore extend the role of \gls*{rl} in this architecture to also optimize and tune the other controllers, or even have it act as the simpler controller itself. This is left for future work.

\section{Preliminaries and Problem Formulation}\label{sec:theory}
\subsection{Model Predictive Control}
\gls*{mpc} is a control technique where the current control action is obtained by solving at each time step an open loop finite horizon \gls*{ocp} \eqref{eq:mpc}, where the initial state is given as the current state of the plant. The \gls*{mpc} solution consists of an input sequence minimizing the objective function over the optimization horizon, of which only the first input is applied to the plant, and the \gls*{ocp} is then computed again at the subsequent time step. We consider in this paper discrete time direct state feedback \gls*{mpc}, meaning the \gls*{mpc} gets exact measurements of the state of the plant at discrete time intervals, and the optimization variables are assumed constant between sampling instances.

\begin{subequations}\label{eq:mpc}
    \begin{align}
        \min_{x, u} \quad &\sum_{k=0}^{N-1}\left[\ell(x_k, u_k, \hat{p}_k) + \Delta u_k^\top D \Delta u_k \right] + m(x_N), \label{eq:mpc:obj}  \\
        \textrm{s.t. \quad} &x_0 = \bar{x} \label{eq:mpc:init} \\
        &x_{k+1} = \hat{f}(x_k, u_k, \hat{p}_k) \label{eq:mpc:dynamics} \\
        &H(x_k, u_k) \leq 0 \label{eq:mpc:H}

    \end{align}
\end{subequations}
Here, $x_k$ is the plant state vector at time $k$ and $\bar{x}$ is the measurement of these states, $u_k$ is the control input vector and $\Delta u_k = u_k - u_{k-1}$, $\hat{p}_k$ are time-varying parameters whose value is forecasted over the optimization horizon, $\hat{f}$ is the \gls*{mpc} model dynamics which may differ from the plant system dynamics $f$ due to unmodeled effects such as process noise $w_k$, $H$ is the constraint vector and $N$ is the optimization horizon length. The objective function consists of the stage cost $\ell(x_k, u_k, \hat{p}_k)$, which --- in addition to the input-change term discouraging bang-bang control --- is summed over every step of the optimization horizon except the last, and the end of horizon cost $m(x_N)$. The state and control inputs are subject to constraints, which must hold over the whole optimization horizon for the \gls*{mpc} solution to be considered feasible.

We propose in this paper to modify the traditional \gls*{mpc} approach by not statically recomputing the \gls*{mpc} solution at every time step, but instead to utilize a recomputation policy to select at each time step whether or not to recompute the \gls*{mpc} solution. This means that of the \gls*{mpc} input sequence $u_{k,\dots,k+N-1}$ computed at time $k$, not only the first input $u_k$  is applied but rather a variable number of inputs $u_{k, \dots, k + n}, \enspace n < N$  are applied sequentially to the plant at the corresponding time instance $i, \enspace k \leq i \leq k + n$, until the recomputation policy triggers the recomputation of the \gls*{mpc} solution at time $k + n$. We detail this recomputation policy next.

\iffalse
\subsection{Economic Model Predictive Control}
\Gls*{empc} is a generalization of the \gls*{mpc} framework in which the objective function $L$ is allowed to be any arbitrary continuous function, as opposed to the quadratic tracking objective that is typically employed with \glspl*{mpc}
\seb{To be precise, a ``regular" MPC has a cost function lower-bonded by a $K_\infty$ function. That may be a detail though.}
. The optimal system equilibrium is then not necessarily a minimum of the cost function, and this in turn means that solutions are not unique
\seb{Not unique in what sense? Note that EMPC may not be crucial here... we have an economic example, but that's not the main point.}
. Insert reasons as to why our system is related to EMPC and insert references?
\fi

\subsection{Event-triggered MPC}
The recomputation policy $\pi_\theta(a \thinspace | \thinspace s)$ is a stochastic policy parameterized by $\theta$, defining a probability distribution over a binary output action, $a$, where $a_k = 1$ corresponds to recomputing the \gls*{mpc} solution at step $k$ and $a_k = 0$ corresponds to not recomputing it. The recomputation policy $\pi_\theta$ receives a state $s$ that is not simply the real system state $x$ because $\pi_\theta$ depends on the state of the system when the \gls*{mpc} was last recomputed. For classical \gls*{rl} theory to apply for $\pi_\theta$ the state $s$ must be a Markov state. We will therefore define next an augmented state space $\mathcal{S}$ that does have this property.

Assume that the \gls*{mpc} solution delivers an input sequence $u_{k,\ldots,k+N-1}$ associated to a measured state $\bar{x}_k$, at time instant $k$ and that the sequence $u_{k,\ldots,k+n}$ is applied to the system. The inputs received by the plant in the time interval $k,\ldots,k+n$ are then a function of state $\bar x_k$ at time $k$. Since $n\in \left\{k,\ldots,N-1\right\}$ is not known a priori, one ought to generally view the control system stemming from the triggering policy and the \gls*{mpc} scheme as being a control law from an augmented state space, $\mathcal{S}$, containing 1. the current state of the system, 2. the state of the system when the last optimization took place, and 3. the number of time samples from which the last optimization took place. Labelling the current time of the system as $i$ and the last time when the optimization occurred as $k$, that augmented state reads as:
\begin{align}
s = \matr{c}{\tilde x_{i} \\ \tilde x_k  \\ i-k}
\end{align}
where $k \leq i \leq k+N-1$, and where $\tilde x_{i}$ has the real system dynamics, and where the deterministic state transition $\tilde x_k \leftarrow \tilde x_{i},\enspace k \leftarrow i$ occurs when $a_i = 1$ is drawn from the stochastic policy $\pi_\theta(a_i \thinspace | \thinspace s_i)$. The \gls*{mpc} control law actually deployed on the system then reads as
\begin{align}
    \pi^\mathrm{MPC}(s) = u^{\mathrm{MPC}}_{i-k}(\tilde x_k)
\end{align}
where $u^{\mathrm{MPC}}_{i-k}$ is the $i-k^\mathrm{th}$ element of the \gls*{mpc} solution solved for the initial state $\tilde x_k$.

The recomputation policy, and the \gls*{mpc} and \gls*{lqr} control laws together form a control system defining the inputs actually applied to the plant in a closed loop system. The control system and the plant dynamics together define the state transition dynamics in the augmented state space $\mathcal{S}$, where states $s$ does have the Markov property. The event-triggered \gls*{mpc} problem is therefore an \gls*{mdp} in the augmented state space $\mathcal{S}$, such that classic \gls*{rl} can be applied on $s$. In that context external parameters (forecasts) can be seen as being part of the states $\tilde x_k$, $\tilde x_i$.

\iffalse
\subsection{Linear Quadratic Regulator}
\seb{This section may not be needed if we need space. LQR is fairly well known.}
In this paper we consider the infinite horizon \gls*{lqr}, which is a special case of \gls*{mpc} where the constraints \eqref{eq:mpc:H} are removed, the cost is quadratic in state and input with no term for changes in input, the optimization horizon length $N$ is infinite and the the dynamics are assumed linear \eqref{eq:lqr:dynamics}. If further $A, B, Q, R$ are time-invariant, the optimal control law wrt. \eqref{eq:lqr:obj} can be computed as a constant gain matrix $K$ times the current state $x_k$ \eqref{eq:lqr:control_law}:
\begin{subequations}
    \begin{align}
        x_{k+1} &= A x_k + B u_k \label{eq:lqr:dynamics} \\
        L(z) &= \sum_{k=0}^\infty \left[ \frac{1}{2}x_{k+1}^\intercal Q x_{k+1} + \frac{1}{2}u_k^\intercal R u_k \right], \enspace Q \succ 0, \enspace R \succ 0 \label{eq:lqr:obj} \\
        u_k &= -K x_k \label{eq:lqr:control_law}
    \end{align}
\end{subequations}
\fi

\subsection{Reinforcement Learning}
The closed loop system \gls*{mdp} as described above is defined by the tuple $\langle \mathcal{S}$, $\mathcal{A}$, R, $\mathcal{T}$, $\mathcal{T}_0$, $\gamma \rangle$.  $\mathcal{S}$ is the set of states $s$, and $\mathcal{A} = \{0, 1\}$ is the set of actions. $\mathcal{T} : \mathcal{S} \times \mathcal{A} \rightarrow \mathcal{S}$ is the discrete-time transition function describing the probabilistic transitions between states as a function of time and actions, and $\mathcal{T}_0$ is a distribution of initial states. $R : \mathcal{S} \times \mathcal{A} \rightarrow \mathbb{R}$ is the cost function which assigns a scalar value to the states of the problem. Lastly, $\gamma \in \left[0, 1\right)$ is the discount factor weighing the relative importance of immediate and future costs.

We consider the episodic setting, where an episode consists of a sequence of states and actions of length $T$, denoted by $\tau = (s_0, a_0, s_1, a_1, \dots, s_T)$. We further define the return $G(\tau) = \gamma^T R(s_T) + \sum_{k=0}^{T-1} \gamma^k R_k(s_k, a_k)$
as the total cost of the episode, where $R(s_T)$ is a terminal state cost. \gls*{rl} encompasses a set of algorithms to generate policies $\pi : \mathcal{S} \rightarrow \mathcal{A}$ with the goal of finding the optimal policy $\pi^*$ that optimizes the \gls*{rl} objective which in this setting can be formulated as \eqref{eq:rl:J}.

\begin{subequations}
    \begin{align}
        J(\pi) = \mathbb{E} \left[G(\tau) \thinspace | \thinspace \pi\right] \label{eq:rl:J} \\
        \pi^* = \max_\pi J(\pi)
    \end{align}
\end{subequations}

The expectation in \eqref{eq:rl:J} is taken over the initial state distribution, the probabilistic transition function, and the possibly stochastic policy $\pi$.

\subsubsection{Policy Gradients}
Policy gradient algorithms is a family of \gls*{rl} methods that directly optimize the parameters $\theta$ of parameterized policies $\pi_\theta$ by estimating the gradient of the policy performance index $J$ with respect to $\theta$, and using a gradient descent scheme to minimize the objective \eqref{eq:rl:J}. The policy gradient is given by \citep{sutton_reinforcement_2018}:
\begin{subequations}
    \begin{align}
        \nabla_\theta J(\pi_\theta) &= \mathbb{E}\left[A_{\pi_\theta}(\tau) \nabla_\theta \log\pi_\theta(\tau) \right] \\
        \theta &\leftarrow \theta + \alpha \nabla_\theta J(\pi_\theta)
    \end{align}
\end{subequations}
Where $A_{\pi_\theta}(\tau)$ is the advantage function describing the relative value of states with respect to the costs obtained over the future trajectory generated by $\pi_\theta$ from the state in question. $A(\tau)$ is often replaced by other functions of the costs depending on the algorithm, e.g. by $G(\tau)$ for ``vanilla" policy gradient. Policy gradient algorithms can therefore intuitively be interpreted as adjusting the log likelihood of actions such that actions that lead to lower costs are more likely to be chosen. This gradient relies on access to the costs for the states and actions in the trajectory, which is obtained by sampling trajectories from the plant. Policy gradient methods have good convergence guarantees in theory, but since it is a sampling based approach it suffers from high variance in the gradient estimates in practice \citep{peters_reinforcement_2008}.

\subsubsection{Policy Representation}
As the action space of the policy $\pi_\theta$ in our method is binary we represent the policy as a logistic regression model. In the logistic model, the logarithm of the odds of a binary dependent variable taking on a given value is modeled as a linear combination of the input variables \eqref{eq:logreg_probs}

\begin{align}
        &\pi_\theta(0 \thinspace | \thinspace s) = \frac{1}{1 + e^{-\theta^\intercal s}}, \enspace \pi_\theta(1 \thinspace | \thinspace s) = 1 - \pi_\theta(0 \thinspace | \thinspace s) \label{eq:logreg_probs}
\end{align}

\iffalse
\begin{subequations}
    \begin{align}
        &\pi_\theta(0 \thinspace | \thinspace s) = \frac{1}{1 + e^{-\theta^\intercal s}}, \enspace \pi_\theta(1 \thinspace | \thinspace s) = 1 - \pi_\theta(0 \thinspace | \thinspace s) \label{eq:logreg_probs} \\
        &\nabla_\theta \log \pi_\theta(a \thinspace | \thinspace s) = \begin{cases}
                                                s-s\pi_\theta(0 \thinspace | \thinspace s) &\textrm{if } a = 0 \\
                                                -s\pi_\theta(0 \thinspace | \thinspace s) &\textrm{if } a = 1
                                             \end{cases} \label{eq:logreg_grad}
    \end{align}
\end{subequations}
\fi

\section{Case Studies}\label{sec:experiments}
\subsection{Systems}
\iffalse
\subsubsection{Double integrator}
We start by analyzing the proposed architecture in a simple system with just enough complexity to highlight the different aspects of the architecture. For this purpose we use the double integrator system where the plant has additive unmeasured process disturbance. When the disturbance is zero-mean Gaussian noise, the \gls*{lqg} controller arises as the optimal solution. For the \gls*{mpc} to serve a purpose for this system we therefore focus on Gaussian noise with nonzero-mean, and further we randomly draw upper and lower constraints on the controlled state $x_1$ that may make the desired setpoint $x_{1_r}$ lie outside the feasible region. As a further complication we randomize the plant's model parameters a and b in each episode, while we keep the \gls*{mpc} and \gls*{lqr} models fixed on the expected values as in \eqref{eq:2nd:x1} and \eqref{eq:2nd:x2}. These discrepancies in the \gls*{mpc} model combined with the unmeasured disturbances motivates the use of the \gls*{lqr} to account for errors in the predicted state trajectories

Since this is a simple tracking problem, we use a quadratic tracking cost as a baseline for control performance, and add costs for violating state constraints and a cost for computing the \gls*{mpc} solution, as shown in \eqref{eq:2nd:L}. Here $\Delta C_*$ is the distance to the constraint limit (negative when on feasible side, positive when infeasible).

\begin{subequations}
    \begin{align}
        x_{1_{k+1}} &= x_{1_k} + a \cdot x_{2_k}, \quad a \in \mathcal{U}(0.2, 0.4), \enspace \Bar{a} = 0.3 \label{eq:2nd:x1} \\
        x_{2_{k+1}} &= b \cdot u_k + 0.1 \cdot \mathcal{N}(0.3, 1),  \quad b \in \mathcal{U}(0.2, 0.4), \enspace \Bar{b} = 0.3 \label{eq:2nd:x2} \\
        -3 &\leq u \leq 3 \\
        c_{l_{x_1}} &\leq x_1 \leq c_{l_{x_1}} \\

        \ell(x_k, u_k, p_k) &= 10 (x_{1_r} - x_{1_k}) + 25 \cdot \max(0, \Delta H(x_k)) \\ \label{eq:2nd:L}
        m(x_N) &= \ell(x_N) \\
        R_k(s_k, a_k) &= \ell(x_k, u_k, p_k) + 0.5 \cdot a_k \\
        s_k &= \left[x_{1_k}, x_{2_k}, \epsilon_{x_{1_k}}, \epsilon_{x_{2_k}}, \Delta c_{l_{x_1}}, \Delta c_{l_{x_1}}, \Delta MPC_k / N \right] \\
        Q_{lqr} &= R_{lqr} = diag(1, 1)
    \end{align}
\end{subequations}

\fi

\subsubsection{Cart Pendulum}
We first look at a nonlinear system where the quality of the \gls*{mpc} control input is considerably better than that of the \gls*{lqr}. For this purpose we use the well studied classical control task of balancing an inverted pendulum mounted on a small cart. This system represents the problem of embedded control of battery powered systems where the \gls*{mpc} is needed for sufficient control performance but its computation accounts for a substantial part of the total battery resources available.

The state space consists of $x_k = \left[\eta, v, \beta, \omega \right]^\intercal$ which is position and velocity of cart along horizontal axis, and angle of pendulum to the vertical axis and angular velocity of the pendulum, respectively. We discretize the system equations in (\ref{eq:cartpend:pos}-\ref{eq:cartpend:lqr}) with step time $k = 0.1s$, and add unmeasured process disturbance $w_k = \left[0, 0, 0, \mathcal{N}(0, 1)\right]^\intercal$, which means that feedback control from the \gls*{lqr} is a necessary addition to the \gls*{mpc} plan to stabilize the pendulum. We sample initial states according to $x_0 = \left[0, \mathcal{U}(-1, 1), \mathcal{U}(-0.78, 0.78), \mathcal{U}(-1, 1)\right]^\intercal$, where $\mathcal{U}$ is the uniform distribution, and put constraints on the input $-25 \leq u_k \leq 25$, which is a force applied to the cart along the horizontal axis. Finally, the physical parameters are the pendulum length and weight, $l = 1, \enspace m=0.1$, the total weight of the cart and the pendulum, $M = 1.1$, and the gravitational acceleration, $g = 9.81$.

The \gls*{mpc} is configured with $N = 20,\thinspace D = 10^{-4},\thinspace \ell(x_k, u_k, p_k) = \beta_k^2,\thinspace m(x_N) = \beta_N^2$. This objective function promotes stabilization of the pendulum, while the \gls*{rl} policy cost function $R_k(s_k, a_k) = \beta_k^2 + 5\cdot10^{-5} a_k$ has an additional objective to minimize computation. The \gls*{lqr} is based on a fixed linearized model \eqref{eq:cartpend:lqr} obtained by using the small angle approximation, while its cost matrices are $Q_{lqr} = diag(0, 1, 10, 10),\thinspace R_{lqr} = 0.1$.

\iffalse
\begin{table}[htbp]
    \centering
    \ra{1.2}
    \begin{tabular}{crcl}\toprule
        Symbol & Value & Unit & Description \\ \midrule
        $\eta$ & N/A & m & Position of cart along horizontal axis \\
        $v$ & N/A & m/s & Velocity of cart along horizontal axis \\
        $\beta$ & N/A & rad & Angle of pendulum to upright position \\
        $\omega$ & N/A & rad/s & Angular velocity of pendulum \\
        $u$ & N/A & N & Force applied to the cart along horizontal axis \\
        $m$ & 0.1 & kg & Weight of pendulum \\
        $M$ & 1.1 & kg & Sum of weight of cart and pendulum \\
        $l$ & 1 & m & Length of pendulum \\
        $g$ & 9.81 & $m/s^2$ & Gravitational acceleration \\
        \bottomrule
    \end{tabular}
    \caption{Parameters of the cart pendulum system}
    \label{tab:cartpend_params}
\end{table}
\fi

\begin{subequations}
    \begin{align}
        \dot{\eta} &= v \label{eq:cartpend:pos}, \enspace \dot{v} = \frac{m g sin(\beta) cos(\beta) - \frac{4}{3}(u + m  l  \omega ^ 2 sin(\beta))}{m cos^2(\beta) - \frac{4}{3} M} \\
        \dot{\beta} &= \omega, \enspace \dot{\omega} = \frac{M  g  sin(\beta) - cos(\beta)  (u + m  l  \omega ^ 2  sin(\beta))}{\frac{4}{3} M  l - m  l  cos^2(\beta)} \label{eq:cartpend:omega} \\
        \dot{\epsilon}_x &= \begin{bmatrix}
        0 & 1 & 0 & 0 \\
        0 & 0 & -\frac{m g}{4/3 M - m} & 0 \\
        0 & 0 & 0 & 1 \\
        0 & 0 & \frac{M g}{l(4/3 M - m)} & 0
        \end{bmatrix} \epsilon_x + \begin{bmatrix}
        0 \\
        \frac{1}{M - 3/4 m} \\
        0 \\
        \frac{-1}{l (4/3 M - m)}
        \end{bmatrix} u^{\mathrm{LQR}} \label{eq:cartpend:lqr}
    \end{align}
\end{subequations}

\subsubsection{Battery Storage}
\iffalse
\begin{table}[htbp]
    \centering
    \begin{tabular}{crcl}
        \toprule
        Symbol & Value & Unit & Description \\ \midrule
        $x$ & N/A & 1 & Battery state of charge \\
        $u$ & N/A & kW & Trading of power (selling is positive, buying is negative)\\
        $P$ & N/A & kW & Sum of external production and consumption of charge \\
        $C$ & 10 & kWh & Battery capacity \\
        $\delta$ & 10 / 3600 & h & Sampling time (in hours) \\
        $\lambda_e$ & N/A & \$ / kWh & Price of electricity \\
        $\eta_c$ & 0.1 & kW & \gls*{mpc} computation power consumption \\
        \bottomrule
    \end{tabular}
    \caption{Parameters of the battery storage system}
    \label{tab:battery_params}
\end{table}
\fi

The battery storage system models the trading of electricity from a battery storage that is subject to quickly changing electricity prices as well as uncertain production and consumption from the electricity grid it is connected to \eqref{eq:battery}. Here, $x_k$ is the state of charge, i.e. the fraction of available battery capacity, $C = 10$ kWh is the total battery capacity, $u_k$ is the trading of power from the battery on the market where $u_k > 0$ represents selling and $u_k < 0$ is buying. $P_k$ is the sum of production and consumption on the power grid, and $\lambda_{e_k}$ is the time-varying price of electricity.

This is an economic problem where the objective is to maximize the profit of the battery storage through the sum of trading $\ell(x_k, u_k, p_k) = \lambda_{e_k} u_k$ and the potential of the storage $m(x_N) = \bar{\lambda_e} C x_N, \thinspace R_k(s_k, a_k) = \lambda_{e_k} u_k \delta + \bar{\lambda_e} C x_T$, where $\bar{\lambda_e} = \mathbb{E}[\lambda_e]$ is the average price of electricity. The \gls*{mpc} has an optimization horizon of 20 time steps, $N = 20$. In this problem we look at fast trading, i.e. $\delta = 10s$, which is dominated by the balance market. Spot prices are evaluated every hour and fixed for the duration, while the prices are highly stochastic and vary around the spot prices on the balance market due to e.g. unforeseen errors on the grid. The control system receives forecast for the future production and consumption as well as the expected price of electricity. It then needs to plan whether to save up electricity for better times ahead or sell surplus charge for a good price. We assume that when the \gls*{mpc} solution is computed it runs for the whole sampling interval on a computer consuming $\eta_c = 100$W from the battery, modeled through the $\eta_c a_k$ term in \eqref{eq:battery}. Lastly, only 10\% of the battery capacity can be traded in a single window \eqref{eq:battery:c_u}, with no cost for changing amount between windows, $D = 0$. The \gls*{lqr} accounts for errors in the forecasted production and consumption, as well as the consumption from the \gls*{mpc} computation itself which is not part of the \gls*{mpc} model \eqref{eq:battery:lqr}, $Q_{lqr} = 1, \thinspace R_{lqr} = 0.1$.

\begin{figure}[htbp]
\floatconts
    {fig:forecasts
    {\caption{Simulated values for production and electricity prices in the battery storage system, along with forecasts generated by \gls*{rl} policy and the every t = 20 baseline policy. The crosses mark an \gls*{mpc} computation, showing how forecast accuracy decreases with time.}
    {\includegraphics[width=1\textwidth]{figs/battery_forecast_comparison.pdf}}
\end{figure}

The uncertainty in this problem lies in the forecasts of the time-varying parameters, $P_k$ and $\lambda_ {e_k}$. These grow more unreliable the further ahead in time we forecast, and as such the plan generated by the \gls*{mpc} becomes less and less optimal. The true values of the time-varying parameters are generated by sampling a base value with varying duration, representing the changing power demands due to events as described above, with an additive \gls*{ou} process. Further, forecasts are generated by assuming the base value is constant over the forecast length and adding a second \gls*{ou} noise process whose strength is linearly scaled with forecast length, see figure \ref{fig:forecasts}.

\begin{remark}
$P$ and $\lambda_e$ are not based on real historical data, and are generated with the aim of emulating the market as described above and to produce a non-trivial test problem.
\end{remark}

\begin{subequations}
    \begin{align}
        x_{k+1} &= x_k - \frac{\delta}{C}(u_k - P_k - \eta_c a_k), \enspace 0 \leq x_k \leq 1  \label{eq:battery} \\
        -\frac{0.1C}{\delta} &\leq u_k \leq \frac{0.1C}{\delta} \label{eq:battery:c_u} \\
        \epsilon_{x_{k+1}} &= \epsilon_{x_k} -\frac{1}{C} \delta u^{\mathrm{LQR}}_k \label{eq:battery:lqr}
    \end{align}
\end{subequations}

\subsection{Baseline Policies}
To assess the quality of the \gls*{rl} policy we compare the learned policy to the fixed baseline policies: standard \gls*{mpc} ($\pi(a_k \thinspace | \thinspace s_k) \equiv 1)$, never recomputing until end of horizon ($\pi(a_k \thinspace | \thinspace s_k) \equiv 0$), and recomputing on a fixed static schedule every $t$ time steps ($\pi^t(a_k \thinspace | \thinspace s_k) = (k \mod t = 0))$.

\begin{remark}
We experimented with early termination \gls*{mpc} based on maximum allowed iterations as well as optimality tolerance, but its performance was considerably worse than the other approaches and as such it is not included. Early termination would likely perform better with a sequential quadratic programming (SQP) based optimizer that exploits warm start more efficiently than Ipopt.
\end{remark}

\subsection{Training and Evaluation}
We train and evaluate the policies in an episodic setting, where an episode consists of 100 time steps with randomly generated initial conditions, process-noise, time-varying parameters etc. as discussed above for each system. The \gls*{rl} state $s$ is augmented with a squared version of each component, and the whole state vector is normalized before being fed to the policy. To evaluate the policies and minimize the effects of the random variables on the results, we construct a test set for each system consisting of 100 episodes where all random variables are drawn in advance such that the episode is consistent across policy evaluations. To account for the inherent stochasticity of the \gls*{rl} policy, we evaluate the policy five times over the test set and report mean results. We use the undiscounted return $G(\tau), \enspace \gamma = 1$ as the objective value to compare policies on the episode $\tau$ and average these returns over the test set.

As the objective of the policy is to learn when it is viable to not recompute the \gls*{mpc} solution, we initialize the \gls*{rl} policy to (with high probability) mimic the standard \gls*{mpc} approach and always elect to recompute. For both systems we train with $\gamma = 0.975$ and a learning rate of $\alpha = 0.05$.

redpajama_set_name: RedPajamaArXiv


We are a (double) BAFTA winning video production company who will handle your project beautifully, whether it's large or small. We are a 360˚ organisation who can take your project from start to finish, or pick it up from any point on its journey from conception to delivery. We are small and lithe - and therefore economical - but can grow to any size necessary, with a list of trusted freelancers that we've seriously road tested. Please, take a look around the site - look at some of our work, drop us a line or subscribe to our newsletter.
Sign up with your email address to receive notifications of our blog releases and an occasional newsletter. We hate spam more than most - we won't be hassling you. Honest.
We respect your privacy. Should you wish to unsubscribe it's dead easy - and we won't take it personally.
© 2016 Nicely Wrapped Films. All rights reserved.


text:
"""Undocumented Module"""

__all__ = ['DirectLabel']

from panda3d.core import *
from DirectFrame import *

class DirectLabel(DirectFrame):
    """
    DirectLabel(parent) - Create a DirectGuiWidget which has multiple
    states.  User explicitly chooses a state to display
    """
    def __init__(self, parent = None, **kw):
        # Inherits from DirectFrame
        # A Direct Frame can have:
        # - A background texture (pass in path to image, or Texture Card)
        # - A midground geometry item (pass in geometry)
        # - A foreground text Node (pass in text string or Onscreen Text)
        # For a direct label:
        # Each label has 1 or more states
        # The same image/geom/text can be used for all states or each
        # state can have a different text/geom/image
        # State transitions happen under user control

        optiondefs = (
            # Define type of DirectGuiWidget
            ('pgFunc',          PGItem,    None),
            ('numStates',       1,         None),
            ('state',           self.inactiveInitState, None),
            ('activeState',     0,         self.setActiveState),
            )
        # Merge keyword options with default options
        self.defineoptions(kw, optiondefs)

        # Initialize superclasses
        DirectFrame.__init__(self, parent)

        # Call option initialization functions
        self.initialiseoptions(DirectLabel)

    def setActiveState(self):
        """ setActiveState - change label to specifed state """
        self.guiItem.setState(self['activeState'])

redpajama_set_name: RedPajamaGithub


An issue that comes up rather frequently for new installations of Kubernetes is that a Service is not working properly. You've run your Deployment and created a Service, but you get no response when you try to access it. This document will hopefully help you to figure out what's going wrong.
Does the Service work by DNS?
Does the Service work by IP?
Does the Service have any Endpoints?
Throughout this doc you will see various commands that you can run. Some commands need to be run within a Pod, others on a Kubernetes Node, and others can run anywhere you have kubectl and credentials for the cluster. To make it clear what is expected, this document will use the following conventions.
For the purposes of this walk-through, let's run some Pods. Since you're probably debugging your own Service you can substitute your own details, or you can follow along and get a second data point.
kubectl commands will print the type and name of the resource created or mutated, which can then be used in subsequent commands.
The astute reader will have noticed that we did not actually create a Service yet - that is intentional. This is a step that sometimes gets forgotten, and is the first thing to check.
Resolving hostnames (hostnames)... failed: Name or service not known.
So we have a culprit, let's create the Service. As before, this is for the walk-through - you can use your own Service's details here.
Now you can confirm that the Service exists.
Note the suffix here: "default.svc.cluster.local". The "default" is the Namespace we're operating in. The "svc" denotes that this is a Service. The "cluster.local" is your cluster domain, which COULD be different in your own cluster.
Note: 10.0.0.10 is my DNS Service, yours might be different).
If you are able to do a fully-qualified name lookup but not a relative one, you need to check that your /etc/resolv.conf file is correct.
The nameserver line must indicate your cluster's DNS Service. This is passed into kubelet with the --cluster-dns flag.
The search line must include an appropriate suffix for you to find the Service name. In this case it is looking for Services in the local Namespace (default.svc.cluster.local), Services in all Namespaces (svc.cluster.local), and the cluster (cluster.local). Depending on your own install you might have additional records after that (up to 6 total). The cluster suffix is passed into kubelet with the --cluster-domain flag. We assume that is "cluster.local" in this document, but yours might be different, in which case you should change that in all of the commands above.
The options line must set ndots high enough that your DNS client library considers search paths at all. Kubernetes sets this to 5 by default, which is high enough to cover all of the DNS names it generates.
Does any Service exist in DNS?
If this fails, you might need to go to the kube-proxy section of this doc, or even go back to the top of this document and start over, but instead of debugging your own Service, debug DNS.
Assuming we can confirm that DNS works, the next thing to test is whether your Service works at all. From a node in your cluster, access the Service's IP (from kubectl get above).
If your Service is working, you should get correct responses. If not, there are a number of things that could be going wrong. Read on.
Is the port you are trying to access in spec.ports? Is the targetPort correct for your Pods (many Pods choose to use a different port than the Service)? If you meant it to be a numeric port, is it a number (9376) or a string "9376"? If you meant it to be a named port, do your Pods expose a port with the same name? Is the port's protocol the same as the Pod's?
If you got this far, we assume that you have confirmed that your Service exists and is resolved by DNS. Now let's check that the Pods you ran are actually being selected by the Service.
The "AGE" column says that these Pods are about an hour old, which implies that they are running fine and not crashing.
The -l app=hostnames argument is a label selector - just like our Service has. Inside the Kubernetes system is a control loop which evaluates the selector of every Service and saves the results into an Endpoints object.
This confirms that the endpoints controller has found the correct Pods for your Service. If the hostnames row is blank, you should check that the spec.selector field of your Service actually selects for metadata.labels values on your Pods. A common mistake is to have a typo or other error, such as the Service selecting for run=hostnames, but the Deployment specifying app=hostnames.
At this point, we know that your Service exists and has selected your Pods. Let's check that the Pods are actually working - we can bypass the Service mechanism and go straight to the Pods.
Note: These commands use the Pod port (9376), rather than the Service port (80).
We expect each Pod in the Endpoints list to return its own hostname. If this is not what happens (or whatever the correct behavior is for your own Pods), you should investigate what's happening there. You might find kubectl logs to be useful or kubectl exec directly to your Pods and check service from there.
Another thing to check is that your Pods are not crashing or being restarted. Frequent restarts could lead to intermittent connectivity issues.
If the restart count is high, read more about how to debug pods.
If you get here, your Service is running, has Endpoints, and your Pods are actually serving. At this point, the whole Service proxy mechanism is suspect. Let's confirm it, piece by piece.
I1027 22:14:53.995134    5063 server.go:200] Running in resource-only container "/kube-proxy"
I1027 22:14:53.998163    5063 server.go:247] Using iptables Proxier.
I1027 22:14:53.999055    5063 server.go:255] Tearing down userspace rules. Errors here are acceptable.
If you see error messages about not being able to contact the master, you should double-check your Node configuration and installation steps.
One of the possible reasons that kube-proxy cannot run correctly is that the required conntrack binary cannot be found. This may happen on some Linux systems, depending on how you are installing the cluster, for example, you are installing Kubernetes from scratch. If this is the case, you need to manually install the conntrack package (e.g. sudo apt install conntrack on Ubuntu) and then retry.
Is kube-proxy writing iptables rules?
One of the main responsibilities of kube-proxy is to write the iptables rules which implement Services. Let's check that those rules are getting written.
The kube-proxy can run in "userspace" mode, "iptables" mode or "ipvs" mode. Hopefully you are using the "iptables" mode or "ipvs" mode. You should see one of the following cases.
There should be 2 rules for each port on your Service (just one in this example) - a "KUBE-PORTALS-CONTAINER" and a "KUBE-PORTALS-HOST". If you do not see these, try restarting kube-proxy with the -V flag set to 4, and then look at the logs again.
Almost nobody should be using the "userspace" mode any more, so we won't spend more time on it here.
There should be 1 rule in KUBE-SERVICES, 1 or 2 rules per endpoint in KUBE-SVC-(hash) (depending on SessionAffinity), one KUBE-SEP-(hash) chain per endpoint, and a few rules in each KUBE-SEP-(hash) chain. The exact rules will vary based on your exact config (including node-ports and load-balancers).
IPVS proxy will create a virtual server for each service address(e.g. Cluster IP, External IP, NodePort IP, Load Balancer IP etc.) and some corresponding real servers for endpoints of the service, if any. In this example, service hostnames(10.0.1.175:80) has 3 endpoints(10.244.0.5:9376, 10.244.0.6:9376, 10.244.0.7:9376) and you'll get results similar to above.
If this fails and you are using the userspace proxy, you can try accessing the proxy directly. If you are using the iptables proxy, skip this section.
If you don't see those, try restarting kube-proxy with the -V flag set to 4, and then look at the logs again.
This can happen when the network is not properly configured for "hairpin" traffic, usually when kube-proxy is running in iptables mode and Pods are connected with bridge network. The Kubelet exposes a hairpin-mode flag that allows endpoints of a Service to loadbalance back to themselves if they try to access their own Service VIP. The hairpin-mode flag must either be set to hairpin-veth or promiscuous-bridge.
Confirm hairpin-mode is set to hairpin-veth or promiscuous-bridge. You should see something like the below. hairpin-mode is set to promiscuous-bridge in the following example.
Confirm the effective hairpin-mode. To do this, you'll have to look at kubelet log. Accessing the logs depends on your Node OS. On some OSes it is a file, such as /var/log/kubelet.log, while other OSes use journalctl to access logs. Please be noted that the effective hairpin mode may not match --hairpin-mode flag due to compatibility. Check if there is any log lines with key word hairpin in kubelet.log. There should be log lines indicating the effective hairpin mode, like something below.
I0629 00:51:43.648698    3252 kubelet.go:380] Hairpin mode set to "promiscuous-bridge"
Seek help if none of above works out.
If you get this far, something very strange is happening. Your Service is running, has Endpoints, and your Pods are actually serving. You have DNS working, iptables rules installed, and kube-proxy does not seem to be misbehaving. And yet your Service is not working. You should probably let us know, so we can help investigate!
Contact us on Slack or Forum or GitHub.
Visit troubleshooting document for more information.


Square Enix Forums > Eidos Classics > Eidos Games Archive > TimeSplitters Series > TimeSplitters - General Discussion - Archive > 3 part ?
View Full Version : 3 part ?
What is the point of this level. And how Can I beat it?
It says to blow up the barrels but I tried and nothing happens, again any suggestions?
For Where do the batteries go you unlock R-One-Oh-Seven if you get a silver or better. For Superfly Lady you unlock Capt. Pain for a Gold medal.
For all of the TimeSplitters Story Classics the goal is to run to the end of the level, grab the pickup item, and run back to the beginning of the level.
The barrels are the three behind the each wheel of the plane in the hangar.


text:
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Cocos2D;

namespace tests
{
    /// <summary>
    /// This is the main type for your game
    /// </summary>
    public class Game1 : Game
    {
        private readonly GraphicsDeviceManager graphics;

        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);

            Content.RootDirectory = "Content";

            graphics.IsFullScreen = false;
            graphics.PreferredDepthStencilFormat = DepthFormat.Depth24Stencil8;

#if WINDOWS || MACOS
            graphics.PreferredBackBufferWidth = 1024;
            graphics.PreferredBackBufferHeight = 768;
#endif

            // Frame rate is 30 fps by default for Windows Phone.
            // Divide by 2 to make it 60 fps
            TargetElapsedTime = TimeSpan.FromTicks(333333 / 2);
            IsFixedTimeStep = true;

            IsMouseVisible = true;

            // Extend battery life under lock.
            //InactiveSleepTime = TimeSpan.FromSeconds(1);

            CCApplication application = new AppDelegate(this, graphics);
            Components.Add(application);

#if !WINDOWS_PHONE && !XBOX && !WINRT && !WINDOWSDX && !NETFX_CORE
            //GamerServicesComponent component = new GamerServicesComponent(this);
            //this.Components.Add(component);
#endif
        }

        void graphics_DeviceCreated(object sender, EventArgs e)
        {
            CCLog.Log("Graphics device was created!");
        }

#if OUYA
        protected override void Draw(GameTime gameTime)
        {
            base.Draw(gameTime);
            CCDrawManager.spriteBatch.Begin();
            float y = 15;
            for (int i = 0; i < 4; ++i)
            {
                GamePadState gs = GamePad.GetState((PlayerIndex)i, GamePadDeadZone.Circular);
                string textToDraw = string.Format(
                    "Pad: {0} Connected: {1} LS: ({2:F2}, {3:F2}) RS: ({4:F2}, {5:F2}) LT: {6:F2} RT: {7:F2}",
                    i, gs.IsConnected,
                    gs.ThumbSticks.Left.X, gs.ThumbSticks.Left.Y,
                    gs.ThumbSticks.Right.X, gs.ThumbSticks.Right.Y,
                    gs.Triggers.Left, gs.Triggers.Right);

                CCDrawManager.spriteBatch.DrawString(CCSpriteFontCache.SharedInstance.GetFont("arial-20"), textToDraw, new Vector2(16, y), Color.White);
                y += 25;
            }
            CCDrawManager.spriteBatch.End();

        }
#endif

        protected override void Update(GameTime gameTime)
        {
            // Allows the game to exit
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                Exit();

            // TODO: Add your update logic here

            base.Update(gameTime);
        }
    }
}


text:
Landesbank Baden-Wuerttemberg
Landesbank Baden-Wuerttemberg - Mortgage Covered Bonds (11/30/1998 - 12/08/2004)
Landesbank Baden-Wuerttemberg - Public-Sector Covered Bonds (06/17/1993 - 03/15/1999)
Credit Opinion: Landesbank Baden-Wuerttemberg: Update following rating affirmation
Credit Opinion: Landesbank Baden-Wuerttemberg: Update to credit analysis
Issuer Profile: Landesbank Baden-Wuerttemberg: Key Facts and Statistics - H1 2020
Announcement of Periodic Review: Moody's announces completion of a periodic review of ratings of Landesbank Baden-Wuerttemberg
MOODY'S ASSIGNS Aaa/Aaa PUBLIC-SECTOR AND MORTGAGE PFANDBRIEF RATINGS TO LANDESBANK BADEN-WUERTTEMBERG
Moody's Investors Service assigned Aaa debt ratings to a number of Public-Sector Pfandbriefe issued by Landesbank Baden-Wuerttemberg (LBW) and Aaa debt ratings to a number of Mortgage Pfandbriefe issued by the former Suedwestdeutsche Landesbank GZ (SuedwestLB). SuedwestLB's liabilities have been fully assumed by the recently-created successor entity -- LBW.
According to Moody's, the Aaa Pfandbrief ratings are based on the support mechanisms of Anstaltslast (a maintenance obligation) and Gewaehrtraegerhaftung (a guarantee or statutory owners' obligation) provided jointly and severally by the state of Baden-Wuerttemberg, the city of Stuttgart, and the Savings Bank and Giro Associations of Baden and Wuerttemberg. Moody's said that it views these legal concepts as tantamount to a guarantee.
Landesbank Baden-Wuerttemberg, based in Stuttgart, Mannheim and Karlsruhe (Germany) is a public-law bank which was created through a three-way merger between SuedwestLB, the commercial arm of Landesbank Baden-Wuerttemberg and Landesgirokasse Stuttgart. LBW is the country's seventh largest banking group and ranks as the third largest Landesbank. The merged bank began operations on January 1, 1999 with estimated pro-forma consolidated assets of approximately DM 450 billion (US$ 270 billion).

redpajama_set_name: RedPajamaCommonCrawl


text:
New Future Alliance
Hello, My Name Is Michael Sieben
A VOLCOM FEATURED ARTIST FOR THE PAST 13 YEARS, MICHAEL SIEBEN WILL NOW SERVE AS VOLCOM GLOBAL ART CURATOR.
My first graphic was printed in 2004, the same year I got hired by Thrasher magazine as a contributing writer and illustrator. In hindsight, '04 freaking ruled. This January, I was hired by Volcom to serve as their Global Art Curator. Part of these duties include curating the Volcom Garden, a new art space at 1209 E. 6th Street in Austin, TX. I have over eight years experience running commercial galleries in Austin. I co-owned Camp Fig, a shotgun gallery space on West 5th Street, back in the early 2000s. More recently, I co-owned Okay Mountain gallery (2006-2012). We had two physical locations: one just off Cesar Chavez and one on it. I'm stoked to once again have the opportunity to curate shows for my city, showcasing local work as well as bringing in art from across the U.S. and hopefully from an international pool once we're more established.
The first show held at The Garden was "Locally Sourced" and was comprised of all Austin-based artists. My goal was to fill the space with tons of friends and let my immediate creative circle know that there was a new space in town that can serve as a free creative hub in which to congregate. The show consists of 24 artists (including myself) and the opening reception was the largest event I've ever helped plan. Over 800 people came through the space over the course of five hours. Tim Kerr and Jerry Hagins (Up Around the Sun) performed music inside the gallery and Residual Kid closed out the night with an outside performance. It was an awesome way to introduce The Garden to the Austin community.
To celebrate the launch of The Garden and my new role with Volcom, we have reissued my very first t-shirt graphic, "Your Recommended Daily Allowance of Awesomeness". Originally, the graphic had a large front print with a small back print, but we updated the placement and the new version has the main graphic on the back with a small type treatment over the pocket area of the shirt. Different but the same. This shirt is only available (in very limited quantities) in The Garden and online at volcom.com as part of the Volcom Garden exclusives collection. You won't see it in any other shops, period.
Michael Sieben Volcom garden exclusive reissue tee! Sorry it's sold out online.
Michael Sieben is also the managing editor of Thrasher magazine, a monthly columnist with Juxtapoz magazine, owns his own skate brand, Program Skates, and is in chronic need of a haircut. See more at msieben.com or giving him a follow on Instagram at @sieben_up.


text:
Q: How to deploy an app the right way in ArgoCD via CLI? I installed ArgoCD in the kubernetes cluster and configure CLI.
When I create an application via UI — the application success deployed, when I try to deploy the application everything is running successfully. When I import YAMML and try to deploy the same application via CLI - nothing happens.
applicaition.yml:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: hashicorp-vault
  finalizers:
    - resources-finalizer.argocd.argoproj.io
spec:
  project: infra
  source:
    repoURL: "https://helm.releases.hashicorp.com"
    targetRevision: 0.23.0
    helm:
      values: |
        ui:
          enabled: true
        injector:
          enabled: false
        server:
          resources:
            requests:
              memory: 512Mi
              cpu: 250m
            limits:
              memory: 512Mi
              cpu: 250m
    chart: vault
  destination:
    server: "https://kubernetes.default.svc"
    namespace: vault
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

Apply:
> kubectl apply -f application.yaml

application.argoproj.io/hashicorp-vault created

Check via argocd cli:
> argocd app list

NAME  CLUSTER  NAMESPACE  PROJECT  STATUS  HEALTH  SYNCPOLICY  CONDITIONS  REPO  PATH  TARGET
— empty —

Check via kubectl:
> kubectl get application

NAME                   SYNC STATUS   HEALTH STATUS
hashicorp-vault

There is also nothing in the UI, there is no information in the logs either.
When I create an application through the interface, through CLI it is visible successfully.

redpajama_set_name: RedPajamaStackExchange


text:
Aug. 10, 2011 / 6:30 AM
Watercooler Stories
Rescuers end up lost in the woods
FALL RIVER, Mass., Aug. 10 (UPI) -- Authorities in Massachusetts said three rescuers searching for a lost woman in the forest ended up lost themselves when they found the woman.
Fall River police said two officers and an environmental officer began searching in the Freetown State Forest Monday night when a 25-year-old woman was reported lost in the preserve, WPRI-TV, Providence, R.I., reported Tuesday.
The officers found the woman safe at about 11:45 p.m., but the group soon discovered they did not know the way out of the woods, WCVB-TV, Boston, said.
The group was found by a Massachusetts State Police helicopter at about 12:10 a.m. and they were guided to safety.
No injuries were reported, police said.
$4,069 in keno tickets donated to church
ATLANTA, Aug. 10 (UPI) -- A Georgia church is thanking the anonymous donor who dropped three winning keno tickets, worth a total $4,069, into a collection plate.
The Unity North Atlanta Church in Marietta said the Georgia Lottery Keno tickets were dropped into the collection plate during a recent Sunday service, The Atlanta Journal-Constitution reported Tuesday.
"This is a first for us," church office manager Wendy Beck said.
Beck said church officials plan to put the funds toward the facility's mortgage and monthly bills.
Lottery officials said two of the tickets were purchased from a Quick Trip on North Cobb Parkway and the other was purchased from a Chevron Food Mart on Sandy Plains Road.
School bus driver fired after helping cops
NEW HYDE PARK, N.Y., Aug. 10 (UPI) -- A New York state school bus driver said he was fired for giving a ride to a pair of police officers whose car had flooded during a hailstorm.
George Daw said he was driving the Educational Bus Transport of Copiague vehicle in New Hyde Park during a hailstorm Aug. 1 with a teenage passenger and a bus matron on board when he came across the unmarked police car filling with water, NBC New York reported Tuesday.
"They're saying, you've got to help us, you've got to help us," Daw said of the two police detectives in the car. "You've got to get us to the third precinct. We're police officers."
"I felt they were in danger," Daw said.
The driver said he gave the detectives a lift to the station and filed a report with Educational Bus Transport, which fired him over the incident.
"We have policies and procedures in place to ensure the safety of the children we transport," company vice president Tim Flood said.
"When these policies and procedures are not followed, we will address them in an appropriate manner," Flood said. "This particular employee was not terminated solely because of the pick-up of unscheduled passengers."
Bat causes plane to turn around
MADISON, Wis., Aug. 10 (UPI) -- An Atlanta-bound plane returned to a Wisconsin airport when a bat was discovered on the flight moments after takeoff, an airport spokesman said.
Brett McHenry, spokesman for the Madison airport, said the Atlantic Southeast Airlines flight left the airport with 49 passengers at 6:45 a.m. Friday and pilots notified air traffic controllers the plane was returning at 7:08 a.m., the Wisconsin State Journal, Madison, reported Tuesday.
McHenry said the plane reversed its course after a bat was spotted flying around the cabin. The winged mammal was eventually trapped in a lavatory by a man sitting near the rear of the plane.
The spokesman said airport staff boarded the plane to get rid of the bat, but the animal managed to fly out the door and into the terminal. He said the bat was eventually coaxed out of the terminal and into the open air.
Passengers were allowed back onto the plane and it departed with a delay of a few hours, airline spokesman Jarek Beem said.
Odd News // 21 hours ago
Jan. 19 (UPI) -- A Siberian husky with an eyelid deformity was adopted from a New Jersey shelter after photos of the dog went viral on Facebook.
Odd News // 2 days ago
Men caught on camera hitching a ride on back of Baltimore bus
Jan. 17 (UPI) -- A traveler on a Maryland road captured video of two young men catching a free ride on the back of a Maryland Transit Administration bus.
Wife's need for a lighter leads man to $500,000 lottery prize
Jan. 17 (UPI) -- A Virginia man scored a $500,000 jackpot from a scratch-off lottery ticket thanks to his wife's need for a new lighter.
Crews rescue struggling dog from freezing Washington state river
Jan. 17 (UPI) -- Firefighters, police and animal rescuers responded to a freezing river in Washington state to save a dog that was unable to climb out of the water.
Two record-breaking fish reeled in by West Virginia anglers
Jan. 17 (UPI) -- West Virginia officials said a pair of anglers broke state records in the first two weeks the year with a 53.1-inch grass carp and a 49.84-inch blue catfish.
More than $40,000 found inside couch purchased from thrift store
Jan. 17 (UPI) -- A Michigan man who noticed something amiss about the couch he bought from a thrift store found more than $40,000 stashed inside a cushion.
Pigeon spotted in Nevada wearing tiny sombrero
Jan. 17 (UPI) -- Officials in a Nevada city said they are trying to find and rescue a pigeon seen wandering around with a sombrero apparently glued to its head.
Overturned truck releases 1,738 piglets onto Iowa highway
Jan. 17 (UPI) -- Police and animal rescuers responded to a highway in Iowa to round up more than 1,700 piglets that escaped from an overturned truck.
World's largest Snickers bar unveiled in Texas
Jan. 17 (UPI) -- Candy maker Mars Wrigley set a new Guinness World Record by producing a massive Snickers bar weighing in at 4,728 pounds.
Escaped horse rides city bus in Wales
Jan. 17 (UPI) -- A horse found running loose in the streets of the Welsh capital was captured by witnesses and loaded onto a bus for a brief ride.
Moments from the 2020 Critics' Choice red carpet


text:
The Cure in Auckland, NZ (07-21-16)
Vector Arena in Auckland, New Zealand
Show details & info / Sold out!
Doors at 6:30 PM / The Cure 8:20 - 11:24
No opening band tonight
Start times in the US are 1 am Pacific, 2 am Mountain, 3 am Central, 4 am Eastern
Setlist: Plainsong, Pictures of You, Closedown, High, A Night Like This, Push, In Between Days, Friday I'm in Love, Catch, The Caterpillar, The End of the World, Lovesong, Sleep When I'm Dead, Just Like Heaven, Jupiter Crash, From the Edge of the Deep Green Sea, Want, The Hungry Ghost, Prayers For Rain, Disintegration
1st encore: It Can Never Be The Same, Burn, One Hundred Years, A Forest
2nd encore: Shake Dog Shake, Fascination Street, Never Enough, Wrong Number
3rd encore: Lullaby, Hot Hot Hot, The Walk, Close To Me
4th encore: The Lovecats, Let's Go to Bed, Why Can't I Be You?, Boys Don't Cry
Huge Thank You to @Smeggar & @donnamattwant for set updates and photos, and to @aHundredYears & @fmjews74 for scope links!
Reviews: Libel / RadioNZ / Newshub / New Zealand Herald / Coup De Main / Stuff
Photos: Libel / Under the Radar
Videos: Jupiter Crash / Burn / Close to Me / Boys Don't Cry
Clips: Reeves on A Night Like This / Just Like Heaven / Close to Me / Simon ending A Forest
Periscopes: 1 - 2
Preview articles: Stuff 1 - 2
@CraigatCoF article in the Air NZ inflight magazine! pic.twitter.com/jizX2KjzX8
— Matt (@donnamattwant) July 20, 2016
4 #PMC #Pallets just arrived in #Aukland #NewZealand for #TheCureTour2016 #TheCure at #VectorArena @TheCureOfficial #SoundMoves #Freight #Logistics #Cargo
A photo posted by Sound Moves (@soundmovesworldwide) on Jul 20, 2016 at 5:44am PDT
Posted by Craig at 12:02 AM
Hmmm...I wonder if the Kiwis are in hibernation mode. It is, after all, the dead of winter in New Zealand right now.😴❄ Glad I checked COF...had forgotten that the show was tonight.. technically tomorrow morning. Looking forward to 1am. Looks like the show will end right around the time I usually go beddy-bye! 😴😌💤🐑 🌜
piggywigee July 21, 2016 at 4:07 AM
Wow...it looks like the beginning of this setlist is shaping up to be almost identical to Honolulu night two setlist...at least up until Catch, at which point it appears to diverge.
Marco July 21, 2016 at 5:28 AM
Fantastic first encore!
Marc the Cure July 21, 2016 at 8:43 AM
New songs!!!! Ugh!!! C'mon Robert surely it's time to give us another new one... love love love step into the light and especially it can never be the same
Keith July 21, 2016 at 2:00 PM
Agreed....and they seem to have dropped step into the light, in recent shows....I really hope that the "as yet unreleased "tracks don't amount to just those two songs only (good and all as they are)....it will be hugely disappointing to anyone who wants new music rather than constantly regurgitated setlists....i couldnt care less if i never heard push or edge of deep green sea live again...and dont get me started on wrong number
Marc the Cure July 21, 2016 at 3:56 PM
Lol...frankly a singles-less gig would be incredible even leaving out Charlotte, a night..., Lullaby, a Forest, the hg....
But leave in other voices
luca1977 July 23, 2016 at 11:01 AM
nofrets5 July 21, 2016 at 1:57 PM
Wow, Craig. Thank you for your dedication to post despite the time zone differences.
mrpinkeyes July 22, 2016 at 5:07 AM
I was hoping for more new songs than the two they have played so far. It can Never Be The Same could be a classic but I am holding back because great new live songs in the past have usually either been spoiled by production/mixing on record, ended up as only b sides, instead of duff album tracks, or worse never to be released at all.....I was hoping for a new album at least before the European tour, come on Smithy get your finger out, it's been nearly eight years!!
semitemos ettolrahc July 22, 2016 at 11:16 AM
Ya the more I think about it, Robert's really dug himself into quite a hole. After eight years the expectation is so effin high, how can he live up to it? I can't imagine being in his predicament. And the longer he waits, the deeper the hole. We believe in you Robert, don't be afraid, just give us what you got. You can do it! Best Cure album yet, right?
If theres no new album coming...I just dont understand the purpose of this world tour...we know he dislikes big tours, so why bother if youve nothing to promote.....other than ic you want to acd to the pension fund
sixcentral July 23, 2016 at 3:25 AM
Well he clearly doesnt dislike large tours or he wouldnt be doing this I would imagine, I too have been annoyed over time with things not coming out, but what can you do? we dont own them or have any right to command anything, I am personally super grateful to have seen them live again here in NZ, it was magnificent and Robert was super gracious!
semitemos ettolrahc July 23, 2016 at 12:41 PM
I was not claiming to own them nor commanding anything. I just stated an observation and tried to give some words of encouragement. I love that he likes to tour. I love seeing them tour. I haven't missed one since the 80's.
@sixcentral...its well documented that Robert doesnt like large tours, which is why he without fail said at the end of every one in the 80's/early 90's that that was the last one.
From an artistic point of view, this world tour doesn't have any sense. No new record, only 2 new songs..it's strange. But maybe they like to go aroung and just play their music. So, it's ok. Thanks. But it's not for free..i mean, i'm an old fan, and a Cure show costs about 100 euros. Why? Honestly if you dont have something special to "tell me" i stay at home and save money. I have almost all the cure record and stuff..but i dont care to attend to the same show forever..it's the same show of 2012..and 2011, and 2010..etc..
The Cure at Splendour in the Grass (07-23-16)
Help with upcoming shows?
Splendour in the Grass exit troubles
The AU picks their favorite Cure videos
Faster Louder ranks The Cure albums
Half price tickets for Adelaide & Perth
Remastered Glasgow Barrowlands 1984 show
Poster for Early Entry ticket holders
NZ and Australia merch
Simon in Auckland
Cure Day on Double J in Australia
Cure in Auckland, NZ show info
Bring back the danger!
The Cure For What Ails You
The Cure in Honolulu, HI (07-17-16)
Meet The Cure in Honolulu
Preview of Mauro's Honolulu night 1 photos


text:
17 Business Stories to Watch in 2017
Posted on January 5, 2017 January 5, 2017 by Lisa Ashkins MA, CNE® Broker Associate DRE#01764182 l Coldwell Banker West
By: San Diego Union Tribune, January 1, 20117 – Staff Writers
1: Nuclear energy
The San Onofre nuclear plant isn't producing electricity anymore, but it will still generate headlines in 2017. A state superior court will hear a lawsuit in March challenging a decision by the California Coastal Commission to store some 3.6 million pounds spent nuclear waste on the facility's site. And the original agreement shutting down the plant that left about 70 percent of costs on the shoulders of ratepayers is getting reviewed by the California Public Utilities Commission as well as in a case before a federal appeals court.
2: Qualcomm
Slowing smartphone sales have investors worried about long-term growth. Qualcomm rejected a break-up idea and got much larger, buying NXP Semiconductors and its share of the global automotive chip market, in a deal valued at $47 billion including the assumption of NXP debt. Now Chief Executive Steve Mollenkopf must integrate 44,000 NXP employees into Qualcomm's 30,000, as well as keep investing heavily in the world's transition to super-fast 5G technology.
Carlsbad's ViaSat has bet more than $1 billion that satellites have a place in providing more bandwidth to the world. In 2017 engineers plan to launch the $625 million ViaSat-2, bringing 300 gigabits of capacity to its network. That's about double the 140 gigabit capacity of ViaSat-1, which launched in 2011 and has about 700,000 residential subscribers, including Wi-Fi for commercial airlines such as American, JetBlue and United.
4: SeaWorld
When the Orlando-based company said in 2016 that it would end the captive breeding of orcas at its marine parks, the big question was whether that could revive the struggling business. San Diego will be on the vanguard in 2017 when it becomes the first of the three marine parks to replace Shamu with a show that focuses on the killer whales' natural behaviors in the wild. Shareholders will applaud if the move reverses falling revenue and attendance.
5: San Diego Convention Center
With the November defeat of the Chargers' ballot proposal to build a joint stadium and convention center downtown, backers of a contiguous expansion of the waterfront center are hoping to get the project back on track this year. But voters just rejected higher hotel taxes, and a lawsuit by attorney Cory Briggs challenges the legality of such construction in the coastal zone. Hoteliers have lots of persuading to do.
6. Ben Carson, home builder?
Life in San Diego County is heavily subsidized by the federal government, but that could change under Ben Carson, president-elect Donald Trump's pick to head the Department of Housing and Urban Development. The county gets roughly $250 million a year just for Section 8 vouchers, and developers use federal tax credits to build subsidized housing. Carson, who grew up in subsidized housing, is a vocal critic of government handouts and could change how San Diego houses its poor.
7. Mortgage rates
Mortgage rates have already gone up since the election, boosting payments and making homebuying less affordable. Rates for a typical 30-year fixed rate mortgage were 3.59 percent the day before Donald Trump's victory. It was 4.36 percent on Dec. 27 . With three more expected Federal Reserve rates in 2017, rates could continue to rise.
8. Tijuana
Tijuana is in the middle of building up to 2,000 new condos while the peso has continued to drop in value since the U.S. election. This lowers purchase costs for buyers using dollars, but makes imported materials and appliances more expensive. Despite claims from Mexican developers, many industry watchers wonder what will happen if money dries up during construction.
9. Rent prices
As of September, rent increased nearly 9 percent in a year but CoStar is predicting rent will rise just 3.6 percent in 2017. With less profit growth, more landlords may consider turning apartments into condos. If rent goes up more than expected, we may see louder calls for rent control, pressure on employers to find places for their workers, and a dip in local consumer confidence.
10. Financial markets
Stock investors will pay keen attention to clues that the "Trump Rally" foretells longer life for the bull market that began in 2009. With corporate profits fading at the end of 2016, high equity prices raise the odds of a correction. Meanwhile, higher U.S. interest rates have hurt bond values, causing paper losses for pension funds, insurance companies and retirees who rely on fixed-income investments. A Bank of England study said global markets had delivered the lowest interest rates in 5,000 years of recorded history. Bouncing off that bottom could rock the financial system.
11. Artificial intelligence and personal assistants
Alexa, will Apple release a voice-powered assistant for the home? Apple isn't saying, yet consumers can expect the battle for the household to heat up among tech superpowers in 2017. Artificial intelligence will play a deciding role in which companies win or lose. Now that Amazon's Echo is a public success story, Google is trying to transfer its search-giant smarts to the living room through Google Home. The biggest question mark is whether Apple will tap the original AI assistant, Siri, to enter the fray.
12. The Beachhead
San Diego is following the startup money trail to the Bay Area, where the San Diego Venture Group, with financial backing from the city, will operate a satellite office, dubbed "The Beachhead." The venue, opening in January, is meant to help local tech businesses secure Silicon Valley-sized funding rounds from top-tier investors. But what can a five-desk office really accomplish in the nation's tech mecca? We should find out by the end of 2017.
13. Navy Broadway Complex
Developer Doug Manchester hopes to begin construction this year on the $1.2 billion hotel-office-retail replacement for the Navy buildings that have dominated the foot of Broadway since the 1920s. Legal problems have stymied construction ever since Manchester won a 99-year lease in 2006, and there's always a chance of further litigation.
14. Port development
Anthony's Fish Grotto will close at the end of January and then a new Brigantine restaurant complex will go up next to the Star of India. Further design work and negotiations will take place at the port's biggest redevelopments, Seaport Village and Harbor Island. And the first draft of a new master plan and environmental analysis will be issued.
15. A new plan for the old library
Civic San Diego is expected to announce early in the year who will win the contract to reuse the old Central Library at 820 E St. The building was vacated when the new, much bigger replacement opened a few blocks to the east in 2013. New ideas that have been considered include education, a startup business incubator and commercial uses.
16. Balboa Park
The Plaza de Panama no-parking plan has received renewed City Council approval to move forward with building a parking garage south of the Spreckels Organ Pavilion and divert cars from the Cabrillo Bridge via a bypass bridge from the west. But preservationists have filed a new lawsuit on environmental grounds, and supporters still have meet their $30 million target to cover their portion of the $79 million plan; the balance will come from the city. Construction is scheduled to begin later this year, headed for completion in 2019.
17. Commercial real estate
With vacancies dropping and rents rising, industrial development is hot with several projects expected to break ground. Office development is facing similar trends, yet a start on major high-rises has yet to announced. The retail sector will see the opening of the Westfield UTC mall expansion, but Westfield's plans for a major redo to Horton Plaza remain unknown. The Pendry Hotel is opening early in the year in the Gaslamp Quarter, while several others are under construction, ready to start in 2017 or being proposed to meet San Diego's rising business and tourist traveler demand.
U-T staff writers Mike Freeman, Dan McSwain, Phillip Molnar, Rob Nikolewski, Roger Showley, Jennifer Van Grove and Lori Weisberg contributed to this report.
Consider me your #1 resource for all things Real Estate! Selling, buying, upsizing, downsizing, relocating, investing, vendor referrals, shoulder to cry on during renovations and more. Just send me an email or call me at 619-888-2117.
Tags: san diego balboa park, san diego development 2017, san diego economic outlook 2017, San Diego economy, san diego newsCategories: Business, Economy, Real Estate, San Diego, Statistics, Uncategorized, Urban Living
Previous5 New Year's Resolutions for Your Home
Next10 Essential Questions to Ask When Buying a New Home (That You May Have Missed)


The ZixCorp Partner Program Just Got Better!
Since launching the ZixCorp Partner Program in 2006, we've experienced success and achieved many milestones along the way. The most recent ones: through the first half of 2012, the partner program totaled approximately 200 VARs and MSPs and combined to contribute more than a third of ZixCorp's new first year orders. What a year so far for partners!!
Last week, to continue improving our overall program for existing partners and to keep these numbers growing by recruiting new partners, we announced enhancements to the partner program with new marketing, sales and infrastructure improvements. What are the highlights of the changes? Bottom line, these improvements are meant to 1) assist our partners in producing more quality email encryption leads and 2) accelerate the sales cycle for quicker revenue generation.
What have we done to put partners in a position to make this happen?
ZixCorp is recognized for our industry-leading email encryption services. Our Partner Program is known for the dedicated support and attention we provide VARs and MSPs. Building on the existing success of the partner program with these program changes should only bolster our partners' business.
Want more information about the ZixCorp Partner Program? Check out the Partner Brochure or contact us at partners@zixcorp.com.


In reversing a sentence for a serious violent felon, the Indiana Court of Appeals has ruled that intending to commit a "crime of violence" is not, in itself, a crime of violence.
In Zarumin Coleman v. State of Indiana, No. 49A02-1101-CR-12, Zarumin Coleman appealed his 60-year sentence for one count of Class A felony conspiracy to commit robbery and one count of Class B felony possession of a firearm by a serious violent felon.
The appeals court considered whether felony conspiracy to commit robbery is a crime of violence, with respect to consecutive sentencing.
Coleman pleaded guilty to the conspiracy and firearm possession charges, following a botched robbery. Coleman had instructed his girlfriend to give a gun to one of the parties involved in the robbery attempt, and he drove the would-be robbers to a home that reportedly contained money and marijuana. Ronald Davis entered the home, and shot and killed two women and two children, using the gun Coleman's girlfriend provided.
The appeals court held that despite the tragic events in the home, no evidence exists to suggest that Davis actually committed a robbery, as he fled without any property. It also concluded that intending to commit a crime of violence is not a crime of violence, and therefore, Coleman's sentence was inappropriate.
"We are compelled to conclude a sentence of sixty years on convictions for Class A felony conspiracy to commit robbery and Class B felony possession of a firearm by a (serious violent felon) violate the single episode of criminal conduct rule for non-'crimes of violence,'" the court wrote in its opinion.
The court reversed and remanded for the trial court to resentence Coleman to a total term of 55 years. In accordance with Ind. Code Section 35-50-2-3(a), the 55-year term is the advisory sentence for murder, the next class of felony above Class A. The appeals court found that sentence to be appropriate, in light of the nature of the offenses and Coleman's character, and refused to reduce it further to a term of 45 years.


text:
You are here: Home > Our expertise > Practice groups > Life Sciences & Chemistry
""Mallinckrodt Pharmaceuticals' chooses to utilise Withers & Rogers' intellectual property services as they demonstrate a high level of competence with regard to our products and related technologies. Furthermore, they have a proven record of zealously advocating Mallinckrodt's legal position at the European Patent Office." "
Kenneth D. Goetz, Vice President, Intellectual Property
Mallinckrodt Pharmaceuticals
Our Life Sciences & Chemistry group has an enviable depth of expertise and experience in the chemical, biochemical and pharmaceutical industries, as well as in academic research. Specialists across the group have extensive experience in addressing the technical and legal issues affecting this critical sector.
We are European patent attorneys with a pan-European client base. As well as serving clients from all over the United Kingdom, we directly advise a number of Swedish, Norwegian, German, Dutch, Portuguese and Spanish chemical, pharmaceutical and biotechnology companies and research institutes. We also act for a wide range of companies and universities from further afield, especially from the US and Japan.
Our clients include entrepreneurs, biotechnology and genetic research companies, pharmaceutical companies, horticulturalists developing new plant varieties, medical device companies, veterinary supply companies, and a number of chemical companies working in areas as diverse as fuel cells, liquid crystals and cosmetics. We also act for NHS Trusts and the research departments and technology transfer groups of many British universities. We frequently work with university spin-out companies.
Headed by Adrian Tombling, the Life Sciences & Chemistry group includes 14 European patent attorneys and trainee patent attorneys.
Members of the group bring a wide range of academic and professional expertise in biochemistry, genetics, chemistry, microbiology, pharmacy and veterinary science. Five members of the group have doctorates covering subjects as diverse as radiation damage to DNA, gene therapy and DNA vaccines, neuroendocrinology, and advanced analytical chemistry.
Wider perspectives
Members of the group belong to and participate in many of the key organisations in the life sciences and chemistry arena, including the Royal Society of Chemistry, the Royal Pharmaceutical Society of Great Britain, the Society of the Chemical Industry, the Chemical Industry Association, Medi-Wales, Medilink and the Intellectual Property Advisory Committee of the UK BioIndustry Association.
Internationally, the group also includes members serving in organisations including FICPI, an association of IP attorneys, the Biotechnology and Chemical Practices Committee of the American Intellectual Property Law Association (AIPLA), the Pharmaceutical and Biotechnology Issues Committee of the Intellectual Property Owners Association (IPO), the Professional Qualification Committee of the European Patent Institute (EPI) and the International Association for the Protection of Intellectual Property (AIPPI).
Adrian Tombling
Tombling
Email Adrian
Office: Munich


text:
Mushroom Networks plants wireless bonding in Georgia
Solutions for aggregating wireless bandwidth continue catching on as users demand higher broadband speeds and more reliable connections. As part of that trend, the State Botanical Garden of Georgia recently deployed Mushroom Networks' Broadband Bonding technology for use by staff and visitors.
Mushroom's Portabella bonding technology can aggregate the capacity of as many as eight USB-based 3G and LTE wireless data cards to create a single, high-speed mobile Internet connection. The State Botanical Garden, located in Athens, Ga., opted for the less-expensive wireless broadband solution rather than a fiber deployment, which would have cost nearly $20,000, said Mushroom, a privately held company headquartered in San Diego.
"After talking with multiple engineers from the Internet service provider here and two mobile carrier companies, we decided cellular data service was really the only way to go, but we knew one wireless data card wouldn't be enough in terms of bandwidth capacity as well as reliability. We needed at least four, and we needed a way to bond them together," said James Gilstrap, IT professional at the State Botanical Garden of Georgia.
Companies such as Connectify and Open Garden have also pursued channel aggregation techniques to create fat wireless broadband pipes.
- see this Mushroom release
Connectify returns to Kickstarter to enable channel bonding in the cloud
Open Garden's crowdsourced Wi-Fi appeals to carriers, automakers
Open Garden to enable channel bonding over Wi-Fi, 3G and 4G
Connectify aggregates Wi-Fi, 3G and 4G into a fat pipe


How to choose the right payment method and provider for your SaaS? In this seminar, Dominique Adriansens, founder of Twikey, and Nick Boucart (Sirris) will offer you practical advice on what to take into account when choosing a payment solution for your SaaS.
Everything you need to know about putting an API in the market.


Andrew McCarthy, yeah I still would too. God, I didn't half fancy him when I was a kid.
very strange post Meemee... but I think I would too!
@I heart cupcakes - The Horns of Metal!
@Kavey - "Nothing's gonna stop us now ..."
Two videos? I didn't know anything about the second one.
The only people missing from that is a sprinkling of soap opera stars.