Application of the Intellectual Multi-criteria Load Optimization Model in an Aircraft Load Planning Yelyzaveta Sahun1[0000-0003-4837-4688], Fatma Bebitowa2 1 Flight Academy of National Aviation University, Dobrovolskogo Street, 1, 25005, Kropyvnytskyi, Ukraine 2 Flight Academy of National Aviation University, Dobrovolskogo Street, 1, 25005, Kropyvnytskyi, Ukraine Abstract. One of the main challenges in air cargo transportations is how to assign cargo in an aircraft without exceeding safety constraints and including profit aspects. Therefore, challenging work planning has to be done for each flight. The work is devoted to the elaboration of the intellectual multicriteria load optimization model, based on the newly developed cargo aircraft load planning algorithm on a multi-leg route. The essence of the algorithm is in the following: a predefined assignment of the ULD’s according to the cargo section scheme, considering the general aircraft constraints and also loading priority that has an impact on load planning in the case of a multi-leg flight. The application of the optimization model leads to a reduction of the load operations time on a range of one-leg flights to 7 %, multi-leg flights – to 12 %. The model’s implementation prevents the cases of sorting “manually” due to a variety of constraints that lead to increasing the aircraft handling procedures duration. Intellectual Integrated Multicriteria Optimization Model enhances the airline staffs’ abilities to make faster decisions and to predict the additional loading on the other flight legs. The successful application of the following model in airline operations contributes to the handling service safety and efficiency increase. Therefore it promotes the acceleration of the aircraft turnaround time. The future research is related to the implementation of the presented model to the development of the rule-based expert system, which enables to arrange the load planning process less time-consuming and prevent mistakes, caused by the human factor. Keywords: Cargo container, Unit Load Device (ULD), Aircraft load optimization, Load planning algorithm, Load optimization model, Assignment, Loading time, Rule-based expert system. 1 Introduction The air cargo transportation sector’s success is closely connected with the possibility of consolidation of the cargo shipment. Volumes of aircraft cargo transportations will continue to increase, by an average of about 3% per year, at least until 2025 and most likely until 2030, as mentioned by McKinsey [11]. Optimization of cargo loading operations plays a significant role in the stable growth and development of air companies. The stakeholders that are involved in the cargo loading process have various objectives. 1 ICTERI-2021, Vol I:Main Conference, PhD Symposium, Posters and Demonstrations, September 28–October 2, 2021, Kherson, Ukraine EMAIL: ielyzavetamaliukova723@gmail.com (Ye. Sahun); fatmabebitowa9422@gmail.com (F. Bebitowa) ORCID: 0000-0003-4837-4688 (Ye. Sahun) ©️ 2021 Copyright for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0). CEUR Workshop Proceedings (CEUR-WS.org) The sales department aims mostly for maximizing revenue and cargo loads on the aircraft, ground handling wants to minimize the handling effort, aircraft operations work for minimization of fuel consumption and containers’ utilization. Aircraft ground service (handling service) is a key part of providing air safety on the ground within flight schedule time requirements. Neglecting of the air safety requirements maintaining the ground handling procedures may lead to accidents that are classified as aircraft accidents or ground damages. Such conditions cause flight delays, loss of operating costs of the air carrier, and even people’s injuries and death. Accidents, which happen during the handling process, have a substantial impact on the aircraft’s safe utilization that raises the necessity to develop some new aircraft optimal load planning methods, which can increase the air safety rates and avoid aircraft accidents with civil aircraft and influence on the aircraft operations’ effectiveness and marketability of the air cargo carrier. Currently, due to the level of competitiveness of air carriers, the majority are searching for some instruments to provide more effective payload utilization for increasing the level of their revenue, fuel, and other operating costs optimization. The scientific attempts in arranging the optimal decisions are usually limited by “the center of mass envelope” and maximum allowed payload [4, 11]. However, carriers, who handle air cargo transportations, can still have a chance to raise their profit with the presented model’s implementation. Searching for the scientific approaches towards aircraft loading optimization it was determined that the term “load optimization” can be used for typically different decisions that are made during the planning process. The following research results can be substantial for the airline planning staff (ground dispatches, loadmasters, etc.), and also for career’s operational planning. 2 Related works There is still a great amount of various optimization decision scenarios that represent the practical significance and contain few aspects such as load-bearing strength and load distribution as mentioned by Kaluzny & Shaw [8], Gueret [2], and Souffriau [7]. Certain authors implement new heuristic decisions that include the new heuristic method for container loading to address loading preferences respectively with feasible constraints and define a feasible packing reducing the nonproductive time, as shown by Hussein [6]. The work of Zhaoa [5] contains a stowage pre-planning. Gueret in his work [1] used a hybrid genetic algorithm for the heuristic approach in loading the aircraft. The Rule-based Optimization approach, mentioned by Feng [2] suggests a specific rule flow, which is constructed by high-level business logic and optimization algorithms. The tabu-search approach, shown by Nance [3] involves called Mixed Payload Airlift Load Planning Tabu Search algorithm, developed for pure pallet cargo loads. The research of Paquay [9] consists of mathematical programming, which guarantees the optimal decision for a three-dimensional bin-packing problem. One of such models is mixed-integer programming used for general loading problems as in the research of Paquay. However, practical research shows that some program approaches are not effective, especially in conditions of multiple routes/legs and also due to a big amount of data variables. Besides, the problem remains NP-hard and the decision variants are growing exponentially. A few experiments show the solution quality of 32 variants but it will take too much time to calculate for 64 variants that make the decision process more complicated and time-consuming. 3 Load planning algorithm The algorithm was developed for the ramp cargo aircraft, as there is no such a problem for loading on a multi-leg route for the aircrafts that are equipped with apparel. The cargo aircraft IL-76T, AN-24, AN-26, and AN-22 were used for data with the graphs of the final center of mass assignment. The Graph of IL-76T was chosen as a visualized example in Blender 3D modeling. For optimizing the aircraft loading process, we should make sure not just about the limits and order, that should not interfere with the general aircraft physical limitations, but to make sure, the payload does not exceed the load restrictions for the single load section of the IL-76 aircraft’s cargo compartment. These restrictions were calculated on the basis of the Flight Operations Manual of IL- 76 Appendix 3 [10] and were added to the general aircraft load planning algorithm. IL-76 aircraft’s cargo bay is divided into 15 groups (sections). (see Fig 1.) Each section corresponds to its area that is defined with the compartment’s length and the finite set of fuselage bulkheads [4]. Figure 1: Final center of mass assignment graph and the aggregate sums of masses correlation (ІL – 76) [10] The scientific attempt in load optimization was undertaken by a situational task that complies with the real life aircraft operations process. Case 1: There is a multiple leg route that consists of the 3 points: A-B, B-C, A-C. Each leg has its own planned payload and a predefined unloading order according to its priority. The ramp cargo aircraft (this case is IL-76) is loaded with different types of ULD that follow the route from A–C (by-passing the point В) Table 1. Parameters of the load planning algorithm. Parameter’s name Parameter’s Symbol Number of legs L i (i=1,2,3) Capacity C Number of containers сі Number of sections Sn Maximum payload general Wmax Weight of the i container wi Container dimensions Dimensions, d i Weight of the loaded container, w i load , w jload, w k load Cargo compartment’s dimension D Maximum payload of the cargo section, w s n. Cargo section’s dimensions d sn Leg 1 belongs to the straight route from point A to point B. Leg 2 belongs to the straight route from point B to point C. Leg 3 belongs to the route from point A to point C, crossing point B, and is called multi-leg. The main parameters of the algorithm are shown in Tab. 1. According to the clarification mentioned in table 1, suggest that: Consequently, ULD сі belongs to leg 1 (L1). \If the requirements are respected, then:\ Container dimensions (L х W х H), d i ≤ aircraft cargo bay dimensions, D. \If those requirements are further respected, then:\ Check, if the container’s final weight, w i ≤ w sn. the weight limits for i, j, k groups of sections. Note: There are three groups of loading sections– i, j, k, k – a group of sections for cargo, that is going to be unloaded on the middle point А-В. These are sections 11–15. The j – the group of sections for cargo is going to be unloaded on the middle point В-С, sections № 6–10. The i group of sections for cargo follows from point A to the final point of destination С, sections № 1–5. 1. In the first section i - group should be loaded (all cargo, following the final point С). 2. If the section has space and the actual loaded weight wi < wSi maximum weight for the current section, (Fig.1), then: 3. Load the section by the next container in the list that follows the same destination. 4. In case, if the space is absent or w i = Wmax (the actual payload of the section is equal to the maximum payload); we step to the next section S i +1 . 5. We repeat step 6 until wSi  wiload the maximum payload of the finite group’s section will be less or equal to the final weight of the loaded container due to its finite section. 6. Repeat steps 1-6 for other groups of sections (i, j, or k.) 7. Check all load rates. \End\ There are similar algorithms that have only different variable that is the point of destination. At this stage, we have sorted the decision variables due to the finite container with its dimensions and other parameters, including all general limitations. This task is a clear multicriteria optimization task, as it has a few different criteria, and the number of variants can increase exponentially because of the variety of ULDs and their destination points. The algorithm rearranges the loading and assignment variants to different sections of one group of three. The available empty areas that are relevant to the finite section weight limitations can continue the work of the algorithm till the next acceptable container until the section area is full (as long as it corresponds with weight & balance restrictions). The algorithm was formalized in Python script code and was written in Microsoft Visual Studio Code space. The part of container input and their constraints are shown in the following code set: 1 import bpy 2 from bpy.props import * 3 from .CargoSpace import * 4 5 # ----------------------------------------------------------------------- 6 # Scene Properties 7 # ------------------------------------------------------------------------ 8 9 class MySettings(bpy.types.PropertyGroup): 10 def TypeUpdate(self, context): 11 t = Type[self.my_enumTyp] 12 if t == Type.AMA: 13 self.my_fMass = 6.804 14 elif t == Type.PMC: 15 self.my_fMass = 6.679 16 elif t == Type.PLA: 17 self.my_fMass = 3.175 18 elif t == Type.KMA: 19 self.my_fMass = 3.001 20 elif t == Type.TST: 21 self.my_fMass = 1.001 22 23 my_sTotalMass: bpy.props.StringProperty() 24 my_sTotalCons: bpy.props.StringProperty() 25 26 #my_float : FloatProperty(name="Some Floating Point", min=0.0, max=100.0) 27 my_nCount: bpy.props.IntProperty(name="Count", min=1, max=5, default=1) 28 my_fMass: bpy.props.FloatProperty(name="Mass", min=1, max=1000, default=2.0) 29 my_fMaxMass: bpy.props.FloatProperty(name="Max Cargo Mass", min=1, max=1000, default =40.0) 30 #my_fTotalMass: bpy.props.FloatProperty(name="Total Cargo Mass", min=1, max=1000, defau lt=40.0) 31 32 my_enumTyp: bpy.props.EnumProperty(name="Type", items=[ 33 ("AMA", "AMA", "AMA", 0), 34 ("PMC", "PMC", "PMC", 1), 35 ("PLA", "PLA", "PLA", 2), 36 ("KMA", "KMA", "KMA", 3), 37 ("TST", "TST", "TST", 4)], update=TypeUpdate) 38 my_enumDst: bpy.props.EnumProperty(name="Path", items=[ 39 ("L1", "L1", "L1", 0), 40 ("L2", "L2", "L2", 1), 41 ("L3", "L3", "L3", 2) 42 ]) 43 44 class Container_PT_Panel(bpy.types.Panel): 45 bl_idname = "Container_PT_Panel" 46 bl_label = "IL76 Tools" 47 bl_category = "Tools" 48 bl_space_type = "VIEW_3D" 49 bl_region_type = "UI" 50 51 52 53 def draw(self, context): 54 layout = self.layout 55 56 row = layout.row() 57 row.operator('view3d.add_container') 58 row = layout.row() 59 row.operator('view3d.weight_containers') 60 row = layout.row() 61 row.operator('view3d.rearrange_containers') 62 63 row = layout.row() 64 row.operator('view3d.remove_all_containers') 65 66 box = layout.box() 67 68 box.label(text='Container parameters') 69 70 71 row = box.row() 72 prop = row.prop(context.scene.ji, 'my_enumTyp') 73 row = box.row() 74 prop = row.prop(context.scene.ji, 'my_enumDst') 75 row = box.row() 76 row.operator('view3d.rand_container') 77 prop = row.prop(context.scene.ji, 'my_fMass') 78 79 80 row = layout.row() 81 prop = row.prop(context.scene.ji, 'my_fMaxMass') 82 83 #row = layout.row() 84 #prop = row.prop(context.scene.ji, 'my_string') 85 self.layout.label(text=context.scene.ji.my_sTotalMass) 86 self.layout.label(text=context.scene.ji.my_sTotalCons) 87 88 89 #row = layout.row() 90 #prop = row.operator('view3d.make_boxes', text="Make Random Boxes") 91 #prop = row.prop(context.scene.ji, 'my_float') The following code set describes the stage of container selection and accordance with general constraints. On the range of 31-42, we can see the selection end input of various types of ULD and their characteristics. The next code set presents the variety of cargo sections that are divided into 15 groups with its own dimensional constraints and weight limitations: 193 class CargoSpace: 194 def __init__(self, context): self.sections = [] self.containers = [] self.ff = [] 199 200 # find zones 201 self.zones = [CargoZone('Si'),CargoZone('Sj'),CargoZone('Sk')] 202 self.padding = 0.01 203 204 # adding all sections 205 sec_and_mass = {"Si_1":7.138, "Si_2":13.256, "Si_3":11.0, "Si_4":11.0, "Si_5":8.625, "Sj_1 ":11.764, "Sj_2":3.850, "Sj_3":3.850, "Sj_4":7.70, "Sj_5":3.850, "Sk_1":7.058, "Sk_2":7.807, "Sk_3" :12.229, "Sk_4":18.288, "Sk_5":16.792} 206 sec_and_safe_mass = {"Si_1":5.0, "Si_2":5.1, "Si_3":8.0194, "Si_4":11.0, "Si_5":17.0, "Sj_1 ":30.0, "Sj_2":40.0, "Sj_3":40195.0, "Sj_4":40.70, "Sj_5":40.850, "Sk_1":40.8, "Sk_2":40.8, "Sk_196 3":30.2, "Sk_4":18.8, "Sk_5":10.2} 207 208 for s in sec_and_mass: 209 newsec = CargoSection(s, sec_and_mass[s], sec_and_safe_mass[s]) 210 self.sections.append(newsec) 211 212 # find all containers in scene 213 params = ["con_" ] #add your list of search parameters 214 for ob in bpy.data.objects: 215 if any(x in ob.name for x in params): 216 self.containers.append(ob) On the range of 204-216, we can see the input of all cargo sections and their mass parameters. The range of the code also contains cargo weight constraints. 4 Load Optimization Model’s implementation Program implementation of the load planning algorithm was accomplished by the Python-code’s integration to the program of 3D modeling – Blender Version 2.83. Blender is used in the research to model aircraft loading process in real-time conditions. Load planning optimization model is operating the following way: 1. The containers’ list and its parameters for the load planning are added to the system’s database. Such information can be taken from the set of documents for each flight that is being prepared by the person, responsible for the flight arrangement (Flight Dispatch, Ground Dispatch, etc.) Figure 2: Selection of the containers assignment according to loading priority 2. The types of containers that are used by the air carrier were adjusted in advance. These are A (KMA) containers for animals (goats/sheep) and general ULDs PMC, PLA, and AMA. 3. The program, with the help of the added aircraft general constraints, (length, width, the height of the compartment, maximum payload, weight and balance constraints for the finite aircraft section), select the container with the help of the «Add container» command and assign it firstly, according to its priority destination, with the command «By path» (Fig. 2.). 4. The ULD’s affiliation to the predefined point is also provided by the container documentation. Figure 3: Container that is assigned according to weight & balance requirements Figure 4: Loading of the few different containers according to weight & balance requirements Figure 5: Assignment of additional containers in compliance with weight & balance requirements 5. The program also contains data from the graph of the final center of mass assignment and the aggregate sums of masses correlation (Fig.1). Consequently, container weight distribution is operated strictly due to the graph, so the weight & balance rates will not exceed their boundaries. Fig. 3 demonstrates the priority assignment already with weight & balance satisfied constraints with the help of the «By balance» command (Fig.3, Fig.4.) 6. If the user of the program sequentially adds the defined types of ULD/containers that meet with the destination’s priority the mode and the arrangement of all recently loaded containers are being changed (Fig. 5.). Figure 6: The modeled case of container length parameters incompatibility and exceeding the ramp dimensions While adding few containers with respect towards both criteria (priority, balance), the weight of the last loaded container may be within the limits but exceeds the cargo bay’s dimensions as is shown in Fig.6. In such a case, we exclude it from the list and select the command «Add container» another one that fits both criteria and does not exceed the ramp length. If the program would not accept the following criteria and limits the load planning process and particularly sorting would be done manually that is more time-consuming, especially in real-time conditions. 5 Research results The experiment was implemented in the LLC «Aircompany ZetАvіа» in the following way: the set of round-trip straight and multileg flights was chosen. It was counted the average loading time of each flight before the model implementation. Afterward, the load optimization model was integrated into the company’s load planning system and used by the load planning staff while taking their operational decisions as well. If we analyze the experimental data from Tab. 2 we see that most of the time parameters after the model implementation are less than before the experiment; however, some results are remained the same (Almaty - Nukus - Sharjah) due to the impact of external conditions which are the human factor and weather conditions. A histogram of the experimental results during the set of round-trip flights is presented in Figure 7: 2 1.5 1 0.5 0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 Figure 7: Histogram of the experimental results during the set of round-trip flights The heuristic in the integral multicriterial load optimization model includes the expert data based on professional experience and perceptions according to the finite problem statement. The group of 30 experts evaluated the model and the effect after program implementation. Table 2. Experimental results of aircraft load planning while operating the Zet Avia flights № Route General ULD’s Loading, before Loading, after quantity the experiment, model min. implementation, min. 1 Al -Ain - Nukus - Almaty 7 105 102 2 Almaty - Nukus - Al -Ain 5 87 81,6 3 Al -Ain - Sharjah - Nukus 4 90 85,4 4 Sharjah - Al -Ain 4 50 45 5 Al -Ain - Sharjah 3 50 45 6 UTNN - Sharjah - Al -Ain 6 115 105,6 7 UTNN - Sharjah 4 70 58 8. Sharjah - Almaty 5 75 59,4 9. Al -Ain - Mykolaiv - Nukus 7 90 73,8 10. Almaty - Nukus - Sharjah 7 100 100 11. Sharjah - Nukus - Almaty 7 105 95 12. Аl –Maktoum - Nukus - 5 85 81 Almaty 13. Almaty - Nukus - Аl – 6 90 89 Maktoum 14. Ras-Al –Khaimah - Almaty 3 44 41 15. Almaty - Sharjah 4 55 51 16. Sharjah - Al -Ain 3 56 50 17. Nukus - Al -Ain 4 60 56 18. Nukus - Mykolaiv - Аl – 7 90 83 Maktoum There are three different columns on the histogram. The blue columns define the experimental loading time before model implementation, the red columns show the modeled loading time and the green columns represent the experimental loading time after the model implementation. An example of a multiple leg flight can be a flight of the route Sharjah – Nukus – Almaty. The duration of general loading operations after the model’s implementation was reduced and became 10 minutes less than the modeled one. For the one-leg flight of Ras -Al -Khaimah – Almaty the duration of general loading operations became 3 minutes less than the modeled one. The parameters can vary due to the cargo specificity; however, if we base on the data in table 2, the model demonstrates positive results after implementation. The new practical results are directed to improve the effectiveness and safety of maintaining the handling procedures and intensify the air company aircraft fleets’ utilization with reduction of the handling procedures duration. The practical value of the obtained results is determined with a successful application of the multicriterial load planning optimization computer model in air company operations. The developed optimization algorithm was presented on the example of the 3 ІL -76 loading model. Experimental data from the range of LLC «Aircompany ZetАvіа» flights demonstrated that the model implementation has enabled to reduce the average loading/unloading time on the range of direct flights to 7% and the multileg flights to 12%. 6 Conclusions The objective of load planning optimization lies in the assignment of container groups to minimize the loading time, which means the number of handling operations (operations of cargo reloading/unloading) with the consequent cutting of the operating costs per flight. The loading time reduction after the model implementation is caused by the conditions that were laid from the decision-making algorithm. These conditions make impossible the situational manual loading or loading by the following graph (Fig.2). Unlike the scientific work of Kaluzny [8], where the center of mass envelope is the main criterion the following work is concentrated on the unloading priority criterion. Therefore, the Python algorithm returns the user to the prior action until the previous container from the same route leg will not be loaded. As it is to be loaded according to all compartment constraints, i.e. the finite sequence based on the flight data remains the same. The “stacking” approach, presented at the work of Hussein [6] does not apply to the multileg conditions. The presented load planning algorithm contributes avoiding the cases when the cargo is impossible to unload directly in the finite route leg without reloading the cargo that was attached before it. With the help of the finite decisions, made by the algorithm variants the loadmaster or the ground dispatch staff can control the correlation between the container loading indicators and the general aircraft constraints. This enables to sort of an appropriate variant without wasting time. Consequently, it will affect the load operations speed and the aircraft turnaround time. The loading computer model now has restrictions due to the aircraft type. For algorithm operation, the career has to operate the ramp cargo aircraft. In the aircraft equipped with apparel that decisions will not be feasible. These types have free access to all cargo compartments and the problem of the loading speed can be solved just with the help of the handling staff without implementing the program optimization decisions. Although the research weaknesses can include the exogenous factors that affect the cargo service time indicators such as human factor, weather conditions, etc. (the example of flight № 10, see Tab. 2). That case can mitigate the decision-making time during the flight planning. The three-dimensional load optimization model has all necessary conditions and parameters to proceed as a rule-based expert system that can manage all flight data, with a designed database that is based on general aircraft parameters, cargo sections, and container parameters. The dimensions of a container, the position of loaded containers are described by the positive integer data type. These data can be stored in the tables of the database. Cargo air companies can increase their profit with the presented model implementation. Last- minute cargo can be transported in larger volumes and the costs of load planning, handling, and operation costs can be substantially reduced. The complex load planning optimization model was developed that enables to automate the load planning process, reduce the number of errors in flight planning, and consider the unplanned “last- minute cargo” without exceeding the weight & balance limits. References [1] G. Gueret, H. Jussien, O. L’homme, C. Pavageau & C. Prins, Loading aircraft for military operations, Journal of the Operational Research Society, 53, 458-465 (2003). doi:10.1057/palgrave.jors.2601551 [2] L. Feng, C. Tian, H. Zhang, & W. Kelley, Rule-based Optimization Approach for Airline Load Planning, Procedia Computer Science, (1) 1, 1455−1463 (2010). doi:10.1016/j.procs.2010.04.161 [3] R.L. Nance, A.G. Roesener, J.T. Moore, An advanced tabu search for solving the mixed payload airlift loading problem, Journal of the Operational Research Society, 62, 337-347 (2011). doi:10.1057/jors.2010.119 [4] Ye. Sahun, Priority loading algorithm as the part of aircraft load optimization model, Proceedings of the National Aviation University, 3(84), 44−49 (2020). doi:10.18372/2306-1472.84.14952 [5] X. Zhaoa, B. Bennella, A.T. Julia, & K.A. Dowsland, A comparative review of 3D container loading algorithms, International Transactions in Operational Research, 23, 287–320. (2016). doi: 10.1111/itor.12094. [6] M.I. Hussein, Container Handling Algorithms and Outbound Heavy Truck Movement Modeling for Seaport Container Transshipment Terminals. Theses and Dissertations. Paper 56. Milwaukee: The University of Wisconsin. (2012). [7] W. Souffriau, P. Demeester, G. Vanden Berghe & P. De Causmaecker, The Aircraft Weight and Balance Problem, Proceedings of ORBEL, 22, 44-45 (2008). [8] B. Kaluzny, D. Shaw, Optimal aircraft load balancing. Mathematical formulation: CORA Technical Report. National Defence R&D, 15-21 (2008). [9] C. Paquay, S. Limbourg, M. Schyns, A mixed-integer programming formulation for the three- dimensional bin-packing problem deriving from an air cargo application. Working paper, 1-6 (2011). doi:10.1111/itor.12111 [10] Flight Operations Manual IL- 76. Edition 2, Annex 3: Weight & Balance Instruction. [IL -76], 2 - 12 (In Russian) (1984). [11] Air Freight Forwarders Move Forward into a Digital Future, McKinsey & Company Travel, Transport & Logistics, 2021. URL: https://www.mckinsey.com/industries/travel-logistics-and- transport-infrastructure/our-insights/air-freight-forwarders-move-forward-into-a-digital-future