# Heuristic Method for Decision-Making in Common Scheduling Problems
## 3 ALMM Methodology  
The use of exact algorithms to solve problems described in Section 2 is ineffective. Also, the direct application of iterative improvement algorithms (e.g., Simulated Annealing, Genetic Algorithms, Tabu Search) is difficult or impossible. The methods based on the algebraic-logical meta-model paradigm of multistage decision process (introduced by [PERSON] [27; 28; 29]) can be successfully applied to solve the abovementioned class of problems with their relationships and limitations. A description and development of the methodology are presented in detail in [30].  
In ALMM methodology values of particular model elements do not have to be numerical. Therefore, the state and/or decision can be represented by names of elements (symbols) as well as some objects, for example, a finite set and sequence. Moreover, a set of possible decisions \(U_{p}\), a set of non-admissible generalized states \(S_{N}\), and a set of goal-generalized states \(S_{G}\) are formally defined with the use of a logical formula. This is the advantage of ALMM: it allows us to represent all kinds of information regarding the problem (including various temporal relationships and restrictions of the process) in a convenient way. Moreover, such an approach enables making collective decisions in successive process stages, not only for individual objects. The ALMM approach also allows discrete optimization of problems by finding optimal or suboptimal solutions. Using the ALMM approach allows for the reconstruction of the decision-making process as well as monitoring and tracking decisions.  
Let us recall the definition of the algebraic-logical meta-model of a multistage decision-making process for a better understanding of the approach [27; 28; 30].  
**Definition 1** (ALMM of MDP): _Algebraic-logical model of multistage decision process (MDP) is defined by the sextuple:_  
\[MDP=(U,S,s_{0},f,S_{N},S_{G}), \tag{1}\]  
_where:_  
* _U is a set of decisions,_* \(S=X\times T\) _is a set named a set of generalized states,_ \(X\) _is a set of proper states,_ \(T\subset\mathcal{R}^{+}\cup\{0\}\) _is a subset of non-negative real numbers representing the time instants,_
* \(s_{0}=(x_{0},t_{0})\) _is an initial generalized state,_
* \(f:U\times S\to S\) _is a partial function called a transition function, (it does not have to be determined for all elements of the set_ \(U\times S\)_),_
* \(S_{N}\subset S\) _is a set of not admissible generalized states_
* \(S_{G}\subset S\) _is, a set of goal generalized states, i.e., the states in which we want the process to take place at the end._  
The transition function is defined by two functions, \(f=(f_{x},f_{t})\) where \(f_{x}:U\times X\times T\to X\) determines the next state, \(f_{t}:U\times X\times T\to T\) determines the next time instant. It is assumed that the difference \(\Delta t=f_{t}(u,x,t)-t\) has a value that is both finite and positive.  
The following features are very important:  
1. all limitations concerning the decisions in a given state \(s\) can be defined in a convenient way by so-called sets of possible decisions \(U_{p}(s)\), and defined as: \(U_{p}(s)=\{u\in U:(u,s)\in Dom\,f\}\).
2. sets \(U\) and \(X\) in the most general case may be presented as a Cartesian product \(U=U^{1}\times U^{2}\times\cdots\times U^{m}\), \(X=X^{1}\times X^{2}\times\cdots\times X^{n}\) i.e., \(u=\left(u^{1},u^{2},\cdots,u^{m}\right)\), \(x=\left(x^{1},x^{2},\cdots,x^{n}\right)\).
3. the state and/or decision does not have to be numerical and can be represented by names of elements (symbols) as well as some objects, for example, a finite set and sequence.
4. a particular decision \(u^{i}\) represents separate decisions that may be taken at the same time and relate to a particular executor (resource).
5. the sets \(S_{N}\), \(S_{G}\) and \(U_{p}(s)\) are formally defined with the use of logical formulas.
6. the decision sequence determines a trajectory. Only a trajectory that ends in the set of goal states \(S_{G}\) is admissible.