oliviercailloux / decision-uta-method

A repository containing the doc and the work done during my research about UTA method.
MIT License
0 stars 0 forks source link

image:https://travis-ci.org/oliviercailloux/decision-uta-method.svg?branch=master["Build Status", link="https://travis-ci.org/oliviercailloux/decision-uta-method"] image:https://sonarcloud.io/api/project_badges/measure?project=io.github.oliviercailloux%3Auta-calculator&metric=alert_status["SonarCloud Status", link ="https://sonarcloud.io/dashboard?id=io.github.oliviercailloux%3Auta-calculator"]

decision-uta-method

A repository containing the work done during my research about UTA method (Internship at LAMSADE - Dauphine).

Work in progress

Upon decompressing the archive, you will get the following structure:

.decision-uta-method
├── diagrams                            <- directory containing diagrams used
├── uta-calculator                      <- directory containing Java projects
├── docs                                <- directory containing all of the docs produced
│   ├── images                          <- directory containing all of the images used in this repo
│   ├── reports                         <- directory containing all of the reports made
│   ├── internship-report.pdf           <- pdf file explaining all the stuff done during the internship
│   └── internship-report.tex           <- LaTeX file that generated the internship-report.pdf file
├── .gitignore                          <- ignoring file
└── README                              <- this file

UTA

The UTA method is used to solve a multi-criteria problem. It build a utility function based on the preferences of the DM and it consist in solving a linear program (LP).

An improved version of the UTA is the UTASTAR. In UTA we used a single error in UTASTAR we use a double positive error function. The updated version has performed better than the regular method.

In the internship-report, you will find a section that explain the UTA method, illustrated with an example.

UTA Calculator - Criteria

To build the class of this program, you should execute the following command:

on windows

mvn compile

Example of a java class that will solve a Linear Program

An example of a LP problem:

Alternative criteria result

Running the examples will involve compiling them, then running them.

Utils - NumbersGenerator

This class will alow to generate numbers that have a target Sum.

To build the class Utils, you should execute the following command:

on windows

javac -d objs utils/NumbersGenerator.java 

When running the program, you can insert 2 arguments :

int counter; // default value : 4 
double targetSum; // default value : 1.0

For example, if you want to generate 4 numbers that have the sum of 1, all you have to do is execute the following command:

on windows

java -cp objs; com.lamsade.utacalculator.NumbersGenerator 4 1.0  

Utils - ScaleGenerator

This class will alow to generate a scale, this has been used to generate a scale for a criteria.

To build the class Utils, you should execute the following command:

on windows

javac -d objs utils/ScaleGenerator.java 

When running the program, you can insert 3 arguments :

double minValue;// default value : 10.0
double maxValue; // default value : 20.0 
int cuts; // default value : 4

For example, if you want to generate the scale of criteria that have a minimum value of 10 and a maximum value of 20 with 4 cuts, all you have to do is execute the following command:

on windows

java -cp objs; com.lamsade.utacalculator.ScaleGenerator 10.0 20.0 4  

Linear Program for the exercice Choice of Tranportation [UTA]

For the ChoiceTransportation exercice, you should run the following commands :

on windows

javac -d objs -cp examples/ChoiceTransportation.java
java -Djava.library.path=lib -cp  com.lamsade.lp.ChoiceTransportation

Linear Program for the exercice Buying New Car [UTA]

For the exercice Buying New Car, you should run the following commands :

on windows

javac -d objs -cp examples/BuyingNewCar.java
java -Djava.library.path=lib -cp com.lamsade.lp.BuyingNewCar

Librairy Or-tools

Some librairies are need needed to run the project correctly.

on linux

libortools.so and libjniortools.so, you can get them https://developers.google.com/optimization/install/java/linux[here]

We used the binary distribution version v6.7.4981 for Ubuntu 14.04 64bit.

We choose this version for Unbuntu 14.04 because we needed a version working on TRAVIS and ours computers (Ubuntu 16.04 and Debian 9 Stretch).

Download and unzip it, collect them in their /lib repository and stored them in /decision-uta-method/lib repository.