Code Monkey home page Code Monkey logo

valdecy / pydecision Goto Github PK

View Code? Open in Web Editor NEW
241.0 7.0 56.0 431 KB

pyDecision is a comprehensive Python library that encompasses a wide array of Multi-Criteria Decision Analysis (MCDA) methods. These powerful and versatile tools assist in making effective decisions by comparing alternatives based on multiple criteria, making it a valuable resource for researchers, analysts, and decision-makers.

License: Other

Python 100.00%
promethee ahp electre python-mcda-library gaia chatgpt mcda mcdm electre-i electre-ii

pydecision's People

Contributors

sabir97 avatar valdecy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

pydecision's Issues

Question

Hello, does the bwm function only solves linear bwm?

Missing license

Please add a license, for example the MIT license, so that your project can be used by others.

Thank you.

Documentation about the methods and their parameters.

Hello,

thank you very much for implementing all these approaches. I would like to ask you if I can find somewhere a documentation that describes to your implementations (mainly the considered parameters).

In particular, I would like to know what are the Q S P W F parameters that are associated with the PROMETHEE II method.

PROMETHEE criterion type is necessary

In PROMETHEE specifying the criterion type is necessary and it can't be replaced by using negative values or their inverse. Because in the research paper of PROMETHEE methods 2016, the author of PROMETHEE said that in case the criterion is a minimization criterion then we should either reverse the preference function or add a minus sign to the evaluative difference between the two alternatives. Which is different from using the negatives of two evaluations.
image

BORDA research paper

1- I can't access the research paper associated with BORDA on the pyDecision website.
2- Is this method the same as BORDA Count ?
3- Why are the alternatives with lowest value ranked first ?
4- If this is the same as BORDA Count, BORDA Count doesn't support Multi criteria, it's a voting procedure.

What's the meaning of W Q S P

Thank you very much for your open source. Actually, I want to know the meaning of W, Q, S, P in p_ii.py .Thanks a lot

TODIM

Hello, nice Python package for MCDA, do you have a solution for TODIM?

PROMETHEE Distance and Preference Degree Matrices Dimensions

In the promethee methods, i think the distance_array and pd_array have incorrect dimensions.
Distance matrix x axis has: n(n-1) elements (n being number of alternatives) and y axis has: m criteria.
Because each alternative is compared to other alternatives except itself, and those comparisons are done for each criterion.
Meaning the matrix dimensions for distance and preference are: n(n-1) x m
I found this after i was using memory_profiler to calculate the space complexity of different methods, and found that suprinsigly PROMETHEE 2 had took less space than MAUT, SAW and TOPSIS. Which is shouldn't happen.

AHP Type 2

According to the published codes, this library is not able to be used in AHP Type 2, right? And do you have a solution for this issue?

Decision analysis - Decision Tree

I created an app in R using shiny and the data.tree to help students with decision analysis / decision trees. Does your pyDecision package offer similar functionality to what is linked below? If not, do you perhaps know of python packages that do?

Data.Tree example:
https://cran.r-project.org/web/packages/data.tree/vignettes/applications.html#jenny-lind-decision-tree-plotting

Decision Analysis tool in Radiant:
https://radiant-rstats.github.io/docs/model/dtree.html

Methods use different python types for weight parameter

Some methods use python list for weight and others use numpy array.

E.g., TOPSIS uses weights = np.array([ [0.25, 0.25, 0.25, 0.25] ]), CoCoSo uses weight = [0.25, 0.25, 0.25, 0.25]. When I try to use different methods on the same data, I need to squezee numpy arrays or convert the list to numpy array.

It would be reasonable if all methods use the same type (either python list or numpy array).

Thank you for this library that contains many methods together.

Problem with openai dependency

Hi Valdecy,

There seems to be an issue with the openai-dependency in pyDecision:

I installed the latest version in a clean virtual Environment. When I execute your AHP-example i get the follwing error:

Traceback (most recent call last):
  File "/home/alex/Schreibtisch/test_pyDecision/pyD_error.py", line 2, in <module>
    from pyDecision.algorithm import ahp_method
  File "/home/alex/Schreibtisch/test_pyDecision/venv/lib/python3.11/site-packages/pyDecision/algorithm/__init__.py", line 52, in <module>
    from .p_v           import promethee_v
  File "/home/alex/Schreibtisch/test_pyDecision/venv/lib/python3.11/site-packages/pyDecision/algorithm/p_v.py", line 7, in <module>
    from pyDecision.util.ga import genetic_algorithm
  File "/home/alex/Schreibtisch/test_pyDecision/venv/lib/python3.11/site-packages/pyDecision/util/__init__.py", line 2, in <module>
    from .LLM import ask_chatgpt_corr, ask_chatgpt_rank, ask_chatgpt_weights 
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/alex/Schreibtisch/test_pyDecision/venv/lib/python3.11/site-packages/pyDecision/util/LLM.py", line 7, in <module>
    from openai import OpenAI
ImportError: cannot import name 'OpenAI' from 'openai' (/home/alex/Schreibtisch/test_pyDecision/venv/lib/python3.11/site-packages/openai/__init__.py)

Solution: I updated openai from 0.28.1 to the latest version 1.3.7 by executing:

pip install openai --upgrade

After that it worked fine. So you could raise the version of openai in your setup.py.

Best regards!
Alex

Non-beneficial criterion representation

Hello,

I want to know if there's a way specify that a criterion is non-beneficial, like in some cases we want to minimize a value for example (prices, costs, distance ...)

Answers not matching with AHP

I was checking the answers against the given Paper (pdf) and realized that answers are not matching for most of the algorithms, for example for AHP following should be the answers:

image

But i am getting following (although keeping input exactly same as given in the paper):
w(g1): 0.175
w(g2): 0.063
w(g3): 0.149
w(g4): 0.019
w(g5): 0.036
w(g6): 0.042
w(g7): 0.167
w(g8): 0.35

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.