testing things

thinking of how to display the ants moving and optimise by moving at
least one on each path
This commit is contained in:
Tanguy MAZE 2019-04-05 17:43:17 +02:00
parent 0a9d7b816d
commit c36f501b08
5 changed files with 144 additions and 93 deletions

View File

@ -6,7 +6,7 @@
# By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ # # By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ # # +#+#+#+#+#+ +#+ #
# Created: 2019/03/27 16:51:02 by tmaze #+# #+# # # Created: 2019/03/27 16:51:02 by tmaze #+# #+# #
# Updated: 2019/04/05 13:54:08 by tmaze ### ########.fr # # Updated: 2019/04/05 15:14:01 by tmaze ### ########.fr #
# # # #
#******************************************************************************# #******************************************************************************#
@ -43,7 +43,7 @@ SRC = lm_parser.c \
bfs.c \ bfs.c \
lst_ind.c \ lst_ind.c \
edmunds_karp.c \ edmunds_karp.c \
# lem_in.c \ # lem_in.c
OBJ = $(SRC:.c=.o) OBJ = $(SRC:.c=.o)

View File

@ -6,7 +6,7 @@
/* By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ */ /* By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2019/03/27 14:41:49 by tmaze #+# #+# */ /* Created: 2019/03/27 14:41:49 by tmaze #+# #+# */
/* Updated: 2019/04/05 13:24:22 by tmaze ### ########.fr */ /* Updated: 2019/04/05 17:43:11 by tmaze ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View File

@ -6,7 +6,7 @@
/* By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ */ /* By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2019/03/28 16:21:19 by tmaze #+# #+# */ /* Created: 2019/03/28 16:21:19 by tmaze #+# #+# */
/* Updated: 2019/04/03 17:18:35 by tmaze ### ########.fr */ /* Updated: 2019/04/05 15:13:53 by tmaze ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -78,8 +78,6 @@ t_ind **resolve_path(t_lmdata *data, int s_ind, int e_ind
return (clean_ret(ret)); return (clean_ret(ret));
j = reset_weights(data, s_ind, j); j = reset_weights(data, s_ind, j);
} }
if (j != -1 && lst_indadd(&(ret[i]), j) == NULL)
return (clean_ret(ret));
i++; i++;
} }
} }
@ -92,6 +90,8 @@ t_ind **edmunds_karp(t_lmdata *data, int start_ind, int end_ind)
int nb_path; int nb_path;
nb_path = 0; nb_path = 0;
if (data && data->adj)
{
bfs(data, tab, start_ind, end_ind); bfs(data, tab, start_ind, end_ind);
while (tab[end_ind].parent != -1) while (tab[end_ind].parent != -1)
{ {
@ -101,3 +101,5 @@ t_ind **edmunds_karp(t_lmdata *data, int start_ind, int end_ind)
} }
return (resolve_path(data, start_ind, end_ind, nb_path)); return (resolve_path(data, start_ind, end_ind, nb_path));
} }
return (NULL);
}

View File

@ -6,7 +6,7 @@
/* By: mndhlovu <marvin@42.fr> +#+ +:+ +#+ */ /* By: mndhlovu <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2019/03/25 06:31:05 by mndhlovu #+# #+# */ /* Created: 2019/03/25 06:31:05 by mndhlovu #+# #+# */
/* Updated: 2019/04/05 13:43:21 by tmaze ### ########.fr */ /* Updated: 2019/04/05 14:40:50 by tmaze ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -30,7 +30,7 @@ int main(int ac, char **av)
t_lmdata ldata; t_lmdata ldata;
t_holder holder; t_holder holder;
int fd; int fd;
t_list *it; t_node *it;
t_node *start; t_node *start;
t_node *end; t_node *end;
@ -44,17 +44,23 @@ int main(int ac, char **av)
{ {
//validation works //validation works
ft_printf("Success\n"); ft_printf("Success\n");
it = ldata.nodes; ft_printf("=== ldata ===\nnbants: %d\nnb_nodes: %d\nnodes: %p\nnodes_data: %p\nadj: %d\n\n", ldata.nbants, ldata.nb_nodes, ldata.nodes, ldata.nodes_data, ldata.adj);
while (it && ((t_node*)(it->content))->role != 's') it = ldata.nodes_data;
while (it && it->role != 's')
{ {
ft_printf("=== node ===\nindex: %d\nrole: %c\n\n", ((t_node*)(it->content))->ind, ((t_node*)(it->content))->role); ft_printf("=== node ===\nindex: %d\nrole: %c\n\n", it->ind, it->role);
it = it->next; it = it->next;
} }
start = it->content; ft_printf("=== node ===\nindex: %d\nrole: %c\n\n", it->ind, it->role);
it = ldata.nodes; start = it;
while (it && ((t_node*)(it->content))->role != 'e') it = ldata.nodes_data;
while (it && it->role != 'e')
{
ft_printf("=== node ===\nindex: %d\nrole: %c\n\n", it->ind, it->role);
it = it->next; it = it->next;
end = it->content; }
ft_printf("=== node ===\nindex: %d\nrole: %c\n\n", it->ind, it->role);
end = it;
edmunds_karp(&ldata, start->ind, end->ind); edmunds_karp(&ldata, start->ind, end->ind);
} }
else else

View File

@ -6,19 +6,60 @@
/* By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ */ /* By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2019/03/28 11:37:06 by tmaze #+# #+# */ /* Created: 2019/03/28 11:37:06 by tmaze #+# #+# */
/* Updated: 2019/04/05 13:59:02 by tmaze ### ########.fr */ /* Updated: 2019/04/05 17:43:06 by tmaze ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "lem_in.h" #include "lem_in.h"
#define NB_NODES 4 #define NB_NODES 8
#define NB_ANTS 20
int add_link(t_lmdata *data, int n1, int n2) int add_link(t_lmdata *data, int n1, int n2)
{ {
return (lst_indadd(&(data->adj[n1]), n2) && lst_indadd(&(data->adj[n2]), n1)); return (lst_indadd(&(data->adj[n1]), n2) && lst_indadd(&(data->adj[n2]), n1));
} }
t_node *get_node(t_lmdata *data, int index)
{
t_node *it;
it = data->node_data;
while (it && it->index != index)
it = it->next;
return (it);
}
void push_ants(t_lmdata *data, t_ind **paths, int nb_paths, int nb_ants)
{
t_ind *its[nb_path];
int ant_p[nb_path];
int ant_c;
int i;
char end;
i = 0;
end = 0;
while (i < nb_paths)
{
its[i] = paths[i];
i++;
}
ant_c = 0;
while (++ant_c <= nb_paths)
ant_p[ant_c - 1] = ant_c]
while (!end)
{
i = 0;
while (i < nb_paths)
{
ft_printf("L%d-%s", ant_p[i], get_node(data, its[i]->index)->name);
if (i < nb_path - 1)
ft_putchar(' ');
i++;
}
}
int main(void) int main(void)
{ {
t_lmdata data; t_lmdata data;
@ -29,8 +70,73 @@ int main(void)
data.nb_nodes = NB_NODES; data.nb_nodes = NB_NODES;
if ((data.adj = (t_ind**)ft_memalloc(sizeof(t_ind*) * NB_NODES)) == NULL) if ((data.adj = (t_ind**)ft_memalloc(sizeof(t_ind*) * NB_NODES)) == NULL)
return (1); return (1);
if (!add_link(&data, 0, 2) || !add_link(&data, 0, 1) || !add_link(&data, 0, 3)) if (!add_link(&data, 0, 1) || !add_link(&data, 0, 2))
{ {
lst_inddel(&(data.adj[2]));
lst_inddel(&(data.adj[1]));
lst_inddel(&(data.adj[0]));
ft_memdel((void**)&(data.adj));
return (1);
}
if (!add_link(&data, 1, 4))
{
lst_inddel(&(data.adj[2]));
lst_inddel(&(data.adj[1]));
lst_inddel(&(data.adj[0]));
ft_memdel((void**)&(data.adj));
return (1);
}
if (!add_link(&data, 2, 3) || !add_link(&data, 2, 5))
{
lst_inddel(&(data.adj[4]));
lst_inddel(&(data.adj[3]));
lst_inddel(&(data.adj[2]));
lst_inddel(&(data.adj[1]));
lst_inddel(&(data.adj[0]));
ft_memdel((void**)&(data.adj));
return (1);
}
if (!add_link(&data, 3, 6))
{
lst_inddel(&(data.adj[5]));
lst_inddel(&(data.adj[4]));
lst_inddel(&(data.adj[3]));
lst_inddel(&(data.adj[2]));
lst_inddel(&(data.adj[1]));
lst_inddel(&(data.adj[0]));
ft_memdel((void**)&(data.adj));
return (1);
}
if (!add_link(&data, 4, 5))
{
lst_inddel(&(data.adj[6]));
lst_inddel(&(data.adj[5]));
lst_inddel(&(data.adj[4]));
lst_inddel(&(data.adj[3]));
lst_inddel(&(data.adj[2]));
lst_inddel(&(data.adj[1]));
lst_inddel(&(data.adj[0]));
ft_memdel((void**)&(data.adj));
return (1);
}
if (!add_link(&data, 5, 6) || !add_link(&data, 5, 7))
{
lst_inddel(&(data.adj[6]));
lst_inddel(&(data.adj[5]));
lst_inddel(&(data.adj[4]));
lst_inddel(&(data.adj[3]));
lst_inddel(&(data.adj[2]));
lst_inddel(&(data.adj[1]));
lst_inddel(&(data.adj[0]));
ft_memdel((void**)&(data.adj));
return (1);
}
if (!add_link(&data, 6, 7))
{
lst_inddel(&(data.adj[7]));
lst_inddel(&(data.adj[6]));
lst_inddel(&(data.adj[5]));
lst_inddel(&(data.adj[4]));
lst_inddel(&(data.adj[3])); lst_inddel(&(data.adj[3]));
lst_inddel(&(data.adj[2])); lst_inddel(&(data.adj[2]));
lst_inddel(&(data.adj[1])); lst_inddel(&(data.adj[1]));
@ -38,69 +144,6 @@ int main(void)
ft_memdel((void**)&(data.adj)); ft_memdel((void**)&(data.adj));
return (1); return (1);
} }
/* if (!add_link(&data, 1, 4)) */
/* { */
/* lst_inddel(&(data.adj[2])); */
/* lst_inddel(&(data.adj[1])); */
/* lst_inddel(&(data.adj[0])); */
/* ft_memdel((void**)&(data.adj)); */
/* return (1); */
/* } */
/* if (!add_link(&data, 2, 3) || !add_link(&data, 2, 5)) */
/* { */
/* lst_inddel(&(data.adj[3])); */
/* lst_inddel(&(data.adj[2])); */
/* lst_inddel(&(data.adj[1])); */
/* lst_inddel(&(data.adj[0])); */
/* ft_memdel((void**)&(data.adj)); */
/* return (1); */
/* } */
/* if (!add_link(&data, 3, 6)) */
/* { */
/* lst_inddel(&(data.adj[5])); */
/* lst_inddel(&(data.adj[3])); */
/* lst_inddel(&(data.adj[2])); */
/* lst_inddel(&(data.adj[1])); */
/* lst_inddel(&(data.adj[0])); */
/* ft_memdel((void**)&(data.adj)); */
/* return (1); */
/* } */
/* if (!add_link(&data, 4, 5)) */
/* { */
/* lst_inddel(&(data.adj[6])); */
/* lst_inddel(&(data.adj[5])); */
/* lst_inddel(&(data.adj[3])); */
/* lst_inddel(&(data.adj[2])); */
/* lst_inddel(&(data.adj[1])); */
/* lst_inddel(&(data.adj[0])); */
/* ft_memdel((void**)&(data.adj)); */
/* return (1); */
/* } */
/* if (!add_link(&data, 5, 6) || !add_link(&data, 5, 7)) */
/* { */
/* lst_inddel(&(data.adj[6])); */
/* lst_inddel(&(data.adj[5])); */
/* lst_inddel(&(data.adj[4])); */
/* lst_inddel(&(data.adj[3])); */
/* lst_inddel(&(data.adj[2])); */
/* lst_inddel(&(data.adj[1])); */
/* lst_inddel(&(data.adj[0])); */
/* ft_memdel((void**)&(data.adj)); */
/* return (1); */
/* } */
/* if (!add_link(&data, 6, 7)) */
/* { */
/* lst_inddel(&(data.adj[7])); */
/* lst_inddel(&(data.adj[6])); */
/* lst_inddel(&(data.adj[5])); */
/* lst_inddel(&(data.adj[4])); */
/* lst_inddel(&(data.adj[3])); */
/* lst_inddel(&(data.adj[2])); */
/* lst_inddel(&(data.adj[1])); */
/* lst_inddel(&(data.adj[0])); */
/* ft_memdel((void**)&(data.adj)); */
/* return (1); */
/* } */
ft_printf("===== list of adj =====\n"); ft_printf("===== list of adj =====\n");
i = 0; i = 0;
while (i < NB_NODES) while (i < NB_NODES)
@ -114,7 +157,7 @@ int main(void)
} }
i++; i++;
} }
path = edmunds_karp(&data, 0, 1); path = edmunds_karp(&data, 0, 7);
if (path != NULL) if (path != NULL)
{ {
i = 0; i = 0;
@ -131,10 +174,10 @@ int main(void)
} }
} }
tablst_inddel(path); tablst_inddel(path);
/* lst_inddel(&(data.adj[7])); */ lst_inddel(&(data.adj[7]));
/* lst_inddel(&(data.adj[6])); */ lst_inddel(&(data.adj[6]));
/* lst_inddel(&(data.adj[5])); */ lst_inddel(&(data.adj[5]));
/* lst_inddel(&(data.adj[4])); */ lst_inddel(&(data.adj[4]));
lst_inddel(&(data.adj[3])); lst_inddel(&(data.adj[3]));
lst_inddel(&(data.adj[2])); lst_inddel(&(data.adj[2]));
lst_inddel(&(data.adj[1])); lst_inddel(&(data.adj[1]));