Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

COMPX556 –Assignment 1 (25%)

In this assignment you will implement either Tabu Search or Variable Neighbourhood            Search or Large Neighbourhood Search and investigate its usefulness for solving the 2D         rectangle packing problem. Pick whichever algorithm you prefer. You will need to produce a program, a report and video for this assignment. You may work in pairs. Please make sure     that every source code file and the report has the details of both partners in the format         name_ID_name_ID. Any programming language can be used for this assignment. No existing metaheuristic code can be used for this assignment.

The Problem

The 2D rectangle packing problem is also known as the stock cutting problem. It’s a problem faced by the wood, glass and paper industries. The issue is how to cut out a certain number  of shapes from a material (such as a chunk of wood or a roll of steel) with the minimum         wastage. In other words, we have a set of items and we want to arrange those items inside  one or more larger regions (called objects) such that an objective function (usually called       wastage) is minimized. The 2D rectangle packing problem is a specific instance of this class   of problem where:

n The items are 2D rectangles

n There is a single rectangular 2D object with a fixed width but potentially infinite height (e.g. a roll of steel)

n Items can be rotated 90 degrees and placed anywhere on the object

n Individual items cannot be cut up or overlapped

Two examples of solutions to the 2D rectangular packing problem for seven rectangles of

different sizes1  are shown below:

 

The configuration on the right has lower wastage because the total height of the

configuration on the right is less than the total height of the configuration on the left. So in the specific case of the 2D rectangle packing problem, height of the configuration can be a proxy for wastage.

While the two above solutions are relatively small and can be solved by hand, realistic     problems are much larger. On moodle I have provided four stock cutting problems in the form of CSV files, described in the following table:

Problem

# rectangles

Total area to be cut

1 small number of small shapes

20

1355

2 large number of small shapes

100

9822

3 larger number of larger shapes

150

33121

4 larger number of larger shapes, tending to be wider than higher on average

200

28091

Each CSV file consists of a row for each individual rectangle, and is of the form

<id>,<width>,<height>. The width the steel is always 100. The final row in the CSV file is the total area, which you can use as a sanity check.

Search Algorithms

The three search algorithms are clearly described in lectures and in the book and you need to implement one of them. You should make sure that you understand clearly how the       algorithm works before beginning.

Next, think about how to solve this problem with your given algorithm. You need to consider all possible components for a solutions, e.g. :

•   The problem representation : how can a valid solution be represented?

•   The value function : how can wastage be measured? (This is easy: wastage is directly proportional to the height of a configuration)

•   The neighbourhood and the move function : how can neighbourhoods of valid  solutions be defined around each possible solution, with an appropriate move function for moving to neighbours? Will infeasible solutions be allowed or        disallowed?

•   The initialisation : how will the initial solution be generated?

•   The algorithm specific issues: e.g. how will tabus be implemented if you focus on Tabu Search? How will destroy/repair methods be implemented if you focus on  Large Neighbourhood Search?

•   The termination criteria;

•   etc

To get started, implement the most naïve version of your algorithm and test in on problem 1 for debugging. Then expand it to the other problems and see how it goes. When that is   done, expand the implementation to include some of the advanced tweaks and                    improvements that are possible for these algorithms.

A minimum passing effort should consist of multiple experiments performed against the      four test problems to determine the overall best variant of your chosen algorithm. You can  choose to focus on one aspect (e.g. varying the length of the tabu list systematically and       seeing what happens) or you can focus on multiple aspects (e.g. the advanced concepts) or you can do both. Since most of these algorithms are randomised, a good experiment should consist of at least 10 runs of each variant with the average and lowest costs reported. Also  include timing results: a configuration that achieves only a slight improvement in value may actually take a lot longer, and timing data can reveal this. You will need to ensure that you   run your program on identical hardware in this case.

Your program should also have a function for outputting the best solution found. It could  either do this by opening a GUI window and showing the solution, or drawing the solution to an image file, so you include them in your report.

Deliverables

Ensure that every submitted file and document has a header with the details of both partners in the format name_ID_name_ID.

Code (8 marks)

--  make it available on github, either public or private (if private, share with my github account: mmayo888)

Report ( 10 marks)

-- Provide a detailed report, 2-4 pages, IEEE format, PDF, submitted via moodle

-- The report should detail the experiments you have done to solve the three test problems -- You can include your results in the form of graphs and tables, but the results should be    reported succinctly

-- Include results from methods that did not work well as well

-- The report should be detailed enough for a classmate to reproduce what you did, which means you need to about 1-2 pages on the method and 1-2 pages on the results. Include a short introduction and a conclusion as well.

-- Include clickable links to the code and video in the report

Video (5 marks, pass or fail; required to get marks for the Code section)

-- Provide a video demonstration and walkthrough of your code of about 15 minutes; this should be linked to in the report

-- Perform a demo run of your program on one of the test problems

-- You can use a screen recorder such as OBS to achieve this

-- Upload the video to YouTube and make it unlisted (so I can view it but others without the link can’t); alternatively post it elsewhere but make sure your link is valid

Participation on Moodle (2 marks, pass or fail)

-- Post your best results for the test problems on Moodle

-- If everyone uses the same value function (height of the configuration) then everyone’s results will be comparable so we can have a competition in the class to see who wins

Total Marks: 25