Algo de tableau d'horaires

Non non ça ne me gène pas, c’était juste pour savoir, perso je trouve ça rigolo

Ce message a été édité par ko le 20/10/2004

[quote][quote]
oui, mais si ca te gene je le tappe en anglais ca fera plus 1337 et plus proche des autres langages (entre printf() et info(), je ne vois aucune difference…)[/quote]
Non non ça ne me gène pas, c’était juste pour savoir, perso je trouve ça rigolo :P)

[/quote]En effet, c’est très proche du français. Vas faire un tour sur pcsoft.fr pour des exemples de code rigolo et une présentation de la bête

Don : ton algo n’a pas l’air de fonctionner.

Je teste celui d’arkhatope.

Ouais je sais, je debugge là mais ca sera moins propre que l’autre solution je pense.
Ce message a été édité par Donjohn le 20/10/2004

[quote]Ouais je sais, je debugge là mais ca sera moins propre que l’autre solution je pense.[/quote]En même temps, j’aime bien ton approche. Commencer par alimenter le tableau, pour ensuite supprimer éventuellement les plages “entre”, c’est un point de vue différent du mien mais tout aussi valable.

et merde je vais pas pouvoir finir, j’avais debuggé les 2 premiers cas mais j’ai un truc urgent à faire now. Si vous y arrivez pas, je me remets dessus demain.

un probleme d’horaire, c’est pas un simple probleme d’optimisation qui peut se resoudre par un simplex?

Je n’ai aucune idée de ce qu’est un simplex (c’est peut-être que j’en suis un ). Explique, ça a l’air bien ?

Arkhatope, ta solution ne marche pas complètement…

Exemple : j’ai un tableau contenant déjà les deux horaires 10h00 - 11h00 et 12h00-13h00.

Si je rajoute l’horaire à cheval sur les deux 10h30-12h30, je me retrouve avec un tableau 1000, 1030, 1230, 1300 au lieu de 1000, 1300 (donc les trois rendez-vous n’ont pas fusionné).

Je pense qu’il faut soit régler le souci avec une approche à la lucasbfr, soit faire une fonction récursive (voire les deux ???)… :confused:

On va y arriver !!!

aaaahhhh d’accord. Bon, il y a une façon simple de gérer ça, mais ça implique qu’au résultat, on ait juste les plages horaires occupées par un RDV, et qu’on en puisse pas savoir, pour une plage T à quel RDV cette plage est allouée…
En bref, tu veux savoir les heures de rendez-vous “en tout” ou les heures de tel rendez-vous + heures de tel rendez-vous + heures de tel rendez-vous…?

De même ça aiderait si on pouvait considérer que les RDV sont fixés tous les 1/4 d’heure ou 1/2 heures, bref si on ne peut pas prendre un RDV pour 16:57 par exemple. Est-ce le cas ?

Non tu peux pas appliquer un simplex, là.
Y a rien à maximiser ou minimiser.

Pour Arkhatope : le simplex c’est un algo pour résoudre un programme linéaire.
Un programme linéaire, ça ressemble à ça par exemple :
max z = 3x1 - x2
sous contraintes :
x1 + x2   <= 2
2x1 + 5x2 <= 5
x1, x2 >=0

On peut peut-être modéliser le pb de use comme un programme linéaire mais bon ce serait se faire chier et l’implementation du simplex sans être extrêmement complexe (ha ha) serait longue.

Moi je vote pour un algo en deux passes :

  • t’insère comme une brute ton horaire en fonction de sa date de début,
  • tu fusionnes ce qui doit l’être en regardant les horaires de début et de fin des crénaux suivants jusqu’à ce que tu trouves un créneaux dont la date de début ou de fin soit supérieure à ta date de fin puis tu fais la même chose avec le précédent.

edit : orthographe +  précisions

Ce message a été édité par billbaroud le 20/10/2004

Bah comme disais mon vieux prof de programmation à la fac, que j’ai du voire deux fois avant de partir, mieux vaut toujours commencer par tester son algo avec le cas “minimum” et le cas “maximum”, et si les deux passent, dans 99% des cas c’est bon.

