solver  1.0
mathematical formulation

Energy optimization problem of robotic cells formulated as an Integer Linear Programming problem.

General description

Although the energy optimization problem of robotic cells is inherently non-linear, it is possible to formulate it as an Integer Linear Programming problem if the non-linear convex functions are piece-wise linearized. These functions correspond to energy functions of robot movements which express the dependency of the energy consumption on the duration of the movement for a fixed trajectory. A solution for one robot can be perceived as the most energy efficient closed path through the specified stop coordinates, called locations. During the waiting in a stationary robot position a power saving mode of a robot can be applied. If the whole robotic cell is optimized, time synchronizations and the spatial compatibility have to be met, i.e. a workpiece is handed over from one robot to another at the right place at the right time. Finally, as robots are close to each other, the collisions have to be avoided.

Table of used symbols

symbol description reference type
$A$ set of all activities, i.e. $V \cup E$ Activity set
$V$ set of all static activities StaticActivity set
$L_v$ set of possible coordinates, i.e. locations, for activity $v \in V$ Location set
$E$ set of all dynamic activities DynamicActivity set
$E_\mathcal{O}$ set of all optional dynamic activities DynamicActivity set
$T_e$ set of movements of activity $e \in E$ Movement set
$\mathcal{R}$ set of robots Robot set
$M_r$ power saving modes of robot $r \in \mathcal{R}$ RobotPowerMode set
$V_r$ static activities of robot $r \in \mathcal{R}$ set
$P_a$ predecessors of activity $a \in A$ Activity::mPredecessors set
$S_a$ successors of activity $a \in A$ Activity::mSuccessors set
$B$ indices of the piece-wise linear functions set
$k_{e,b}^t, q_{e,b}^t$ coefficients of b-th linear function constants
$E_{\mathcal{T\hspace{-1.0mm}L}}$ time lags for inter-robot time synchronization TimeLag set
$l_{a_1, a_2}$ length of a time lag $(a_1, a_2) \in E_{\mathcal{T\hspace{-1.0mm}L}}$ TimeLag::mLength constant
$h_{a_1, a_2}$ height of a time lag $(a_1, a_2) \in E_{\mathcal{T\hspace{-1.0mm}L}}$ TimeLag::mHeight constant
$Q_{l_i}$ set of locations compatible with location $l_i$ set
$n$ multiple of the robot cycle time constant
$g$ either movement $e \in T_e$ or location $l \in L_v$ ActivityMode mode
$C$ set of possible collisions RoboticLine::mCollisions set
$\overline{W}$ upper bound on energy consumption constant
$v_r^h$ static activity that closes the cycle of robot $r \in \mathcal{R}$Activity::mLastInCycle activity
$p_{v,l}^m$ input power of robot $r \in \mathcal{R}$ for activity $v \in V_r$ and location $l \in L_v$ LocationDependentPowerConsumption constant
$\underline{d}_e^t$ minimal duration of the movement $t \in T_e$ Movement::mMinDuration constant
$\overline{d}_e^t$ maximal duration of the movement $t \in T_e$ Movement::mMaxDuration constant

Table of variables

variable description reference type
$W_a$ energy consumption of activity $a \in A$ VariableMappingLP::W positive float
$s_a$ start time of activity $a \in A$ VariableMappingLP::s positive float
$d_a$ duration of activity $a \in A$ VariableMappingLP::d positive float
$x_v^l$ true if location $l \in L_v$ of activity $v \in V$ is selected, otherwise false VariableMappingILP::x binary
$z_v^m$ true if mode $m \in M_r$ is applied in activity $v \in V_r$, otherwise false VariableMappingILP::z binary
$y_e^t$ true if movement $t \in T_e$ of activity $e \in E$ is selected, otherwise false VariableMappingILP::y binary
$w_{e,v}$ true if activity $e \in E_\mathcal{O}$ is performed $\left(v \in S_e\right)$, otherwise false VariableMappingILP::w binary
$c_o^n$ decides whether $a_1 \rightarrow a_2$ or $a_2 \rightarrow a_1$ to resolve a collision VariableMappingILP::c binary

Integer Linear Programming model

$\text{replace it by the correct image (Doxygen bug)}$

Description of constraints

constraint(s) description reference
(1) Minimization of the total energy consumed by all the activities. RoboticLineSolverILP::construct
(2) Propagation of the energy consumption of static activities to the criterion with respect to the selected locations, power saving modes of robots, and durations. ConstraintsGenerator::addEnergyFunctions1
(3) Propagation of the energy consumption of dynamic activities to the criterion with respect to the selected movements and robot speeds. ConstraintsGenerator::addEnergyFunctions2
(4), (5), (6) Only one power saving mode and location is assigned to each static activity, and each mandatory dynamic activity has assigned just one movement. Constraints (6) can be omitted as flow preservation constraints (7), (8) and the timing enforce the implicit selection. ConstraintsGenerator::addUniqueModeSelection
(7), (8) Flow preservation constraints ensure that if the robot enters to a location it also has to leave the same location. ConstraintsGenerator::addFlowConstraints
(9), (10) Ensure a correct timing for fixed precedences of activities ConstraintsGenerator::addFixedPrecedences
(11), (12), (13) Ensure a correct timing of optional precedences that model alternative orders of operations. ConstraintsGenerator::addPrecedenceSelectionConstraints, ConstraintsGenerator::addSelectablePrecedences
(14), (15) Restrictions on durations of static and dynamic activities, respectively. ConstraintsGenerator::addDurationConstraints
(16) Time synchronization between robots is ensured by time lags. ConstraintsGenerator::addTimeLags
(17) Constraints enforcing the spatial compatibility for handover operations. ConstraintsGenerator::addSpatialCompatibilityConstraints
(18), (19) Constraints ensure that two related activities are time disjunctive for different multiples of the production cycle time, and therefore, the collision is resolved. ConstraintsGenerator::addCollisions
(20) Domain of variables, all the variables of the model are either positive floats or binary variables. VariableMappingILP
Remarks
In the implementation, constraints (6) are omitted, and some of constraints are merged, therefore the number related to a constraint (in the constraint description) differs from the numbers presented here. This mathematical formulation was adapted to ease the understanding and reading.