fhswf / MLPro

MLPro - The Integrative Middleware Framework for Standardized Machine Learning in Python
https://mlpro.readthedocs.io/
Apache License 2.0
12 stars 3 forks source link

GT: Create a sub-package for a native GT #613

Closed steveyuwono closed 1 year ago

steveyuwono commented 1 year ago

Description/Motivation Develop a native GT framework to solve cooperative and competitive games (not in dynamic programming as what has been implemented), which can be used for solving non-technical systems.

Split them into two sub-packages:

  1. GT-DP = current implementation
  2. GT-Native

Task list

Related issues

322

Cross references https://github.com/fhswf/MLPro/issues/613#issuecomment-1488374475

steveyuwono commented 1 year ago

Brainstorming for MLPro-GT-Native:

  1. Component

    • Game
    • Player
    • Strategy
    • Rule/Solver
    • Payoff Matrix
  2. Things to think about

    • How is the structure of MLPro-GT-Native? This is not for dynamic programming, therefore no training is required.

    • Do we need a GTNativeScenario to run a game? It requires only a one-shot run to get the decision.

    • A game can be defined by a payoff matrix and a set of players. Each player has a set of strategies. Each player makes a decision according to their individual rule/solver.

    • Each game has a specific objective that can be determined through the types of the games, including cooperative/competitive games, pure/mixed strategies, and an optional user-defined objective.

    • We also have two types of games, such as simultaneous games and sequential games.

    • How to design a base class for the payoff matrix? How to assure that the payoff matrix is dynamic, thus it can be integrated with dynamic programming or other sub-packages? Example 1: the payoff is initially unknown, and then we explore from a system to fulfil the payoff matrix. Example 2: Given only one/more mathematical formulations or statements, then the payoff matrix is filled according to its mathematical formulations or statements

    • How to deal with sequential games with an uneven number of successors? See picture in the reference section below.

    • Evaluation of the selected strategies with respect to the objective: Nash equilibrium / optimal strategy detection? Global evaluation and individual evaluation?

  3. Pool of objects

  4. Future Extensions

    • Zero-Sum-Games (accumulated payoff of all players always equals 0, this suits non-cooperative games) -> Additional setting in a game?

    • Potential Games (cooperative games to maximize global payoff) -> Part of the game with a specific objective?

    • Stackelberg Games (sequential games with leader-follower format) -> Additional setting in a game?

    • Sci-UI

    • Idea for "more" extensions: we provide a set of decision-making rules or solvers. Then, we automate set up an objective, run with all of the solvers, and select which algorithm is the most suitable.

Reference:

https://github.com/fhswf/MLPro/tree/gt_native/doc/rtd/content/04_appendices/appendix2/sub/core/mlpro_gt/images

image

Image

steveyuwono commented 1 year ago

Short noted: In today's meeting, we decided to introduce adaptive PayoffMatrix, which is trainable and later on can be integrated into online adaptivity, etc (future works). Due to mapping, we decided to either inherit mlpro.bf.Function or introduce p_function. Then, we also agreed to the direction of a state-less system.

steveyuwono commented 1 year ago

HI @detlefarend , I updated the class diagram draft of MLPro-GT-Native, as attached. Not everything is covered, but the main methods of each class are included. You can look at it and comment on it. But this is not urgent. Thank you!

Additionally, the location and structure of sub-packages for dynamic games and native have been adjusted as per our discussion. Thus, the actual users will not meet any incompatibilities after updating the latest version in the future.

MLPro-GT_2 0_brainstorming drawio