From 4336cb30e9b8d94d23980b492235adb497abf6e0 Mon Sep 17 00:00:00 2001 From: MitchellHansen Date: Mon, 5 Dec 2016 03:39:36 -0800 Subject: [PATCH] Final lab --- lab5/CMakeLists.txt | 137 +++++ lab5/CS417_Lab5.pdf | Bin 0 -> 154642 bytes lab5/Codes/FSS-Modified/.DS_Store | Bin 0 -> 6148 bytes lab5/Codes/FSS-Modified/.FSS.cpp.swp | Bin 0 -> 12288 bytes lab5/Codes/FSS-Modified/.idea/FSS.iml | 35 ++ lab5/Codes/FSS-Modified/.idea/misc.xml | 14 + lab5/Codes/FSS-Modified/.idea/modules.xml | 8 + lab5/Codes/FSS-Modified/.idea/workspace.xml | 534 ++++++++++++++++++++ lab5/Codes/FSS-Modified/CMakeLists.txt | 18 + lab5/Codes/FSS-Modified/FSS.cpp | 125 +++++ lab5/Codes/FSS-Modified/FSS.h | 65 +++ lab5/Codes/FSS-Modified/FSSB.cpp | 118 +++++ lab5/Codes/FSS-Modified/FSSB.h | 63 +++ lab5/Codes/FSS-Modified/FSSNW.cpp | 127 +++++ lab5/Codes/FSS-Modified/FSSNW.h | 63 +++ lab5/Codes/FSS-Modified/bin/FSS | Bin 0 -> 15032 bytes lab5/Codes/FSS-Modified/fss.txt | 5 + lab5/Codes/FSS-Modified/fss_test.txt | 6 + lab5/Codes/FSS-Modified/main.cpp | 328 ++++++++++++ lab5/Codes/FSS-Modified/makefile | 27 + lab5/Codes/FSSB/FSSB.cpp | 115 +++++ lab5/Codes/FSSB/FSSB.h | 60 +++ lab5/Codes/FSSB/FSSB.o | Bin 0 -> 6464 bytes lab5/Codes/FSSB/bin/FSSB | Bin 0 -> 15000 bytes lab5/Codes/FSSB/fss.txt | 5 + lab5/Codes/FSSB/main.cpp | 49 ++ lab5/Codes/FSSB/main.o | Bin 0 -> 3880 bytes lab5/Codes/FSSB/makefile | 27 + lab5/Codes/FSSNW/.DS_Store | Bin 0 -> 6148 bytes lab5/Codes/FSSNW/FSSNW.cpp | 124 +++++ lab5/Codes/FSSNW/FSSNW.h | 60 +++ lab5/Codes/FSSNW/FSSNW.o | Bin 0 -> 6656 bytes lab5/Codes/FSSNW/bin/FSSNW | Bin 0 -> 15008 bytes lab5/Codes/FSSNW/fss.txt | 5 + lab5/Codes/FSSNW/main.cpp | 49 ++ lab5/Codes/FSSNW/main.o | Bin 0 -> 3880 bytes lab5/Codes/FSSNW/makefile | 27 + lab5/Codes/TaillardDataSets/1.txt | 6 + lab5/Codes/TaillardDataSets/10.txt | 6 + lab5/Codes/TaillardDataSets/100.txt | 11 + lab5/Codes/TaillardDataSets/101.txt | 21 + lab5/Codes/TaillardDataSets/102.txt | 21 + lab5/Codes/TaillardDataSets/103.txt | 21 + lab5/Codes/TaillardDataSets/104.txt | 21 + lab5/Codes/TaillardDataSets/105.txt | 21 + lab5/Codes/TaillardDataSets/106.txt | 21 + lab5/Codes/TaillardDataSets/107.txt | 21 + lab5/Codes/TaillardDataSets/108.txt | 21 + lab5/Codes/TaillardDataSets/109.txt | 21 + lab5/Codes/TaillardDataSets/11.txt | 11 + lab5/Codes/TaillardDataSets/110.txt | 21 + lab5/Codes/TaillardDataSets/111.txt | 21 + lab5/Codes/TaillardDataSets/112.txt | 21 + lab5/Codes/TaillardDataSets/113.txt | 21 + lab5/Codes/TaillardDataSets/114.txt | 21 + lab5/Codes/TaillardDataSets/115.txt | 21 + lab5/Codes/TaillardDataSets/116.txt | 21 + lab5/Codes/TaillardDataSets/117.txt | 21 + lab5/Codes/TaillardDataSets/118.txt | 21 + lab5/Codes/TaillardDataSets/119.txt | 21 + lab5/Codes/TaillardDataSets/12.txt | 11 + lab5/Codes/TaillardDataSets/120.txt | 21 + lab5/Codes/TaillardDataSets/13.txt | 11 + lab5/Codes/TaillardDataSets/14.txt | 11 + lab5/Codes/TaillardDataSets/15.txt | 11 + lab5/Codes/TaillardDataSets/16.txt | 11 + lab5/Codes/TaillardDataSets/17.txt | 11 + lab5/Codes/TaillardDataSets/18.txt | 11 + lab5/Codes/TaillardDataSets/19.txt | 11 + lab5/Codes/TaillardDataSets/2.txt | 6 + lab5/Codes/TaillardDataSets/20.txt | 11 + lab5/Codes/TaillardDataSets/21.txt | 21 + lab5/Codes/TaillardDataSets/22.txt | 21 + lab5/Codes/TaillardDataSets/23.txt | 21 + lab5/Codes/TaillardDataSets/24.txt | 21 + lab5/Codes/TaillardDataSets/25.txt | 21 + lab5/Codes/TaillardDataSets/26.txt | 21 + lab5/Codes/TaillardDataSets/27.txt | 21 + lab5/Codes/TaillardDataSets/28.txt | 21 + lab5/Codes/TaillardDataSets/29.txt | 21 + lab5/Codes/TaillardDataSets/3.txt | 6 + lab5/Codes/TaillardDataSets/30.txt | 21 + lab5/Codes/TaillardDataSets/31.txt | 6 + lab5/Codes/TaillardDataSets/32.txt | 6 + lab5/Codes/TaillardDataSets/33.txt | 6 + lab5/Codes/TaillardDataSets/34.txt | 6 + lab5/Codes/TaillardDataSets/35.txt | 6 + lab5/Codes/TaillardDataSets/36.txt | 6 + lab5/Codes/TaillardDataSets/37.txt | 6 + lab5/Codes/TaillardDataSets/38.txt | 6 + lab5/Codes/TaillardDataSets/39.txt | 6 + lab5/Codes/TaillardDataSets/4.txt | 6 + lab5/Codes/TaillardDataSets/40.txt | 6 + lab5/Codes/TaillardDataSets/41.txt | 11 + lab5/Codes/TaillardDataSets/42.txt | 11 + lab5/Codes/TaillardDataSets/43.txt | 11 + lab5/Codes/TaillardDataSets/44.txt | 11 + lab5/Codes/TaillardDataSets/45.txt | 11 + lab5/Codes/TaillardDataSets/46.txt | 11 + lab5/Codes/TaillardDataSets/47.txt | 11 + lab5/Codes/TaillardDataSets/48.txt | 11 + lab5/Codes/TaillardDataSets/49.txt | 11 + lab5/Codes/TaillardDataSets/5.txt | 6 + lab5/Codes/TaillardDataSets/50.txt | 11 + lab5/Codes/TaillardDataSets/51.txt | 21 + lab5/Codes/TaillardDataSets/52.txt | 21 + lab5/Codes/TaillardDataSets/53.txt | 21 + lab5/Codes/TaillardDataSets/54.txt | 21 + lab5/Codes/TaillardDataSets/55.txt | 21 + lab5/Codes/TaillardDataSets/56.txt | 21 + lab5/Codes/TaillardDataSets/57.txt | 21 + lab5/Codes/TaillardDataSets/58.txt | 21 + lab5/Codes/TaillardDataSets/59.txt | 21 + lab5/Codes/TaillardDataSets/6.txt | 6 + lab5/Codes/TaillardDataSets/60.txt | 21 + lab5/Codes/TaillardDataSets/61.txt | 6 + lab5/Codes/TaillardDataSets/62.txt | 6 + lab5/Codes/TaillardDataSets/63.txt | 6 + lab5/Codes/TaillardDataSets/64.txt | 6 + lab5/Codes/TaillardDataSets/65.txt | 6 + lab5/Codes/TaillardDataSets/66.txt | 6 + lab5/Codes/TaillardDataSets/67.txt | 6 + lab5/Codes/TaillardDataSets/68.txt | 6 + lab5/Codes/TaillardDataSets/69.txt | 6 + lab5/Codes/TaillardDataSets/7.txt | 6 + lab5/Codes/TaillardDataSets/70.txt | 6 + lab5/Codes/TaillardDataSets/71.txt | 11 + lab5/Codes/TaillardDataSets/72.txt | 11 + lab5/Codes/TaillardDataSets/73.txt | 11 + lab5/Codes/TaillardDataSets/74.txt | 11 + lab5/Codes/TaillardDataSets/75.txt | 11 + lab5/Codes/TaillardDataSets/76.txt | 11 + lab5/Codes/TaillardDataSets/77.txt | 11 + lab5/Codes/TaillardDataSets/78.txt | 11 + lab5/Codes/TaillardDataSets/79.txt | 11 + lab5/Codes/TaillardDataSets/8.txt | 6 + lab5/Codes/TaillardDataSets/80.txt | 11 + lab5/Codes/TaillardDataSets/81.txt | 21 + lab5/Codes/TaillardDataSets/82.txt | 21 + lab5/Codes/TaillardDataSets/83.txt | 21 + lab5/Codes/TaillardDataSets/84.txt | 21 + lab5/Codes/TaillardDataSets/85.txt | 21 + lab5/Codes/TaillardDataSets/86.txt | 21 + lab5/Codes/TaillardDataSets/87.txt | 21 + lab5/Codes/TaillardDataSets/88.txt | 21 + lab5/Codes/TaillardDataSets/89.txt | 21 + lab5/Codes/TaillardDataSets/9.txt | 6 + lab5/Codes/TaillardDataSets/90.txt | 21 + lab5/Codes/TaillardDataSets/91.txt | 11 + lab5/Codes/TaillardDataSets/92.txt | 11 + lab5/Codes/TaillardDataSets/93.txt | 11 + lab5/Codes/TaillardDataSets/94.txt | 11 + lab5/Codes/TaillardDataSets/95.txt | 11 + lab5/Codes/TaillardDataSets/96.txt | 11 + lab5/Codes/TaillardDataSets/97.txt | 11 + lab5/Codes/TaillardDataSets/98.txt | 11 + lab5/Codes/TaillardDataSets/99.txt | 11 + lab5/Results/README | 1 + lab5/Results/results.ods | Bin 0 -> 18382 bytes lab5/Results/writeup.pdf | Bin 0 -> 44307 bytes lab5/Results/writeup.tex | 221 ++++++++ 161 files changed, 4086 insertions(+) create mode 100644 lab5/CMakeLists.txt create mode 100644 lab5/CS417_Lab5.pdf create mode 100644 lab5/Codes/FSS-Modified/.DS_Store create mode 100644 lab5/Codes/FSS-Modified/.FSS.cpp.swp create mode 100644 lab5/Codes/FSS-Modified/.idea/FSS.iml create mode 100644 lab5/Codes/FSS-Modified/.idea/misc.xml create mode 100644 lab5/Codes/FSS-Modified/.idea/modules.xml create mode 100644 lab5/Codes/FSS-Modified/.idea/workspace.xml create mode 100644 lab5/Codes/FSS-Modified/CMakeLists.txt create mode 100644 lab5/Codes/FSS-Modified/FSS.cpp create mode 100644 lab5/Codes/FSS-Modified/FSS.h create mode 100644 lab5/Codes/FSS-Modified/FSSB.cpp create mode 100644 lab5/Codes/FSS-Modified/FSSB.h create mode 100644 lab5/Codes/FSS-Modified/FSSNW.cpp create mode 100644 lab5/Codes/FSS-Modified/FSSNW.h create mode 100755 lab5/Codes/FSS-Modified/bin/FSS create mode 100644 lab5/Codes/FSS-Modified/fss.txt create mode 100644 lab5/Codes/FSS-Modified/fss_test.txt create mode 100644 lab5/Codes/FSS-Modified/main.cpp create mode 100644 lab5/Codes/FSS-Modified/makefile create mode 100644 lab5/Codes/FSSB/FSSB.cpp create mode 100644 lab5/Codes/FSSB/FSSB.h create mode 100644 lab5/Codes/FSSB/FSSB.o create mode 100755 lab5/Codes/FSSB/bin/FSSB create mode 100644 lab5/Codes/FSSB/fss.txt create mode 100644 lab5/Codes/FSSB/main.cpp create mode 100644 lab5/Codes/FSSB/main.o create mode 100644 lab5/Codes/FSSB/makefile create mode 100644 lab5/Codes/FSSNW/.DS_Store create mode 100644 lab5/Codes/FSSNW/FSSNW.cpp create mode 100644 lab5/Codes/FSSNW/FSSNW.h create mode 100644 lab5/Codes/FSSNW/FSSNW.o create mode 100755 lab5/Codes/FSSNW/bin/FSSNW create mode 100644 lab5/Codes/FSSNW/fss.txt create mode 100644 lab5/Codes/FSSNW/main.cpp create mode 100644 lab5/Codes/FSSNW/main.o create mode 100644 lab5/Codes/FSSNW/makefile create mode 100644 lab5/Codes/TaillardDataSets/1.txt create mode 100644 lab5/Codes/TaillardDataSets/10.txt create mode 100644 lab5/Codes/TaillardDataSets/100.txt create mode 100644 lab5/Codes/TaillardDataSets/101.txt create mode 100644 lab5/Codes/TaillardDataSets/102.txt create mode 100644 lab5/Codes/TaillardDataSets/103.txt create mode 100644 lab5/Codes/TaillardDataSets/104.txt create mode 100644 lab5/Codes/TaillardDataSets/105.txt create mode 100644 lab5/Codes/TaillardDataSets/106.txt create mode 100644 lab5/Codes/TaillardDataSets/107.txt create mode 100644 lab5/Codes/TaillardDataSets/108.txt create mode 100644 lab5/Codes/TaillardDataSets/109.txt create mode 100644 lab5/Codes/TaillardDataSets/11.txt create mode 100644 lab5/Codes/TaillardDataSets/110.txt create mode 100644 lab5/Codes/TaillardDataSets/111.txt create mode 100644 lab5/Codes/TaillardDataSets/112.txt create mode 100644 lab5/Codes/TaillardDataSets/113.txt create mode 100644 lab5/Codes/TaillardDataSets/114.txt create mode 100644 lab5/Codes/TaillardDataSets/115.txt create mode 100644 lab5/Codes/TaillardDataSets/116.txt create mode 100644 lab5/Codes/TaillardDataSets/117.txt create mode 100644 lab5/Codes/TaillardDataSets/118.txt create mode 100644 lab5/Codes/TaillardDataSets/119.txt create mode 100644 lab5/Codes/TaillardDataSets/12.txt create mode 100644 lab5/Codes/TaillardDataSets/120.txt create mode 100644 lab5/Codes/TaillardDataSets/13.txt create mode 100644 lab5/Codes/TaillardDataSets/14.txt create mode 100644 lab5/Codes/TaillardDataSets/15.txt create mode 100644 lab5/Codes/TaillardDataSets/16.txt create mode 100644 lab5/Codes/TaillardDataSets/17.txt create mode 100644 lab5/Codes/TaillardDataSets/18.txt create mode 100644 lab5/Codes/TaillardDataSets/19.txt create mode 100644 lab5/Codes/TaillardDataSets/2.txt create mode 100644 lab5/Codes/TaillardDataSets/20.txt create mode 100644 lab5/Codes/TaillardDataSets/21.txt create mode 100644 lab5/Codes/TaillardDataSets/22.txt create mode 100644 lab5/Codes/TaillardDataSets/23.txt create mode 100644 lab5/Codes/TaillardDataSets/24.txt create mode 100644 lab5/Codes/TaillardDataSets/25.txt create mode 100644 lab5/Codes/TaillardDataSets/26.txt create mode 100644 lab5/Codes/TaillardDataSets/27.txt create mode 100644 lab5/Codes/TaillardDataSets/28.txt create mode 100644 lab5/Codes/TaillardDataSets/29.txt create mode 100644 lab5/Codes/TaillardDataSets/3.txt create mode 100644 lab5/Codes/TaillardDataSets/30.txt create mode 100644 lab5/Codes/TaillardDataSets/31.txt create mode 100644 lab5/Codes/TaillardDataSets/32.txt create mode 100644 lab5/Codes/TaillardDataSets/33.txt create mode 100644 lab5/Codes/TaillardDataSets/34.txt create mode 100644 lab5/Codes/TaillardDataSets/35.txt create mode 100644 lab5/Codes/TaillardDataSets/36.txt create mode 100644 lab5/Codes/TaillardDataSets/37.txt create mode 100644 lab5/Codes/TaillardDataSets/38.txt create mode 100644 lab5/Codes/TaillardDataSets/39.txt create mode 100644 lab5/Codes/TaillardDataSets/4.txt create mode 100644 lab5/Codes/TaillardDataSets/40.txt create mode 100644 lab5/Codes/TaillardDataSets/41.txt create mode 100644 lab5/Codes/TaillardDataSets/42.txt create mode 100644 lab5/Codes/TaillardDataSets/43.txt create mode 100644 lab5/Codes/TaillardDataSets/44.txt create mode 100644 lab5/Codes/TaillardDataSets/45.txt create mode 100644 lab5/Codes/TaillardDataSets/46.txt create mode 100644 lab5/Codes/TaillardDataSets/47.txt create mode 100644 lab5/Codes/TaillardDataSets/48.txt create mode 100644 lab5/Codes/TaillardDataSets/49.txt create mode 100644 lab5/Codes/TaillardDataSets/5.txt create mode 100644 lab5/Codes/TaillardDataSets/50.txt create mode 100644 lab5/Codes/TaillardDataSets/51.txt create mode 100644 lab5/Codes/TaillardDataSets/52.txt create mode 100644 lab5/Codes/TaillardDataSets/53.txt create mode 100644 lab5/Codes/TaillardDataSets/54.txt create mode 100644 lab5/Codes/TaillardDataSets/55.txt create mode 100644 lab5/Codes/TaillardDataSets/56.txt create mode 100644 lab5/Codes/TaillardDataSets/57.txt create mode 100644 lab5/Codes/TaillardDataSets/58.txt create mode 100644 lab5/Codes/TaillardDataSets/59.txt create mode 100644 lab5/Codes/TaillardDataSets/6.txt create mode 100644 lab5/Codes/TaillardDataSets/60.txt create mode 100644 lab5/Codes/TaillardDataSets/61.txt create mode 100644 lab5/Codes/TaillardDataSets/62.txt create mode 100644 lab5/Codes/TaillardDataSets/63.txt create mode 100644 lab5/Codes/TaillardDataSets/64.txt create mode 100644 lab5/Codes/TaillardDataSets/65.txt create mode 100644 lab5/Codes/TaillardDataSets/66.txt create mode 100644 lab5/Codes/TaillardDataSets/67.txt create mode 100644 lab5/Codes/TaillardDataSets/68.txt create mode 100644 lab5/Codes/TaillardDataSets/69.txt create mode 100644 lab5/Codes/TaillardDataSets/7.txt create mode 100644 lab5/Codes/TaillardDataSets/70.txt create mode 100644 lab5/Codes/TaillardDataSets/71.txt create mode 100644 lab5/Codes/TaillardDataSets/72.txt create mode 100644 lab5/Codes/TaillardDataSets/73.txt create mode 100644 lab5/Codes/TaillardDataSets/74.txt create mode 100644 lab5/Codes/TaillardDataSets/75.txt create mode 100644 lab5/Codes/TaillardDataSets/76.txt create mode 100644 lab5/Codes/TaillardDataSets/77.txt create mode 100644 lab5/Codes/TaillardDataSets/78.txt create mode 100644 lab5/Codes/TaillardDataSets/79.txt create mode 100644 lab5/Codes/TaillardDataSets/8.txt create mode 100644 lab5/Codes/TaillardDataSets/80.txt create mode 100644 lab5/Codes/TaillardDataSets/81.txt create mode 100644 lab5/Codes/TaillardDataSets/82.txt create mode 100644 lab5/Codes/TaillardDataSets/83.txt create mode 100644 lab5/Codes/TaillardDataSets/84.txt create mode 100644 lab5/Codes/TaillardDataSets/85.txt create mode 100644 lab5/Codes/TaillardDataSets/86.txt create mode 100644 lab5/Codes/TaillardDataSets/87.txt create mode 100644 lab5/Codes/TaillardDataSets/88.txt create mode 100644 lab5/Codes/TaillardDataSets/89.txt create mode 100644 lab5/Codes/TaillardDataSets/9.txt create mode 100644 lab5/Codes/TaillardDataSets/90.txt create mode 100644 lab5/Codes/TaillardDataSets/91.txt create mode 100644 lab5/Codes/TaillardDataSets/92.txt create mode 100644 lab5/Codes/TaillardDataSets/93.txt create mode 100644 lab5/Codes/TaillardDataSets/94.txt create mode 100644 lab5/Codes/TaillardDataSets/95.txt create mode 100644 lab5/Codes/TaillardDataSets/96.txt create mode 100644 lab5/Codes/TaillardDataSets/97.txt create mode 100644 lab5/Codes/TaillardDataSets/98.txt create mode 100644 lab5/Codes/TaillardDataSets/99.txt create mode 100644 lab5/Results/README create mode 100644 lab5/Results/results.ods create mode 100644 lab5/Results/writeup.pdf create mode 100644 lab5/Results/writeup.tex diff --git a/lab5/CMakeLists.txt b/lab5/CMakeLists.txt new file mode 100644 index 0000000..eac91b1 --- /dev/null +++ b/lab5/CMakeLists.txt @@ -0,0 +1,137 @@ +cmake_minimum_required(VERSION 3.6) +project(lab5) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + +set(SOURCE_FILES + Codes/FSS/FSS.cpp + Codes/FSS/FSS.h + Codes/FSS/main.cpp + Codes/FSSB/FSSB.cpp + Codes/FSSB/FSSB.h + Codes/FSSB/main.cpp + Codes/FSSNW/FSSNW.cpp + Codes/FSSNW/FSSNW.h + Codes/FSSNW/main.cpp + Codes/TaillardDataSets/1.txt + Codes/TaillardDataSets/10.txt + Codes/TaillardDataSets/100.txt + Codes/TaillardDataSets/101.txt + Codes/TaillardDataSets/102.txt + Codes/TaillardDataSets/103.txt + Codes/TaillardDataSets/104.txt + Codes/TaillardDataSets/105.txt + Codes/TaillardDataSets/106.txt + Codes/TaillardDataSets/107.txt + Codes/TaillardDataSets/108.txt + Codes/TaillardDataSets/109.txt + Codes/TaillardDataSets/11.txt + Codes/TaillardDataSets/110.txt + Codes/TaillardDataSets/111.txt + Codes/TaillardDataSets/112.txt + Codes/TaillardDataSets/113.txt + Codes/TaillardDataSets/114.txt + Codes/TaillardDataSets/115.txt + Codes/TaillardDataSets/116.txt + Codes/TaillardDataSets/117.txt + Codes/TaillardDataSets/118.txt + Codes/TaillardDataSets/119.txt + Codes/TaillardDataSets/12.txt + Codes/TaillardDataSets/120.txt + Codes/TaillardDataSets/13.txt + Codes/TaillardDataSets/14.txt + Codes/TaillardDataSets/15.txt + Codes/TaillardDataSets/16.txt + Codes/TaillardDataSets/17.txt + Codes/TaillardDataSets/18.txt + Codes/TaillardDataSets/19.txt + Codes/TaillardDataSets/2.txt + Codes/TaillardDataSets/20.txt + Codes/TaillardDataSets/21.txt + Codes/TaillardDataSets/22.txt + Codes/TaillardDataSets/23.txt + Codes/TaillardDataSets/24.txt + Codes/TaillardDataSets/25.txt + Codes/TaillardDataSets/26.txt + Codes/TaillardDataSets/27.txt + Codes/TaillardDataSets/28.txt + Codes/TaillardDataSets/29.txt + Codes/TaillardDataSets/3.txt + Codes/TaillardDataSets/30.txt + Codes/TaillardDataSets/31.txt + Codes/TaillardDataSets/32.txt + Codes/TaillardDataSets/33.txt + Codes/TaillardDataSets/34.txt + Codes/TaillardDataSets/35.txt + Codes/TaillardDataSets/36.txt + Codes/TaillardDataSets/37.txt + Codes/TaillardDataSets/38.txt + Codes/TaillardDataSets/39.txt + Codes/TaillardDataSets/4.txt + Codes/TaillardDataSets/40.txt + Codes/TaillardDataSets/41.txt + Codes/TaillardDataSets/42.txt + Codes/TaillardDataSets/43.txt + Codes/TaillardDataSets/44.txt + Codes/TaillardDataSets/45.txt + Codes/TaillardDataSets/46.txt + Codes/TaillardDataSets/47.txt + Codes/TaillardDataSets/48.txt + Codes/TaillardDataSets/49.txt + Codes/TaillardDataSets/5.txt + Codes/TaillardDataSets/50.txt + Codes/TaillardDataSets/51.txt + Codes/TaillardDataSets/52.txt + Codes/TaillardDataSets/53.txt + Codes/TaillardDataSets/54.txt + Codes/TaillardDataSets/55.txt + Codes/TaillardDataSets/56.txt + Codes/TaillardDataSets/57.txt + Codes/TaillardDataSets/58.txt + Codes/TaillardDataSets/59.txt + Codes/TaillardDataSets/6.txt + Codes/TaillardDataSets/60.txt + Codes/TaillardDataSets/61.txt + Codes/TaillardDataSets/62.txt + Codes/TaillardDataSets/63.txt + Codes/TaillardDataSets/64.txt + Codes/TaillardDataSets/65.txt + Codes/TaillardDataSets/66.txt + Codes/TaillardDataSets/67.txt + Codes/TaillardDataSets/68.txt + Codes/TaillardDataSets/69.txt + Codes/TaillardDataSets/7.txt + Codes/TaillardDataSets/70.txt + Codes/TaillardDataSets/71.txt + Codes/TaillardDataSets/72.txt + Codes/TaillardDataSets/73.txt + Codes/TaillardDataSets/74.txt + Codes/TaillardDataSets/75.txt + Codes/TaillardDataSets/76.txt + Codes/TaillardDataSets/77.txt + Codes/TaillardDataSets/78.txt + Codes/TaillardDataSets/79.txt + Codes/TaillardDataSets/8.txt + Codes/TaillardDataSets/80.txt + Codes/TaillardDataSets/81.txt + Codes/TaillardDataSets/82.txt + Codes/TaillardDataSets/83.txt + Codes/TaillardDataSets/84.txt + Codes/TaillardDataSets/85.txt + Codes/TaillardDataSets/86.txt + Codes/TaillardDataSets/87.txt + Codes/TaillardDataSets/88.txt + Codes/TaillardDataSets/89.txt + Codes/TaillardDataSets/9.txt + Codes/TaillardDataSets/90.txt + Codes/TaillardDataSets/91.txt + Codes/TaillardDataSets/92.txt + Codes/TaillardDataSets/93.txt + Codes/TaillardDataSets/94.txt + Codes/TaillardDataSets/95.txt + Codes/TaillardDataSets/96.txt + Codes/TaillardDataSets/97.txt + Codes/TaillardDataSets/98.txt + Codes/TaillardDataSets/99.txt) + +add_executable(lab5 ${SOURCE_FILES}) \ No newline at end of file diff --git a/lab5/CS417_Lab5.pdf b/lab5/CS417_Lab5.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f9f993c81818e7cdd98a0d4f59146f6418ec77a2 GIT binary patch literal 154642 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 ^_Ppdh-gy)&8VrUT#+Z*{o3K1>*Vmn)PzGv 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 LL~rW}(G + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab5/Codes/FSS-Modified/.idea/misc.xml b/lab5/Codes/FSS-Modified/.idea/misc.xml new file mode 100644 index 0000000..3eb495b --- /dev/null +++ b/lab5/Codes/FSS-Modified/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab5/Codes/FSS-Modified/.idea/modules.xml b/lab5/Codes/FSS-Modified/.idea/modules.xml new file mode 100644 index 0000000..e399fe6 --- /dev/null +++ b/lab5/Codes/FSS-Modified/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/lab5/Codes/FSS-Modified/.idea/workspace.xml b/lab5/Codes/FSS-Modified/.idea/workspace.xml new file mode 100644 index 0000000..5c833ed --- /dev/null +++ b/lab5/Codes/FSS-Modified/.idea/workspace.xml @@ -0,0 +1,534 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1480907549006 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lab5/Codes/FSS-Modified/CMakeLists.txt b/lab5/Codes/FSS-Modified/CMakeLists.txt new file mode 100644 index 0000000..269a203 --- /dev/null +++ b/lab5/Codes/FSS-Modified/CMakeLists.txt @@ -0,0 +1,18 @@ +cmake_minimum_required(VERSION 3.6) +project(FSS) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + +set(SOURCE_FILES + bin/FSS + FSS.cpp + FSS.h + FSSB.cpp + FSSB.h + FSSNW.cpp + FSSNW.h + fss.txt + main.cpp + makefile) + +add_executable(FSS ${SOURCE_FILES}) \ No newline at end of file diff --git a/lab5/Codes/FSS-Modified/FSS.cpp b/lab5/Codes/FSS-Modified/FSS.cpp new file mode 100644 index 0000000..3375b9c --- /dev/null +++ b/lab5/Codes/FSS-Modified/FSS.cpp @@ -0,0 +1,125 @@ +/** + * @brief Flow shop scheduling + * @author doc. MSc. Donald Davendra Ph.D. + * @date 3.10.2013 + * + * This is a simple class to calculate the makespan of the flowshop scheduling schedule. + */ + +/*! \file FSS.h + \brief A FSS header file. + */ +#include "FSS.h" + +#include +#include +#include +#include + +using namespace std; + +cFSS::cFSS(){ +} + +void cFSS::Init(std::string file_path){ + + ifstream infile; + infile.open(file_path); + + if(!infile.is_open()) { + cout << "Error Opening File.\n"; + exit(1); + } + else { + infile >> m_Machines; + infile >> m_Jobs; + + m_ProcessTime = new float*[m_Machines]; + for (int i = 0; i < m_Machines; i++) { + m_ProcessTime[i] = new float[m_Jobs]; + } + + for (int i = 0; i < (m_Machines); i++) { + for (int j = 0; j < m_Jobs; j++) { + infile >> m_ProcessTime[i][j]; + } + } + + m_CompletionTime = new float*[m_Machines]; + for (int i = 0; i < m_Machines; i++) { + m_CompletionTime[i] = new float[m_Jobs]; + } + } + + infile.close(); +} + +cFSS::~cFSS(){ + for (int i = 0; i < m_Machines; i++) { + delete [] m_ProcessTime[i]; + } + delete [] m_ProcessTime; + + for (int i = 0; i < m_Machines; i++) { + delete [] m_CompletionTime[i]; + } + delete [] m_CompletionTime; +} + +int cFSS::GetMachines(){ + + return m_Machines; +} + +int cFSS::GetJobs(){ + + return m_Jobs; +} + +float cFSS::Makespan(int *Schedule){ + double max; + + Initialize(); + + // Calculate processing time for all jobs on first machine + m_CompletionTime[0][0] = m_ProcessTime[0][Schedule[0]-1]; + + for (int i = 1; i < m_Jobs; i++) { + m_CompletionTime[0][i] = (m_CompletionTime[0][i-1] + m_ProcessTime[0][Schedule[i]-1]); + } + + // Calculate the processing time for first job on all machines + + for (int i = 1; i < m_Machines; i++) { + m_CompletionTime[i][0] = (m_CompletionTime[i-1][0] + m_ProcessTime[i][Schedule[0]-1]); + } + + // Calculate the rest of the processing time + for (int i = 1; i < m_Machines; i++) { + for (int j = 1; j < m_Jobs; j++) { + max = Max(m_CompletionTime[i][j-1], m_CompletionTime[i-1][j]); + m_CompletionTime[i][j] = m_ProcessTime[i][Schedule[j]-1] + max; + } + } + + // Return the makespan. + return m_CompletionTime[m_Machines-1][m_Jobs-1]; + +} + +void cFSS::Initialize(){ + for (int i = 0; i < m_Machines; i++) { + for (int j = 0; j < m_Jobs; j++) { + m_CompletionTime[i][j] = 0; + } + + } + +} + +float cFSS::Max(float A,float B){ + if(A>=B) + return A; + else + return B; +} diff --git a/lab5/Codes/FSS-Modified/FSS.h b/lab5/Codes/FSS-Modified/FSS.h new file mode 100644 index 0000000..fdfed18 --- /dev/null +++ b/lab5/Codes/FSS-Modified/FSS.h @@ -0,0 +1,65 @@ +/** + * @brief Flow shop scheduling + * @author doc. MSc. Donald Davendra Ph.D. + * @date 3.10.2013 + * + * This is a simple class to calculate the makespan of the flowshop scheduling schedule. + */ + +#ifndef __FSS_H__ +#define __FSS_H__ + +#include + +class cFSS{ + +public: + //! A constructor. + /*! + Constructs the FSS class, and assigns the values. + */ + cFSS(); + + void Init(std::string file_path); + + //! A destructor. + /*! + Clears the memory. + */ + ~cFSS(); + + //! A normal member taking in the schedule and returning the makespan. + /*! + \param the schedule + \return The cost of the tours + */ + float Makespan(int *Schedule); + + //! Returns the number of jobs. + /*! + \param no parameters + \return The number of jobs + */ + int GetJobs(); + + //! Returns the number of machines. + /*! + \param no parameters + \return The number of machines + */ + int GetMachines(); + float Max(float, float); + void Initialize(); + +private: + //! The processing time matrix. + float** m_ProcessTime; + //! The completion time matrix. + float** m_CompletionTime; + //! The number of jobs. + int m_Jobs; + //! The number of machines. + int m_Machines; +}; + +#endif diff --git a/lab5/Codes/FSS-Modified/FSSB.cpp b/lab5/Codes/FSS-Modified/FSSB.cpp new file mode 100644 index 0000000..c7b62b8 --- /dev/null +++ b/lab5/Codes/FSS-Modified/FSSB.cpp @@ -0,0 +1,118 @@ +/** + * @brief Flow shop with blocking + * @author doc. MSc. Donald Davendra Ph.D. + * @date 3.10.2013 + * + * This is a simple class to calculate the makespan of the flowshop with blocking schedule. + */ + + +/*! \file FSSB.h + \brief A FSSB header file. + */ +#include "FSSB.h" + +#include +#include +#include +#include + +using namespace std; + +cFSSB::cFSSB(){ +} + +void cFSSB::Init(std::string file_path){ + + ifstream infile; + infile.open(file_path); + + if(!infile.is_open()) { + cout << "Error Opening File.\n"; + exit(1); + } + else { + infile >> m_Machines; + infile >> m_Jobs; + + m_ProcessTime = new float*[m_Machines]; + for (int i = 0; i < m_Machines; i++) { + m_ProcessTime[i] = new float[m_Jobs]; + } + + for (int i = 0; i < (m_Machines); i++) { + for (int j = 0; j < m_Jobs; j++) { + infile >> m_ProcessTime[i][j]; + } + } + + m_CompletionTime = new float*[m_Machines]; + for (int i = 0; i < m_Machines; i++) { + m_CompletionTime[i] = new float[m_Jobs]; + } + } + + infile.close(); +} + +cFSSB::~cFSSB(){ + for (int i = 0; i < m_Machines; i++) { + delete [] m_ProcessTime[i]; + } + delete [] m_ProcessTime; + + for (int i = 0; i < m_Machines; i++) { + delete [] m_CompletionTime[i]; + } + delete [] m_CompletionTime; +} + +int cFSSB::GetMachines(){ + + return m_Machines; +} + +int cFSSB::GetJobs(){ + + return m_Jobs; +} + +float cFSSB::Makespan(int *Schedule){ + Initialize(); + + // Calculate processing time for all jobs on first machine + m_CompletionTime[0][0] = m_ProcessTime[0][Schedule[0]-1]; + + for (int i = 1; i < m_Machines; i++) { + m_CompletionTime[i][0] = (m_CompletionTime[i-1][0] + m_ProcessTime[i][Schedule[0]-1]); + } + + // Calculate for each subsequent job + for (int i = 1; i < m_Jobs; i++) { + for (int j = 0; j < m_Machines; j++) { + if(j == 0){ + m_CompletionTime[j][i] = m_CompletionTime[j][i-1] + m_ProcessTime[j][Schedule[i]-1]; + } + else{ + if(m_CompletionTime[j-1][i] < m_CompletionTime[j][i-1]){ + m_CompletionTime[j-1][i] = m_CompletionTime[j][i-1]; + } + m_CompletionTime[j][i] = m_CompletionTime[j-1][i] + m_ProcessTime[j][Schedule[i]-1]; + } + } + } + + // Return the makespan. + return m_CompletionTime[m_Machines-1][m_Jobs-1]; + +} + +void cFSSB::Initialize(){ + for (int i = 0; i < m_Machines; i++) { + for (int j = 0; j < m_Jobs; j++) { + m_CompletionTime[i][j] = 0; + } + + } + +} diff --git a/lab5/Codes/FSS-Modified/FSSB.h b/lab5/Codes/FSS-Modified/FSSB.h new file mode 100644 index 0000000..9a69704 --- /dev/null +++ b/lab5/Codes/FSS-Modified/FSSB.h @@ -0,0 +1,63 @@ +/** + * @brief Flow shop with blocking + * @author doc. MSc. Donald Davendra Ph.D. + * @date 3.10.2013 + * + * This is a simple class to calculate the makespan of the flowshop with blocking schedule. + */ + +#ifndef __FSSB_H__ +#define __FSSB_H__ +#include + +class cFSSB{ + +public: + //! A constructor. + /*! + Constructs the FSSB class, and assigns the values. + */ + cFSSB(); + + void Init(std::string file_path); + + //! A destructor. + /*! + Clears the memory. + */ + ~cFSSB(); + + //! A normal member taking in the schedule and returning the cost. + /*! + \param A flowshop schedule + \return The makespan value + */ + float Makespan(int *Schedule); + + //! Returns the number of jobs. + /*! + \param no parameters + \return The number of jobs + */ + int GetJobs(); + + //! Returns the number of machines. + /*! + \param no parameters + \return The number of machines + */ + int GetMachines(); + void Initialize(); + +private: + //! The processing time matrix. + float** m_ProcessTime; + //! The completion time matrix. + float** m_CompletionTime; + //! The number of jobs. + int m_Jobs; + //! The number of machines. + int m_Machines; +}; + +#endif diff --git a/lab5/Codes/FSS-Modified/FSSNW.cpp b/lab5/Codes/FSS-Modified/FSSNW.cpp new file mode 100644 index 0000000..a7eca8b --- /dev/null +++ b/lab5/Codes/FSS-Modified/FSSNW.cpp @@ -0,0 +1,127 @@ +/** + * @brief Flow shop scheduling with no wait + * @author doc. MSc. Donald Davendra Ph.D. + * @date 3.10.2013 + * + * This is a simple class to calculate the makespan of the flowshop with no wait schedule. + */ + + +/*! \file FSSNW header + \brief A FSSNW header file. + */ +#include "FSSNW.h" + +#include +#include +#include +#include + +using namespace std; + +cFSSNW::cFSSNW(){ +} + +void cFSSNW::Init(std::string file_path) { + + ifstream infile; + infile.open(file_path); + + if(!infile.is_open()) { + cout << "Error Opening File.\n"; + exit(1); + } + else { + infile >> m_Machines; + infile >> m_Jobs; + + m_ProcessTime = new float*[m_Machines]; + for (int i = 0; i < m_Machines; i++) { + m_ProcessTime[i] = new float[m_Jobs]; + } + + for (int i = 0; i < (m_Machines); i++) { + for (int j = 0; j < m_Jobs; j++) { + infile >> m_ProcessTime[i][j]; + } + } + + m_CompletionTime = new float*[m_Machines]; + for (int i = 0; i < m_Machines; i++) { + m_CompletionTime[i] = new float[m_Jobs]; + } + } + + infile.close(); +} + +cFSSNW::~cFSSNW(){ + for (int i = 0; i < m_Machines; i++) { + delete [] m_ProcessTime[i]; + } + delete [] m_ProcessTime; + + for (int i = 0; i < m_Machines; i++) { + delete [] m_CompletionTime[i]; + } + delete [] m_CompletionTime; +} + +int cFSSNW::GetMachines(){ + + return m_Machines; +} + +int cFSSNW::GetJobs(){ + + return m_Jobs; +} + +float cFSSNW::Makespan(int *Schedule){ + int offset; + double sum = 0; + Initialize(); + + // Calculate processing time for all jobs on first machine + m_CompletionTime[0][0] = m_ProcessTime[0][Schedule[0]-1]; + + for (int i = 1; i < m_Machines; i++) { + m_CompletionTime[i][0] = (m_CompletionTime[i-1][0] + m_ProcessTime[i][Schedule[0]-1]); + } + + // Calculate for each subsequent job + for (int i = 1; i < m_Jobs; i++) { + for (int j = 0; j < m_Machines; j++) { + if(j == 0){ + m_CompletionTime[j][i] = m_CompletionTime[j][i-1] + m_ProcessTime[j][Schedule[i]-1]; + } + else{ + if(m_CompletionTime[j-1][i] < m_CompletionTime[j][i-1]){ + offset = m_CompletionTime[j][i-1] - m_CompletionTime[j-1][i]; + for (int k = j - 1; k >= 0; k --) { + m_CompletionTime[k][i] = m_CompletionTime[k][i] + offset; + } + } + m_CompletionTime[j][i] = m_CompletionTime[j-1][i] + m_ProcessTime[j][Schedule[i]-1]; + } + } + } + + // Calculate the flowtime. + for (int i = 0 ; i < m_Jobs; i++) { + sum += m_CompletionTime[m_Machines - 1][i]; + } + + return sum; + +} + +void cFSSNW::Initialize(){ + for (int i = 0; i < m_Machines; i++) { + for (int j = 0; j < m_Jobs; j++) { + m_CompletionTime[i][j] = 0; + } + + } + +} diff --git a/lab5/Codes/FSS-Modified/FSSNW.h b/lab5/Codes/FSS-Modified/FSSNW.h new file mode 100644 index 0000000..0c17d8c --- /dev/null +++ b/lab5/Codes/FSS-Modified/FSSNW.h @@ -0,0 +1,63 @@ +/** + * @brief Flow shop scheduling with no wait + * @author doc. MSc. Donald Davendra Ph.D. + * @date 3.10.2013 + * + * This is a simple class to calculate the makespan of the flowshop with no wait schedule. + */ + +#ifndef __FSSNW_H__ +#define __FSSNW_H__ +#include + +class cFSSNW{ + +public: + //! A constructor. + /*! + Constructs the FSSNW class, and assigns the values. + */ + cFSSNW(); + + void Init(std::string file_path); + + //! A destructor. + /*! + Clears the memory. + */ + ~cFSSNW(); + + //! A normal member taking in the schedule and returning the cost. + /*! + \param A flowshop schedule + \return The makespan value + */ + float Makespan(int *Schedule); + + //! Returns the number of jobs. + /*! + \param no parameters + \return The number of jobs + */ + int GetJobs(); + + //! Returns the number of machines. + /*! + \param no parameters + \return The number of machines + */ + int GetMachines(); + void Initialize(); + +private: + //! The processing time matrix. + float** m_ProcessTime; + //! The completion time matrix. + float** m_CompletionTime; + //! The number of jobs. + int m_Jobs; + //! The number of machines. + int m_Machines; +}; + +#endif diff --git a/lab5/Codes/FSS-Modified/bin/FSS b/lab5/Codes/FSS-Modified/bin/FSS new file mode 100755 index 0000000000000000000000000000000000000000..49855e06aa9b79ee8fd13bad3dd96a181ab5d635 GIT binary patch literal 15032 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 B*s1^k literal 0 HcmV?d00001 diff --git a/lab5/Codes/FSS-Modified/fss.txt b/lab5/Codes/FSS-Modified/fss.txt new file mode 100644 index 0000000..37bb0d8 --- /dev/null +++ b/lab5/Codes/FSS-Modified/fss.txt @@ -0,0 +1,5 @@ +4 5 +5 5 3 6 3 +4 4 2 4 4 +4 4 3 4 1 +3 6 3 2 5 \ No newline at end of file diff --git a/lab5/Codes/FSS-Modified/fss_test.txt b/lab5/Codes/FSS-Modified/fss_test.txt new file mode 100644 index 0000000..667e4da --- /dev/null +++ b/lab5/Codes/FSS-Modified/fss_test.txt @@ -0,0 +1,6 @@ +5 10 +16 14 18 4 4 3 2 5 6 7 +4 3 5 2 2 1 2 3 4 2 +4 4 5 2 2 2 2 4 3 4 +14 14 15 12 12 12 11 12 12 14 +12 10 13 3 2 1 2 4 3 4 diff --git a/lab5/Codes/FSS-Modified/main.cpp b/lab5/Codes/FSS-Modified/main.cpp new file mode 100644 index 0000000..c0eea7d --- /dev/null +++ b/lab5/Codes/FSS-Modified/main.cpp @@ -0,0 +1,328 @@ +/** + * @brief Flow shop scheduling + * @author doc. MSc. Donald Davendra Ph.D. + * @date 3.10.2013 + * + * This is a simple class to calculate the makespan of the flowshop scheduling schedule. + */ + +#include +#include "FSS.h" +#include "FSSB.h" +#include "FSSNW.h" +#include +#include +#include +#include + +using Clock = std::chrono::steady_clock; +using std::chrono::time_point; +using std::chrono::duration_cast; +using std::chrono::milliseconds; +using namespace std; + +void JobMakespan(cFSS *FSS); +void JobMakespan(cFSSB *FSSB); +void JobMakespan(cFSSNW *FSSNW); + +//! the main function. +/*! + \return 0 for successful completion + */ +int main () +{ + + //! Initialization of the FSS* classes + cFSS* FSS = new cFSS(); + cFSSB* FSSB = new cFSSB(); + cFSSNW* FSSNW = new cFSSNW(); + + std::vector times; + + std::cout << "FSS: Tests 1 through 120" << std::endl; + for (int i = 1; i < 121; i++){ + FSS->Init("../TaillardDataSets/" + to_string(i) + ".txt"); + + //! Calculate the schedule and print out results + //std::cout << i << " : "; + auto start = std::chrono::system_clock::now(); + + JobMakespan(FSS); + + times.push_back(std::chrono::duration_cast(std::chrono::system_clock::now() - start).count()); + + std::cout << std::endl; + } + + for (auto t: times){ + std::cout << t << std::endl; + } + times.clear(); + + std::cout << "FSSB: Tests 1 through 120" << std::endl; + for (int i = 1; i < 121; i++){ + FSSB->Init("../TaillardDataSets/" + to_string(i) + ".txt"); + + //! Calculate the schedule and print out results + //std::cout << i << " : "; + auto start = std::chrono::system_clock::now(); + + JobMakespan(FSSB); + + times.push_back(std::chrono::duration_cast(std::chrono::system_clock::now() - start).count()); + std::cout << std::endl; + } + + + for (auto t: times){ + std::cout << t << std::endl; + } + times.clear(); + + std::cout << "FSSNW: Tests 1 through 120" << std::endl; + for (int i = 1; i < 121; i++){ + FSSNW->Init("../TaillardDataSets/" + to_string(i) + ".txt"); + + //! Calculate the schedule and print out results + //std::cout << i << " : "; + auto start = std::chrono::system_clock::now(); + + JobMakespan(FSSNW); + + times.push_back(std::chrono::duration_cast(std::chrono::system_clock::now() - start).count()); + std::cout << std::endl; + } + + + for (auto t: times){ + std::cout << t << std::endl; + } + times.clear(); + + return 0; +} + +//! Function to calculate a simple schedule. +/*! + \return no return value + */ +void JobMakespan(cFSS *FSS){ + + //! Initilaize a schedule + int *Schedule = new int[FSS->GetJobs()]; + + //! Fill the schedule with it empty + for (int i = 0; i < FSS->GetJobs(); i++) { + Schedule[i] = 0; + } + + // Determine if 1 or 2 should come first + Schedule[0] = 1; + Schedule[1] = 2; + int first = FSS->Makespan(Schedule); + + Schedule[0] = 2; + Schedule[1] = 1; + int second = FSS->Makespan(Schedule); + + if (first > second){ + Schedule[0] = 1; + Schedule[1] = 2; + } + + // for (int p = 0; p < FSS->GetJobs(); p++){ +// std::cout << Schedule[p] << " "; +// } +// std::cout << " " << FSS->Makespan(Schedule) << std::endl; + + // Now walk through the remaining K's and determine their makespans + for (int k = 3; k < FSS->GetJobs()+1; k++){ + + // The initial value + int best_val = INT32_MAX; + int best_ind = -1; + + Schedule[k-1] = k; + + if (FSS->Makespan(Schedule) <= best_val){ + best_val = FSS->Makespan(Schedule); + best_ind = k; + } + + // Walk down to index 0 + for (int i = k-1; i > 0; i--){ + int f = Schedule[i-1]; + Schedule[i-1] = k; + Schedule[i] = f; + + if (FSS->Makespan(Schedule) <= best_val){ + best_val = FSS->Makespan(Schedule); + best_ind = i; + } + } + + // And then walk back up to the best index we found + for (int i = 0; i < best_ind-1; i++) { + int f = Schedule[i + 1]; + Schedule[i + 1] = k; + Schedule[i] = f; + } + } + + //! Calculate the makespan of the simple schedule and display it in standard output + cout << FSS->Makespan(Schedule); + + //! Delete the schdule. + delete [] Schedule; + +} + +//! Function to calculate a simple schedule. +/*! + \return no return value + */ +void JobMakespan(cFSSNW *FSSNW){ + + //! Initilaize a schedule + int *Schedule = new int[FSSNW->GetJobs()]; + + //! Fill the schedule with it empty + for (int i = 0; i < FSSNW->GetJobs(); i++) { + Schedule[i] = 0; + } + + // Determine if 1 or 2 should come first + Schedule[0] = 1; + Schedule[1] = 2; + int first = FSSNW->Makespan(Schedule); + + Schedule[0] = 2; + Schedule[1] = 1; + int second = FSSNW->Makespan(Schedule); + + if (first > second){ + Schedule[0] = 1; + Schedule[1] = 2; + } + + // for (int p = 0; p < FSS->GetJobs(); p++){ +// std::cout << Schedule[p] << " "; +// } +// std::cout << " " << FSS->Makespan(Schedule) << std::endl; + + // Now walk through the remaining K's and determine their makespans + for (int k = 3; k < FSSNW->GetJobs()+1; k++){ + + // The initial value + int best_val = INT32_MAX; + int best_ind = -1; + + Schedule[k-1] = k; + + if (FSSNW->Makespan(Schedule) <= best_val){ + best_val = FSSNW->Makespan(Schedule); + best_ind = k; + } + + // Walk down to index 0 + for (int i = k-1; i > 0; i--){ + int f = Schedule[i-1]; + Schedule[i-1] = k; + Schedule[i] = f; + + if (FSSNW->Makespan(Schedule) <= best_val){ + best_val = FSSNW->Makespan(Schedule); + best_ind = i; + } + } + + // And then walk back up to the best index we found + for (int i = 0; i < best_ind-1; i++) { + int f = Schedule[i + 1]; + Schedule[i + 1] = k; + Schedule[i] = f; + } + } + + //! Calculate the makespan of the simple schedule and display it in standard output + cout << FSSNW->Makespan(Schedule); + + //! Delete the schdule. + delete [] Schedule; + +} + +//! Function to calculate a simple schedule. +/*! + \return no return value + */ +void JobMakespan(cFSSB *FSSB){ + + //! Initilaize a schedule + int *Schedule = new int[FSSB->GetJobs()]; + + //! Fill the schedule with it empty + for (int i = 0; i < FSSB->GetJobs(); i++) { + Schedule[i] = 0; + } + + // Determine if 1 or 2 should come first + Schedule[0] = 1; + Schedule[1] = 2; + int first = FSSB->Makespan(Schedule); + + Schedule[0] = 2; + Schedule[1] = 1; + int second = FSSB->Makespan(Schedule); + + if (first > second){ + Schedule[0] = 1; + Schedule[1] = 2; + } + + // for (int p = 0; p < FSS->GetJobs(); p++){ +// std::cout << Schedule[p] << " "; +// } +// std::cout << " " << FSS->Makespan(Schedule) << std::endl; + + // Now walk through the remaining K's and determine their makespans + for (int k = 3; k < FSSB->GetJobs()+1; k++){ + + // The initial value + int best_val = INT32_MAX; + int best_ind = -1; + + Schedule[k-1] = k; + + if (FSSB->Makespan(Schedule) <= best_val){ + best_val = FSSB->Makespan(Schedule); + best_ind = k; + } + + // Walk down to index 0 + for (int i = k-1; i > 0; i--){ + int f = Schedule[i-1]; + Schedule[i-1] = k; + Schedule[i] = f; + + if (FSSB->Makespan(Schedule) <= best_val){ + best_val = FSSB->Makespan(Schedule); + best_ind = i; + } + } + + // And then walk back up to the best index we found + for (int i = 0; i < best_ind-1; i++) { + int f = Schedule[i + 1]; + Schedule[i + 1] = k; + Schedule[i] = f; + } + } + + //! Calculate the makespan of the simple schedule and display it in standard output + cout << FSSB->Makespan(Schedule); + + //! Delete the schdule. + delete [] Schedule; + +} \ No newline at end of file diff --git a/lab5/Codes/FSS-Modified/makefile b/lab5/Codes/FSS-Modified/makefile new file mode 100644 index 0000000..afe73bb --- /dev/null +++ b/lab5/Codes/FSS-Modified/makefile @@ -0,0 +1,27 @@ +CC = g++ +CFLAGS = -c -Wall -std=c99 +LDFLAGS = +SOURCES := main.cpp FSS.cpp +OBJECTS = $(SOURCES:.cpp=.o) +BINDIR = bin +EXECUTABLE = $(BINDIR)/FSS +#------------------------------------------------------------------------------- +ifdef DEBUG + CFLAGS += -DDEBUG=1 +endif +#------------------------------------------------------------------------------- + +all: $(SOURCES) $(EXECUTABLE) + +$(EXECUTABLE): $(OBJECTS) + -mkdir -p $(BINDIR) + $(CC) $(LDFLAGS) $(OBJECTS) -o $@ + +#------------------------------------------------------------------------------- + +.c.o: + $(CC) $(CFLAGS) $< -o $@ + +clean: + rm -f *.o + rm -r $(BINDIR) diff --git a/lab5/Codes/FSSB/FSSB.cpp b/lab5/Codes/FSSB/FSSB.cpp new file mode 100644 index 0000000..dbc9b23 --- /dev/null +++ b/lab5/Codes/FSSB/FSSB.cpp @@ -0,0 +1,115 @@ +/** + * @brief Flow shop with blocking + * @author doc. MSc. Donald Davendra Ph.D. + * @date 3.10.2013 + * + * This is a simple class to calculate the makespan of the flowshop with blocking schedule. + */ + + +/*! \file FSSB.h + \brief A FSSB header file. + */ +#include "FSSB.h" + +#include +#include +#include +#include + +using namespace std; + +cFSSB::cFSSB(){ + + ifstream infile; + infile.open("fss.txt"); + + if(!infile.is_open()) { + cout << "Error Opening File.\n"; + exit(1); + } + else { + infile >> m_Machines; + infile >> m_Jobs; + + m_ProcessTime = new float*[m_Machines]; + for (int i = 0; i < m_Machines; i++) { + m_ProcessTime[i] = new float[m_Jobs]; + } + + for (int i = 0; i < (m_Machines); i++) { + for (int j = 0; j < m_Jobs; j++) { + infile >> m_ProcessTime[i][j]; + } + } + + m_CompletionTime = new float*[m_Machines]; + for (int i = 0; i < m_Machines; i++) { + m_CompletionTime[i] = new float[m_Jobs]; + } + } + + infile.close(); +} + +cFSSB::~cFSSB(){ + for (int i = 0; i < m_Machines; i++) { + delete [] m_ProcessTime[i]; + } + delete [] m_ProcessTime; + + for (int i = 0; i < m_Machines; i++) { + delete [] m_CompletionTime[i]; + } + delete [] m_CompletionTime; +} + +int cFSSB::GetMachines(){ + + return m_Machines; +} + +int cFSSB::GetJobs(){ + + return m_Jobs; +} + +float cFSSB::Makespan(int *Schedule){ + Initialize(); + + // Calculate processing time for all jobs on first machine + m_CompletionTime[0][0] = m_ProcessTime[0][Schedule[0]-1]; + + for (int i = 1; i < m_Machines; i++) { + m_CompletionTime[i][0] = (m_CompletionTime[i-1][0] + m_ProcessTime[i][Schedule[0]-1]); + } + + // Calculate for each subsequent job + for (int i = 1; i < m_Jobs; i++) { + for (int j = 0; j < m_Machines; j++) { + if(j == 0){ + m_CompletionTime[j][i] = m_CompletionTime[j][i-1] + m_ProcessTime[j][Schedule[i]-1]; + } + else{ + if(m_CompletionTime[j-1][i] < m_CompletionTime[j][i-1]){ + m_CompletionTime[j-1][i] = m_CompletionTime[j][i-1]; + } + m_CompletionTime[j][i] = m_CompletionTime[j-1][i] + m_ProcessTime[j][Schedule[i]-1]; + } + } + } + + // Return the makespan. + return m_CompletionTime[m_Machines-1][m_Jobs-1]; + +} + +void cFSSB::Initialize(){ + for (int i = 0; i < m_Machines; i++) { + for (int j = 0; j < m_Jobs; j++) { + m_CompletionTime[i][j] = 0; + } + + } + +} diff --git a/lab5/Codes/FSSB/FSSB.h b/lab5/Codes/FSSB/FSSB.h new file mode 100644 index 0000000..e3c1d3b --- /dev/null +++ b/lab5/Codes/FSSB/FSSB.h @@ -0,0 +1,60 @@ +/** + * @brief Flow shop with blocking + * @author doc. MSc. Donald Davendra Ph.D. + * @date 3.10.2013 + * + * This is a simple class to calculate the makespan of the flowshop with blocking schedule. + */ + +#ifndef __FSSB_H__ +#define __FSSB_H__ + +class cFSSB{ + +public: + //! A constructor. + /*! + Constructs the FSSB class, and assigns the values. + */ + cFSSB(); + + //! A destructor. + /*! + Clears the memory. + */ + ~cFSSB(); + + //! A normal member taking in the schedule and returning the cost. + /*! + \param A flowshop schedule + \return The makespan value + */ + float Makespan(int *Schedule); + + //! Returns the number of jobs. + /*! + \param no parameters + \return The number of jobs + */ + int GetJobs(); + + //! Returns the number of machines. + /*! + \param no parameters + \return The number of machines + */ + int GetMachines(); + void Initialize(); + +private: + //! The processing time matrix. + float** m_ProcessTime; + //! The completion time matrix. + float** m_CompletionTime; + //! The number of jobs. + int m_Jobs; + //! The number of machines. + int m_Machines; +}; + +#endif diff --git a/lab5/Codes/FSSB/FSSB.o b/lab5/Codes/FSSB/FSSB.o new file mode 100644 index 0000000000000000000000000000000000000000..87f35491adc5d7f61a7db3b6b7431cbfcd28429f GIT binary patch literal 6464 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 +#include "FSSB.h" + +using namespace std; + +void JobMakespan(cFSSB *FSS); + +//! the main function. +/*! + \return 0 for successful completion + */ +int main () +{ + //! Initialization of the FSSB class + cFSSB* FSSB = new cFSSB(); + + //! Calculate a simple schedule + JobMakespan(FSSB); + + return 0; +} + +//! Function to calculate a simple schedule. +/*! + \return no return value + */ +void JobMakespan(cFSSB *FSSB){ + //! Initialize a schedule + int *Schedule = new int[FSSB->GetJobs()]; + + //! Fill the schedule sequentially + for (int i = 0; i < FSSB->GetJobs(); i++) { + Schedule[i] = i+1; + } + //! Calculate the makespan of the simple schedule and display it in standard output + cout << "The makespan is: " << FSSB->Makespan(Schedule) << endl; + + //! Delete the schedule. + delete [] Schedule; + +} diff --git a/lab5/Codes/FSSB/main.o b/lab5/Codes/FSSB/main.o new file mode 100644 index 0000000000000000000000000000000000000000..f332d5217be1d84e7fc096cea2241a33290f1679 GIT binary patch literal 3880 zcmb_eZ)_Ar6rZ~TidyJ_h$spt5vftuJ8a7z4QZ)M_u#~{*AgQ%<92VM2Y0*8?H*if zs=-6zrI_@iF){kV1i$&gFUAj0gru5if-y0ElSDL^pb3VWTntHlZ+9M@F1Lvve3#jI z^Ly|8X6DW8+k0Eh?2kqwj3mPLvc(ahjCDS+sP}qmFN?EPY*?%R);E;XYJbEpZ2-K1 zHm!a|tN$X@k%l&{HnjSjH~tdsH`k}@SIHw&zfMN2b~S#a@94-CWChBER-alDt$m<< zg#?VvZq{~RJH0}?d_8)zO`Drt0J%$3SDSO{Ji5tKzo5={d^~%0*4;9#&I8l?>)sVE zO)YY5dU(F}b)+7zsq>MW-)PgrO+WT0V!hq5M!j(nBQD{?+s*BcxO#&eJR1$P+EkOd z?ZD9_Xy#kmSG+!Tr(S8+rtU;4+s;fi7Zw<+Y+9uC_86E-L|;VTOL#(!&tc0WR~8l` z?eXP|ZCt*SJ+py!B)w_*&=t%bzcihIyU z0Eq&VA_%-30G1YbQQ+R*MRbg{32kW?W4Nk&CB~$eTr$VlebUHRUxRL~lpj2Elo4og zPh0vZhv3x^{2buOPrTlp0PLd>|4&2kFGBFS5d8ZP{MQit&k%eooJXrXJQsqW2*KYB z!QTnNKSVqViwekv5PvKst=7p(dcjhR@o~mq&$*dhoEPkZRd8Y0mEzoSb+=$}L<)Mb zFbN~u;<}aRdDC&r6~h}R3kAjpGOz6G%RoqFl&3k;GR}`zt9;xnJGKSU?gT%T1Y+xS z37&_#js3aYzW$VY3P!2a0ekdiQO~lz3E+G&3)W%lbOELuG@VMxTnybgV7d_Hcm$R% zk?tZUH47_)jddAz1^1M5i%vS{rc%b3UgmCDFSt(HP}M=eo*&g6*sBfuGWAm07~*QK zn`aLiIAhK(I_fc>%e3;vwDI3qhWJntczXCRfltDjXTg8gU=+YT$X_!4D<~)m+5Uhwx`XM?rio zG{ULwApW3)V;w?49BVxJpFj`*&mahb_NM9d-%hklm9J&V?~pz z-QN3S4oQDS6%1nKJ4)OgU~C z+^ibrxXZyG-Vvp2`)1D{OBUD5WqpDvhFvO|7KB^2YbpbWhPOjqGfqMTGMi)kSXqa{ z@_$GINHEuOj*zz(A0TJMIr$^smvrp$?%{d&LX)K-E1LBaU`koX^jBi1Ncg7H}}Vs3)#ZwN=q z7jXo~2f@%P|4s4Ni1Lhc;E_-~;rQPar%FPT<(8PgTLwX=^;3_xkaXE~YcQe081$VK z@j>@a0nEyzpws#Zu7J{N|8acrL1z5U%Q60oqH1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 +#include +#include +#include + +using namespace std; + +cFSSNW::cFSSNW(){ + + ifstream infile; + infile.open("fss.txt"); + + if(!infile.is_open()) { + cout << "Error Opening File.\n"; + exit(1); + } + else { + infile >> m_Machines; + infile >> m_Jobs; + + m_ProcessTime = new float*[m_Machines]; + for (int i = 0; i < m_Machines; i++) { + m_ProcessTime[i] = new float[m_Jobs]; + } + + for (int i = 0; i < (m_Machines); i++) { + for (int j = 0; j < m_Jobs; j++) { + infile >> m_ProcessTime[i][j]; + } + } + + m_CompletionTime = new float*[m_Machines]; + for (int i = 0; i < m_Machines; i++) { + m_CompletionTime[i] = new float[m_Jobs]; + } + } + + infile.close(); +} + +cFSSNW::~cFSSNW(){ + for (int i = 0; i < m_Machines; i++) { + delete [] m_ProcessTime[i]; + } + delete [] m_ProcessTime; + + for (int i = 0; i < m_Machines; i++) { + delete [] m_CompletionTime[i]; + } + delete [] m_CompletionTime; +} + +int cFSSNW::GetMachines(){ + + return m_Machines; +} + +int cFSSNW::GetJobs(){ + + return m_Jobs; +} + +float cFSSNW::Makespan(int *Schedule){ + int offset; + double sum = 0; + Initialize(); + + // Calculate processing time for all jobs on first machine + m_CompletionTime[0][0] = m_ProcessTime[0][Schedule[0]-1]; + + for (int i = 1; i < m_Machines; i++) { + m_CompletionTime[i][0] = (m_CompletionTime[i-1][0] + m_ProcessTime[i][Schedule[0]-1]); + } + + // Calculate for each subsequent job + for (int i = 1; i < m_Jobs; i++) { + for (int j = 0; j < m_Machines; j++) { + if(j == 0){ + m_CompletionTime[j][i] = m_CompletionTime[j][i-1] + m_ProcessTime[j][Schedule[i]-1]; + } + else{ + if(m_CompletionTime[j-1][i] < m_CompletionTime[j][i-1]){ + offset = m_CompletionTime[j][i-1] - m_CompletionTime[j-1][i]; + for (int k = j - 1; k >= 0; k --) { + m_CompletionTime[k][i] = m_CompletionTime[k][i] + offset; + } + } + m_CompletionTime[j][i] = m_CompletionTime[j-1][i] + m_ProcessTime[j][Schedule[i]-1]; + } + } + } + + // Calculate the flowtime. + for (int i = 0 ; i < m_Jobs; i++) { + sum += m_CompletionTime[m_Machines - 1][i]; + } + + return sum; + +} + +void cFSSNW::Initialize(){ + for (int i = 0; i < m_Machines; i++) { + for (int j = 0; j < m_Jobs; j++) { + m_CompletionTime[i][j] = 0; + } + + } + +} diff --git a/lab5/Codes/FSSNW/FSSNW.h b/lab5/Codes/FSSNW/FSSNW.h new file mode 100644 index 0000000..a54fc53 --- /dev/null +++ b/lab5/Codes/FSSNW/FSSNW.h @@ -0,0 +1,60 @@ +/** + * @brief Flow shop scheduling with no wait + * @author doc. MSc. Donald Davendra Ph.D. + * @date 3.10.2013 + * + * This is a simple class to calculate the makespan of the flowshop with no wait schedule. + */ + +#ifndef __FSSNW_H__ +#define __FSSNW_H__ + +class cFSSNW{ + +public: + //! A constructor. + /*! + Constructs the FSSNW class, and assigns the values. + */ + cFSSNW(); + + //! A destructor. + /*! + Clears the memory. + */ + ~cFSSNW(); + + //! A normal member taking in the schedule and returning the cost. + /*! + \param A flowshop schedule + \return The makespan value + */ + float Makespan(int *Schedule); + + //! Returns the number of jobs. + /*! + \param no parameters + \return The number of jobs + */ + int GetJobs(); + + //! Returns the number of machines. + /*! + \param no parameters + \return The number of machines + */ + int GetMachines(); + void Initialize(); + +private: + //! The processing time matrix. + float** m_ProcessTime; + //! The completion time matrix. + float** m_CompletionTime; + //! The number of jobs. + int m_Jobs; + //! The number of machines. + int m_Machines; +}; + +#endif diff --git a/lab5/Codes/FSSNW/FSSNW.o b/lab5/Codes/FSSNW/FSSNW.o new file mode 100644 index 0000000000000000000000000000000000000000..5473704c0b23d561ad4363597f7fcac05f49c653 GIT binary patch literal 6656 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 +#include "FSSNW.h" + +using namespace std; + +void JobMakespan(cFSSNW *FSS); + +//! the main function. +/*! + \return 0 for successful completion + */ +int main () +{ + //! Initialization of the FSSNW class + cFSSNW* FSSNW = new cFSSNW(); + + //! Calculate a simple schedule + JobMakespan(FSSNW); + + return 0; +} + +//! Function to calculate a simple schedule. +/*! + \return no return value + */ +void JobMakespan(cFSSNW *FSSNW){ + //! Initilaize a schedule + int *Schedule = new int[FSSNW->GetJobs()]; + + //! Fill the schedule sequentially + for (int i = 0; i < FSSNW->GetJobs(); i++) { + Schedule[i] = i+1; + } + //! Calculate the makespan of the simple schedule and display it in standard output + cout << "The makespan is: " << FSSNW->Makespan(Schedule) << endl; + + //! Delete the schedule + delete [] Schedule; + +} diff --git a/lab5/Codes/FSSNW/main.o b/lab5/Codes/FSSNW/main.o new file mode 100644 index 0000000000000000000000000000000000000000..16000c8b5eb58db2b4f6fa41f277d21b67238a98 GIT binary patch literal 3880 zcmb_eU2GIp6uz?y6t&O=E21c@M5RQT>_RC&8q!*a&ccdow?!i~*Xis)S9WKcomtp6 zse~+|n_|*OpTs9M@xdn(;{y~+g8EcrVtkVa)J^aKLQOWNNj+!g9=IKL5+6L9JNKOL zob%m#&%JYJ&uZy|5k+An3Om5=TZA&!^~im_*He30jICkAdj0plp{!o}D|Tfg;0^TY z^*O!%n@~p@`n1;2>(@Q|8}#4Wkg8v!h;;o1IrZAL*s;FjBXh_KlySX2wJclzSpOCY z7@OUq@0&lfO22v|a;r_hKDz{RkEX6QuWJh!CJ+6Rw$O2D_WZ27by`~hrjI(`7a>hu znV%kBsC}o@V>N9-x%It1J>2wje<9Yp9qY84moeiCKD^c3?TBeNDZulQq1UFG%xwpb zCP6bl(7Iyvsl|GwS({o^D%;LYHJ6qct8Bhc>#Z>`l*qn}u~%@18ehSZN9LB6l=j$4 z#x||o!(Q0R*wC02FB+#TXWX#kd1rqdCo9Q7fB*h?*YIe?b}RASYPXu$(NpoPmq9?Hrv!4Tz3T*`{eQRSE zBK>Pt4P1=YRzwa#DCiiFGWR+PcMwU8)V^#J+=AQ50v z1%X!sz)}J)2;5t{$d0l$p)K#C3}^MAM49xGOYSIpNV0tOE$G%u^}#(y8G#n_wB?U- z2wn}rKL8y0iPt+5fL#iS|11RmIt2eQ1fLJV{|v$Jgy7p@KU&pcR|sy0;Acbd3nBO? zh(};j0r@f{el7%OMI&#k=J+_{Z)e@~Ue5ESyq$N!>`rp-xQ3fIIU;$Zke>vrWOKvL z@tozj<%;RqiF}^%f%NOI^ra!CGRjjNX&L7yt5rU3m7S6e+3o~Cod9C{Oc9<(dd!2_ z?2$M7liF!8lgUG+(bvRN40_e89XG26H(aX<+qO=e2Rs^hE*J5G2|{-+;uu5ti=d+*z8)IkbnhVk zsD$G^gn~HU@f80qf*^?F-9-2df*^=*fJXS|2!aIT|L|cCe;jm*zb$aQ(d66iZwcQh zbnN~SI`ZS4N<3}w9-tupBs9X?1&;iippkS+@mNEO-zMQtOL$u1@xG0M=nW};vlM?+ zir*q)u{$Q=GS52_9+%=RiT@eEX`U2jR~fjrDD;tA>A&ymO5}`cn92T<|)WPW^0U}C>wCC{2vkr z60EgcBjoMH2go_GPrl{Hl8!x|J>2hJXtFfKp{F~4EjW>CwFsiK|GdD1|6HyH#uaHE z2kF@3eSn-{`9YeXjpqb0`RstnX#C)}GML{VlK+zk#5+osV15RiSexMd8zPYEMI1r< zFgRM(zbXD2QJrxN+!D$s9RHi*Pzh+V+!o{SmO;>I{?y|sBwY@DE?7|E48~51{9t&O z0A^)U&}sezS3qgC{usXaATxgF)foRpQa-I8zb(PqW6Gx@|2!I!1m}--aPAo15MV-( Z%rP@F#S}9$Gkx~GZ{EE#Z)Vp2 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 KMkXpR2J>GM-aFU; literal 0 HcmV?d00001 diff --git a/lab5/Results/writeup.tex b/lab5/Results/writeup.tex new file mode 100644 index 0000000..29298cb --- /dev/null +++ b/lab5/Results/writeup.tex @@ -0,0 +1,221 @@ +\documentclass[paper=a4, fontsize=11pt]{scrartcl} +\usepackage[T1]{fontenc} +\usepackage{fourier} +\usepackage[english]{babel} +\usepackage[protrusion=true,expansion=true]{microtype} +\usepackage{amsmath,amsfonts,amsthm} +\usepackage[pdftex]{graphicx} +\usepackage{url} +\usepackage{sectsty} +\usepackage{rotating} +\allsectionsfont{\centering \normalfont\scshape} + +\usepackage{fancyhdr} +\pagestyle{fancyplain} +\fancyhead{} +\fancyfoot[L]{} +\fancyfoot[C]{} +\fancyfoot[R]{\thepage} +\renewcommand{\headrulewidth}{0pt} +\renewcommand{\footrulewidth}{0pt} +\setlength{\headheight}{13.6pt} +\numberwithin{equation}{section} +\numberwithin{figure}{section} +\numberwithin{table}{section} +\newcommand{\horrule}[1]{\rule{\linewidth}{#1}} + +\title{ + %\vspace{-1in} + \usefont{OT1}{bch}{b}{n} + \normalfont \normalsize \textsc{Central Washington University of the Computer Science Department} \\ [25pt] + \horrule{0.5pt} \\[0.4cm] + \huge Project 5 \\ + \horrule{2pt} \\[0.5cm] +} + +\author{\normalsize Mitchell Hansen \\[-6pt]} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{document} +\maketitle + +\section{Introduction} +For our final lab we took Dr. Davendra's three flow shop optimization problems, the first being vanilla (FSS), the second being blocking (FSSB), and the third being no-wait (FSSNW). We were provided the skeleton code for these labs already, they were only missing the method of generating the schedules. After completing the scheduler we completed the rest of the test trials in the lab. + +\section{Methods} +We closely followed the implimentation details on both Dr. Davendra's PDF, along with some other online resources to get the scheduling completed. We also modified the original code to run all 120 test cases for each of the three flow shop methods at once. These all printed out into the console where we then formatted and copied the data. + +The flow shop algorithm itself is a heuristic on the scheduling problem which avoids brute force methods of determining optimal scheduling for concurrent tasks with multiple workers. This allows the program to return accurate results in little time, but has the downside that there is no guarentee that the results will be the actual optimum. + +\section{Analysis} + +The three algorithms tested ran in acceptable times and produced seemingly accurate results. When compared with other test data found online, the results agreed. Other than prima facia impressions about the algorithm we gained little insight into how well this particular algorithm preformed against others of the same class. + + +\section{Conclusion} + +This lab was an interesting detour away from our rigerous study of optimizing our original 15 functions. It's hard to tell exactly how good or bad our results were, but it was interesting to see optimization done in a different context. + +\section{Results} + +\hskip+2.5cm\scalebox{0.5}{ +\rotatebox{0}{ +\begin{tabular}{l || l | l | l | l | l | l } + + \textbf{Flow Shop Results} \\ + \hline \\ + Test case & FSS & Time(ms) & FSSB & Time(ms) & FSSNW & Time(ms) \\ + \hline \\ + + 1 & 1297 & 0 & 1428 & 0 & 17091 & 0 \\ + 2 & 1383 & 0 & 1445 & 0 & 18245 & 0 \\ + 3 & 1189 & 0 & 1466 & 0 & 17929 & 0 \\ + 4 & 1340 & 0 & 1529 & 0 & 18938 & 0 \\ + 5 & 1277 & 0 & 1408 & 0 & 16657 & 0 \\ + 6 & 1224 & 0 & 1459 & 0 & 16623 & 0 \\ + 7 & 1289 & 0 & 1479 & 0 & 16812 & 0 \\ + 8 & 1238 & 0 & 1516 & 0 & 16743 & 0 \\ + 9 & 1259 & 0 & 1446 & 0 & 17288 & 0 \\ + 10 & 1167 & 0 & 1381 & 0 & 16283 & 0 \\ + 11 & 1707 & 1 & 1799 & 0 & 26305 & 0 \\ + 12 & 1731 & 1 & 1922 & 0 & 27937 & 0 \\ + 13 & 1604 & 2 & 1742 & 0 & 23435 & 0 \\ + 14 & 1463 & 1 & 1665 & 0 & 23664 & 0 \\ + 15 & 1486 & 1 & 1679 & 0 & 24546 & 0 \\ + 16 & 1521 & 1 & 1672 & 0 & 23350 & 0 \\ + 17 & 1536 & 1 & 1694 & 0 & 23410 & 0 \\ + 18 & 1655 & 1 & 1837 & 0 & 25954 & 0 \\ + 19 & 1653 & 1 & 1814 & 0 & 24379 & 0 \\ + 20 & 1686 & 1 & 1820 & 0 & 26449 & 0 \\ + 21 & 2396 & 2 & 2504 & 1 & 41291 & 1 \\ + 22 & 2205 & 2 & 2370 & 1 & 40726 & 2 \\ + 23 & 2451 & 2 & 2580 & 1 & 40938 & 1 \\ + 24 & 2299 & 2 & 2408 & 1 & 40171 & 1 \\ + 25 & 2370 & 2 & 2507 & 1 & 40726 & 1 \\ + 26 & 2352 & 2 & 2447 & 1 & 39985 & 1 \\ + 27 & 2359 & 2 & 2445 & 1 & 41381 & 1 \\ + 28 & 2324 & 2 & 2416 & 1 & 40210 & 1 \\ + 29 & 2326 & 2 & 2468 & 1 & 41029 & 1 \\ + 30 & 2304 & 2 & 2410 & 1 & 40052 & 1 \\ + 31 & 2729 & 10 & 3301 & 4 & 90040 & 4 \\ + 32 & 2919 & 11 & 3473 & 4 & 93956 & 5 \\ + 33 & 2734 & 10 & 3294 & 4 & 88526 & 5 \\ + 34 & 2849 & 10 & 3348 & 4 & 93002 & 5 \\ + 35 & 2870 & 10 & 3433 & 4 & 94648 & 5 \\ + 36 & 2861 & 9 & 3387 & 4 & 91854 & 5 \\ + 37 & 2776 & 9 & 3235 & 4 & 86024 & 5 \\ + 38 & 2716 & 9 & 3307 & 4 & 90668 & 5 \\ + 39 & 2600 & 9 & 3130 & 4 & 86204 & 5 \\ + 40 & 2801 & 10 & 3369 & 4 & 94282 & 5 \\ + 41 & 3221 & 12 & 3923 & 9 & 124255 & 10 \\ + 42 & 3099 & 13 & 3779 & 9 & 119557 & 10 \\ + 43 & 3051 & 12 & 3723 & 9 & 116540 & 10 \\ + 44 & 3201 & 12 & 3905 & 9 & 120373 & 10 \\ + 45 & 3153 & 11 & 3848 & 8 & 125511 & 10 \\ + 46 & 3185 & 13 & 3900 & 9 & 118536 & 10 \\ + 47 & 3239 & 12 & 3987 & 9 & 125846 & 10 \\ + 48 & 3204 & 15 & 3842 & 9 & 122633 & 10 \\ + 49 & 3054 & 25 & 3833 & 9 & 116951 & 10 \\ + 50 & 3275 & 18 & 3947 & 9 & 122137 & 10 \\ + 51 & 4133 & 39 & 4755 & 18 & 186401 & 22 \\ + 52 & 3953 & 37 & 4544 & 18 & 172949 & 22 \\ + 53 & 3941 & 34 & 4571 & 19 & 177161 & 23 \\ + 54 & 3989 & 33 & 4681 & 19 & 167367 & 23 \\ + 55 & 3995 & 38 & 4539 & 19 & 177463 & 22 \\ + 56 & 3895 & 37 & 4589 & 20 & 173601 & 23 \\ + 57 & 3917 & 38 & 4593 & 20 & 177406 & 21 \\ + 58 & 4030 & 28 & 4580 & 19 & 175451 & 22 \\ + 59 & 4028 & 33 & 4531 & 20 & 176227 & 22 \\ + + \hline \\ + +\end{tabular} +} +} + +\section{Results} + +\hskip+2.5cm\scalebox{0.5}{ +\rotatebox{0}{ +\begin{tabular}{l || l | l | l | l | l | l } + + \textbf{Flow Shop Results} \\ + \hline \\ + Test case & FSS & Time(ms) & FSSB & Time(ms) & FSSNW & Time(ms) \\ + \hline \\ + + 60 & 3934 & 36 & 4651 & 19 & 175613 & 21 \\ + 61 & 5527 & 55 & 6637 & 31 & 341593 & 37 \\ + 62 & 5308 & 62 & 6520 & 33 & 348559 & 38 \\ + 63 & 5235 & 56 & 6379 & 33 & 330137 & 38 \\ + 64 & 5025 & 54 & 6176 & 32 & 322463 & 37 \\ + 65 & 5298 & 54 & 6488 & 32 & 327590 & 37 \\ + 66 & 5154 & 55 & 6270 & 32 & 337158 & 39 \\ + 67 & 5324 & 51 & 6567 & 32 & 345018 & 39 \\ + 68 & 5137 & 56 & 6464 & 31 & 327843 & 38 \\ + 69 & 5514 & 51 & 6673 & 33 & 347061 & 38 \\ + 70 & 5371 & 52 & 6776 & 32 & 340545 & 37 \\ + 71 & 5895 & 97 & 7526 & 70 & 446080 & 78 \\ + 72 & 5540 & 93 & 7258 & 66 & 427988 & 76 \\ + 73 & 5832 & 104 & 7323 & 67 & 439027 & 78 \\ + 74 & 6073 & 95 & 7584 & 68 & 469628 & 80 \\ + 75 & 5643 & 95 & 7330 & 66 & 428141 & 76 \\ + 76 & 5474 & 101 & 7158 & 69 & 421132 & 79 \\ + 77 & 5751 & 98 & 7330 & 69 & 435170 & 80 \\ + 78 & 5803 & 105 & 7273 & 67 & 446972 & 77 \\ + 79 & 6058 & 98 & 7577 & 67 & 445413 & 80 \\ + 80 & 5913 & 110 & 7528 & 68 & 450267 & 78 \\ + 81 & 6651 & 193 & 8225 & 139 & 614406 & 166 \\ + 82 & 6599 & 182 & 8206 & 143 & 617564 & 164 \\ + 83 & 6630 & 215 & 8328 & 144 & 607365 & 169 \\ + 84 & 6585 & 197 & 8337 & 141 & 605765 & 165 \\ + 85 & 6724 & 190 & 8300 & 143 & 596913 & 164 \\ + 86 & 6646 & 182 & 8330 & 141 & 594087 & 159 \\ + 87 & 6639 & 186 & 8406 & 142 & 613865 & 165 \\ + 88 & 6775 & 186 & 8455 & 144 & 624521 & 161 \\ + 89 & 6721 & 190 & 8266 & 141 & 606648 & 166 \\ + 90 & 6784 & 188 & 8403 & 139 & 620298 & 165 \\ + 91 & 11058 & 767 & 14456 & 500 & 1.67E+06 & 603 \\ + 92 & 10756 & 741 & 14329 & 507 & 1.62E+06 & 596 \\ + 93 & 11200 & 852 & 14443 & 508 & 1.66E+06 & 618 \\ + 94 & 11057 & 899 & 14456 & 516 & 1.62E+06 & 609 \\ + 95 & 10711 & 739 & 14393 & 507 & 1.63E+06 & 597 \\ + 96 & 10571 & 735 & 14188 & 508 & 1.63E+06 & 602 \\ + 97 & 11061 & 797 & 14608 & 507 & 1.66E+06 & 610 \\ + 98 & 10923 & 784 & 14559 & 502 & 1.65E+06 & 598 \\ + 99 & 10605 & 716 & 14261 & 514 & 1.68E+06 & 640 \\ + 100 & 10931 & 828 & 14383 & 507 & 1.65E+06 & 611 \\ + 101 & 11708 & 1443 & 15622 & 1146 & 2.18E+06 & 1231 \\ + 102 & 11907 & 1449 & 15786 & 1131 & 2.17E+06 & 1237 \\ + 103 & 11890 & 1389 & 15806 & 1151 & 2.16E+06 & 1283 \\ + 104 & 11844 & 1375 & 15746 & 1138 & 2.17E+06 & 1261 \\ + 105 & 11764 & 1443 & 15796 & 1145 & 2.20E+06 & 1259 \\ + 106 & 11711 & 1415 & 15797 & 1154 & 2.17E+06 & 1246 \\ + 107 & 11845 & 1409 & 15792 & 1126 & 2.17E+06 & 1254 \\ + 108 & 11816 & 1390 & 15639 & 1127 & 2.18E+06 & 1285 \\ + 109 & 11795 & 1392 & 15686 & 1147 & 2.18E+06 & 1269 \\ + 110 & 11920 & 1430 & 15837 & 1131 & 2.17E+06 & 1253 \\ + 111 & 26816 & 20256 & 38041 & 18297 & 1.26E+07 & 19606 \\ + 112 & 27288 & 20394 & 38392 & 18548 & 1.29E+07 & 19688 \\ + 113 & 26996 & 21038 & 38037 & 18479 & 1.25E+07 & 19909 \\ + 114 & 27008 & 20406 & 38209 & 18396 & 1.25E+07 & 19819 \\ + 115 & 27048 & 21262 & 38050 & 19064 & 1.26E+07 & 19521 \\ + 116 & 27261 & 21020 & 38328 & 18799 & 1.27E+07 & 19643 \\ + 117 & 26937 & 21114 & 38145 & 18743 & 1.24E+07 & 19588 \\ + 118 & 27267 & 21146 & 38104 & 19047 & 1.27E+07 & 19801 \\ + 119 & 26776 & 20656 & 38075 & 19440 & 1.24E+07 & 19979 \\ + 120 & 27160 & 20129 & 38333 & 19678 & 1.25E+07 & 20100 \\ + + \hline \\ + +\end{tabular} +} +} + + + + +\end{document} +