Giter VIP home page Giter VIP logo

fibi_recherche's Introduction

Repository of the paper BI vs FI revisited

FIBI/analysis_results/ contains the code used to extract the results and build the figures from the metrics gathered in the c++ local searches programs. cpp_generation/FIBI/ contains the acctual local searches (TSP, MSSC, wMAXSAT)

Litterature review

To see the litterature review, go on https://rob174.github.io/BibliographyMaker/.

  1. Load the litterature_review_papers.json file with the button load data.
  2. Click on the Graph menu at the top left of the window
  3. Click on "add structure": load the file structure_categorization.json
  4. Then click on the "View Graph" tab

Algorithms

Below are the initialization algorithms used in this paper. The code is in folder cpp_generation/FIBI/src/data/improvements/

TSP

MSSC

wMAXSAT

fibi_recherche's People

Contributors

rob174 avatar

Watchers

 avatar

fibi_recherche's Issues

Wrong TOPK for MSSC

Take the topk nearest point to choose the next center. Is in contradiction with the principle of the algorithm Kmeans++ that takes the point with a higher probability if its shortest distance to a centroid is the biggest compare to other points

Clustering benchmark GREEDY different results

Comes from the fact that before applying the GREEDY algorithm, we start from a RANDOM initial clustering different from each instance:
9f0f701

unique_ptr<const vector<double>> points_pos(points_pos_ptr);
vector<int>* assignements_ptr = random_clust(cf.NUM_CLUST.get(), cf.NUM_POINTS.get(), cf.SEED_ASSIGN.get());
auto [centroids_ptr, npts_per_clust_ptr] = cmpt_centroids_and_npts_per_clust(*points_pos, *assignements_ptr, cf.NUM_DIM.get(), cf.NUM_CLUST.get());
switch (cf.IMPR.get())
{
case 0:
/* Random assignement: already done*/
break;
case 1:
/* Kmeans++ */
init_clustering_greedy_randomized(*centroids_ptr, *points_pos, *assignements_ptr, *npts_per_clust_ptr, cf.NUM_DIM.get(), cf.SEED_ASSIGN.get());
break;
case 2:
/* KMeans++ super glutton */
init_clustering_greedy(*centroids_ptr, *points_pos, *assignements_ptr, *npts_per_clust_ptr, cf.NUM_DIM.get(), cf.SEED_ASSIGN.get());

TSP TSPLIB GREEDY different results

Comes from the fact that before applying the GREEDY algorithm, we start from a RANDOM initial clustering different from each instance:
9f0f701

vector<int>* init_tsp_greedy(const long num_towns, const long seed, const DistanceMatrix& distances)
{
vector<int>* tour = new vector<int>(num_towns);
// Add a set to avoid duplicates (a points can be the nearest one for two different points)
set<int> available_points;
for (int i = 0; i < num_towns; i++)
{
available_points.insert(i);
}
mt19937 gen_dist(seed);
uniform_int_distribution<> dis_choice(0, num_towns - 1);
int start_point = dis_choice(gen_dist);
tour->at(0) = start_point;

Differences initial results, current results

Summary of the differences

  • TSP
    • Quad: Same conclusion everywhere except for GREEDY TOP3 even if not same numbers (cf issue #1)
    • TSPLIB: Same conclusion everywhere even if not same numbers (cf issue #1)
  • Clustering
    • Quad: Same conclusion even not same numbers and sometimes categories appearing
    • Benchmark Aloise: Same conclusion even not same numbers and sometimes categories appearing
    • Benchmark Franti: Same conclusion even not same numbers and sometimes categories appearing
  • MAXSAT
    • Benchmark evaluation benchmark 2021:

Note: for clustering and tsp and maxsat the definition of the intervals has been changed (cf issue #5 )

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.