Skip to content

Package distribution optimization using local search algorithms ๐Ÿ“ฆ๐Ÿšš

License

Notifications You must be signed in to change notification settings

danaecanillas/IA-Azamon

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

91 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

IA Project: Azamon

HitCount GitHub stars GitHub forks GitHub repo size in bytes GitHub contributors

Package distribution optimization using local search algorithms

Authors: Dร nae Canillas, Miquel Escobar, Arnau Soler

2020-2021 Q1 - Universitat Politรจcnica de Catalunya, UPC

Table of Contents

  1. Problem Description
  2. Main Goal
  3. Usage
    1. Project files
    2. Execution steps
  4. LICENSE

Problem Description

We are facing a problem raised by the fictitious company Azamon. Azamon, like Amazon, is a product distribution company that has to deal with daily package distributions working side byside with transport companies, the ones who are responsible for making shipments to customers.This company needs a logistics optimization system for its shipments in order to be efficient,minimizing its storage needs and shipping costs.

What is the secret of the success of these companies? The satisfaction of the customers sincethey have the security that all their orders will be received in the estimated time and sometimesearlier than expected, which increases their happiness.

Main Goal

The main objective of the problem is to obtain for all the packages to be sent in one day in aconcrete city, an optimized day shipping offers distribution from the transport companies. Inthe design of the solution we should take into account the costs associated with transport andstorage and the customers happiness.

We can solve this problem using local search since we are not interested in the way to reachthe solution. We are only interested in arriving at the best possible solution achievable in areasonable time, without the need to reach the optimum since the solution space is very large.

To solve it, we will start from an initial solution that we will try to improve by using differentoperators that will discover neighboring solutions.

Usage

Project files

โ”œโ”€ .settings
โ”‚  โ””โ”€ org.eclipse.jdt.core.prefs
โ”œโ”€ lib
โ”‚  โ”œโ”€ AIMA.jar
โ”‚  โ””โ”€ Azamon.jar
โ”œโ”€ outputs
โ”œโ”€ reports
|  โ”œโ”€ figures
|  โ””โ”€ Report.pdf
โ”œโ”€ src/
|  โ”œโ”€ IA/Azamon/
โ”‚  |  โ”œโ”€ AzamonGoalTest.java
โ”‚  |  โ”œโ”€ AzamonHeuristicCost.java
โ”‚  |  โ”œโ”€ AzamonHeuristicHappiness.java 
โ”‚  |  โ”œโ”€ AzamonState.java
โ”‚  |  โ”œโ”€ AzamonSuccessorHillClimbing.java
โ”‚  |  โ”œโ”€ AzamonSuccessorSimulatedAnnealing.java
โ”‚  |  โ”œโ”€ Create.java
โ”‚  |  โ”œโ”€ Experiments.java
โ”‚  |  โ””โ”€ Main.java
|  โ””โ”€ Azamon.jar
โ”œโ”€ .classpath
โ”œโ”€ .gitignore
โ”œโ”€ .project
โ”œโ”€ LICENSE
โ””โ”€ README.md

Execution steps

- Create the .jar file:

ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท
1. Generate the class files:
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท
$ javac -cp "lib/*" IA/Azamon/*.java

ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท
2. Compile to obtain the executable
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท
$ jar cvfm Azamon.jar Manifest.txt IA/Azamon/*.class

- Execute the .jar file:

$ java -jar Azamon.jar

Home page:

###########################################
	                                   
  /_\   ____ __ _  _ __ ___    ___   _ __  
 //_\\ |_  // _` || '_ ` _ \  / _ \ | '_ \ 
/  _  \ / /| (_| || | | | | || (_) || | | |
\_/ \_//___|\__,_||_| |_| |_| \___/ |_| |_|
	                                   
###########################################
### 1.	Create an Experiment		###
### 2.	Run an Experiment		###
### 3.	Exit				###
###########################################

1. You can create an experiment, assigning the required values

	* Be aware! The decimal separator is the comma!

	- Select an Algorithm
		- Hill Climbing
		- Simulated Annealing
	- Enter the number of packages
	- Enter a package generator seed: (integer)
	- Enter a proportion for transports: (double)
	- Enter a transport generator seed: (integer)
	- Select the Generator
		- Generator A (Optimized Price)
		- Generator B (Optimized Happiness)
		- Generator C (Bad Initialization)
	- Select the Heuristic
		- Minimize the transport/storage cost
		- Minimize the transport/storage cost & Maximize customer happiness
	- Select the Operators
		- Move
		- Swap
		- Move & Swap

2. Run an experiment from the project statement.

	* The results will be stored inside the outputs folder.

	- Select an Experiment:
		- Special Experiment (output on the terminal)
		- Experiment Number 1 
		- Experiment Number 2 
		- Experiment Number 3  			
		- Experiment Number 4
		- Experiment Number 6 
		- Experiment Number 7.1 
		- Experiment Number 7.2
		- Experiment Number 7.4
		- Experiment Number 7.6 

LICENCE

MIT ยฉ Dร nae/Miquel/Arnau

About

Package distribution optimization using local search algorithms ๐Ÿ“ฆ๐Ÿšš

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%