[quote]Bah comme disais mon vieux prof de programmation à la fac, que j’ai du voire deux fois avant de partir, mieux vaut toujours commencer par tester son algo avec le cas “minimum” et le cas “maximum”, et si les deux passent, dans 99% des cas c’est bon.[/quote]Venant d’un prof d’info, ça fait pitiée un raisonnement aussi stupide.

(merci Bill pour la leçon)

Ce message a été édité par Arkhatope le 20/10/2004

[quote][quote]Bah comme disais mon vieux prof de programmation à la fac, que j’ai du voire deux fois avant de partir, mieux vaut toujours commencer par tester son algo avec le cas “minimum” et le cas “maximum”, et si les deux passent, dans 99% des cas c’est bon.[/quote]Venant d’un prof d’info, ça fait pitiée un raisonnement aussi stupide.

(merci Bill pour la leçon)

Ce message a été édité par Arkhatope le 20/10/2004[/quote] De rien l’optimisation c’est ma grande passion, d’ailleurs je lis optimisation magazine…
(désolé)

Sinon il n’y a pas de “type” de rendez-vous.

En fait il n’y a pas de rendez-vous, c’est une notion qui ne va pas. Il y a juste une plage horaire “occupée” ou non (c’est pour une activation d’un processus dans des plages horaires données).

Les horaires sont à la minute près, donc on peut avoir du 11h57 sans souci.

[quote]Pour Arkhatope : le simplex c’est un algo pour résoudre un programme linéaire.
Un programme linéaire, ça ressemble à ça par exemple :
max z = 3x1 - x2
sous contraintes :
x1 + x2   <= 2
2x1 + 5x2 <= 5
x1, x2 >=0[/quote]Désolé pour le off-topic, mais tu connais la solution de ce problème billbaroud ? Je n’ai pas pu m’empêcher de résoudre ce problème (et j’ai trouvé 3).

Sinon, mon algo en Java marche à peu près dans tous les cas, au moins ceux qui ont été cités dans ce topic (à moins que je me gourre … ©). Sauf dans un cas que j’essaie de corriger, où je peux arriver à une solution 1000 1030 1030 1200. Evidemment c’est en Java, j’ai pas Windev au taf (et de toute façon je connais pas)…

Bon alors ahum tu peux cough déclarer 1440 booleens pompompom (1 par minute)
Pour chaque plage occupée, tu renseignes les booleens correspondants à 1 (par exemple plage 0015-0030 je mets les booleens B15,B16,…B30 à 1
Tu fais la même chose pour la plage à ajouter.
Pour finir, tu parcours tes booleens pour voir ce qui est à 1 et tu as tes plages.

(Ce que vous venez de lire est un exemple stupide pour vieux bidouilleur autodidacte comme moi. Ne le faites pas. Quoique)

Bon désolé si cette “solution” ahum ne convient pas, mais je me dois de mériter un minimum mon salaire et de retourner bosser.

[quote][quote]
Pour Arkhatope : le simplex c’est un algo pour résoudre un programme linéaire.
Un programme linéaire, ça ressemble à ça par exemple :
max z = 3x1 - x2
sous contraintes :
x1 + x2   <= 2
2x1 + 5x2 <= 5
x1, x2 >=0[/quote]Désolé pour le off-topic, mais tu connais la solution de ce problème billbaroud ? Je n’ai pas pu m’empêcher de résoudre ce problème (et j’ai trouvé 3).

Sinon, mon algo en Java marche à peu près dans tous les cas, au moins ceux qui ont été cités dans ce topic (à moins que je me gourre … ©). Sauf dans un cas que j’essaie de corriger, où je peux arriver à une solution 1000 1030 1030 1200. Evidemment c’est en Java, j’ai pas Windev au taf (et de toute façon je connais pas)…[/quote] Non désolé j’ai pas la solution je l’ai pondu à l’inspiration sans même savoir si c’était réalisable…
De toutes façon à vu de nez ça doit donner un quadrilatère graphiquement parlant (pour les contraintes), tu testes avec les valeurs des 4 coins tu verras bien.

Ouai, j’ai dû me planter grave, la solution (2,0) donne déjà z=6 …
Je pensais pas que ça remontait à si loin ces cours d’optimisation, je vais essayer de m’y remettre un peu à l’occasion.

mouhahaha Arkhatope