I want to do the following project which is in the field of operational research. I intend to solve the problem using the “local solver” algorithm as the heuristics framework and using the python language.
Gimme a full momolithic code for simulating the problem. Remember that you must provide me with a single code which contains all the needed coding for thr project in full details. The code must be in python 3 and in a way that would be ready to run.

Here is the project: 
VEHICLE LOADING PROBLEM
ABSTRACT
Supply chain demands are reaching new heights, pushing companies to find new ways to boost efficiency. Loading and unloading are some of the most routine processes in logistics and are an excellent place to start. Tackling truck loading efficiency presents many opportunities to streamline
operations and reduce costs.
1 Introduction
The problem objective is to pack a set of items into stacks and pack the stacks into trucks to minimize the number of
trucks used.
In terms of data volume, a large instance can contain up to 260000 items and 5000 planned trucks, over a horizon of 7
weeks. Hence, 37142 items per day.
2 Problem Description
Three-dimensional trucks contain stacks packed on the two-dimensional floor. Each stack contains items that are packed one above another. There are three correlated dimensions (length, width, height) and an additional weight dimension. We call horizontal dimensions the length and the width. The position of any element (item or stack) is described in a solution by its position in the three axis X, Y, and Z. There is one origin per truck, corresponding with the leftmost downward position (cf Figure 1)
Figure 1: Views from top to bottom: right view, above view, and left view of a truck, seen from the rear of the truck.
The truck contains 96 items (A1 to AD3) packed into 30 stacks (A to AD).
2.1 Items
An item i is a packaging containing a given product. It is characterized by:
• length li, width wi, and height hi (by convention, the length is larger than the width).
• weight ωi
• stackability code pi
• maximal stackability Pi
• forced orientation Oi
• nesting height h¯i
The stackability code pi is used to define which items can be packed into the same stack: only items with the same stackability code can be packed into the same stack. Items with the same stackability code share the same length and width. But the opposite is false: items with identical length/width may not share the same stackability code. An item i is associated with maximal stackability Pi. It represents the maximal number of items i in a stack. The items may be rotated only in one dimension (horizontal), i.e. the bottom of an item remains the bottom. An item
may be oriented lengthwise (the item’s length is parallel with the length of the truck), or widthwise (the item’s length is parallel with the width of the truck). In Figure 1, stack X is oriented widthwise, while stack Y is oriented lengthwise. Item i may have a forced orientation Oi, in which case the stack s containing item i must have the same orientation.
An item i has a nesting height h¯i which is used for the calculation of the height of stacks: if item i1 is packed above
item i2, then the total height is hi1 + hi2 − h¯i1(cf Figure 2). For the majority of items, the nesting height is equal to
zero.
2.2 Trucks
A vehicle v is characterized by its dimensions length/width/height (Lv, Wv, Hv), its maximum authorized loading
weight Wv, and its cost Cv. The truck’s cost represents a fixed cost that does not depend on the number of items loaded
into the truck.
For structural reasons, there is a maximal total weight TMMv for all the items packed above the bottom item in any stack loaded into truck v.
2.3 Stacks
While items and planned trucks are parameters for the problem, stacks represent the results of the optimization. A stack contains items, packed one above the other, and is loaded into a truck. A stack s is characterized by its dimensions length/width/height (ls, ws, hs) and its weight ωs. The length and width of a stack are the length and width of its items (all the items of a stack share the same length/width). A stack’s orientation is the orientation of all its items. There is a unique orientation (lengthwise or widthwise) for all the items of a stack. The stack is characterized by the coordinates of its origin (xo s, yso, zso) and extremity points (xe s, yse, zse).
As shown in Figure 3, the origin is the leftmost bottom point of the stack (the point nearest the origin of the truck), while the extremity point is the rightmost top point of the stack (the farthest point from the origin of the truck). The coordinates of origin and extremity points of a stack must satisfy the following assumptions:
• xe s - xo s = ls and yse - yso = ws if stack s is oriented lengthwise
• xe s - xo s = ws and yse - yso = ls if stack s is oriented widthwise
• zo s = 0 and zse = hs
A stack’s weight ωs is the sum of the weights of the items it contains:
ωs = X
i∈Is
ωi.
The stack’s height hs is the sum of the heights of its items, minus their nesting heights (see Fig 2):
hs = X
i∈Is
hi − X
i∈Is,i̸=bottomitem
h¯i
3 Problem
The objective function is the minimization of the total cost, subject to the constraints described above and that no free space between objects: Any stack must be adjacent to another stack on its left on the X axis, or if there is a single stack in the truck, the unique stack must be placed at the front of the truck (adjacent to the truck driver):
Figure 4: Example of non-feasible packing.
4 Data
4.1 Input Data
Each instance has two files: the file of items and the file of vehicles. An example of file of item is:
id_item 	length 	width 	height 	weight 	nesting_height 	stackability_code 	forced_orientation 	max_stackability
I0000 	570 	478 	81 	720 	47 	0 	w 	4
I0001 	570 	478 	96 	256 	47 	0 	w 	4
I0002 	1000 	975 	577 	800 	45 	1 	n 	100
NB: the dimension of the items is set lengthwise. The file of vehicles:
id_truck 	length 	width 	height 	max_weight 	max_weight_stack 	cost 	max_density
V0 	14500 	2400 	2800 	24000 	100000 	1410.6 	1500
V1 	14940 	2500 	2950 	24000 	100000 	1500 	1500