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"]
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
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.
To build the class of this program, you should execute the following command:
mvn compile
An example of a LP problem:
Running the examples will involve compiling them, then running them.
This class will alow to generate numbers that have a target Sum.
To build the class Utils, you should execute the following command:
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:
java -cp objs; com.lamsade.utacalculator.NumbersGenerator 4 1.0
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:
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:
java -cp objs; com.lamsade.utacalculator.ScaleGenerator 10.0 20.0 4
For the ChoiceTransportation exercice, you should run the following commands :
javac -d objs -cp examples/ChoiceTransportation.java
java -Djava.library.path=lib -cp com.lamsade.lp.ChoiceTransportation
For the exercice Buying New Car, you should run the following commands :
javac -d objs -cp examples/BuyingNewCar.java
java -Djava.library.path=lib -cp com.lamsade.lp.BuyingNewCar
Some librairies are need needed to run the project correctly.
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.