Hello!

Inspiré(e) de prendre part à la discussion ? Ou de poser une question ou demander de l’aide ?

Alors bienvenues dans les grands sujets des forums de La Bulle : m’inscrire.

Cette partie du forum n’est pas compatible avec les bloqueurs publicitaires

Félicitations à vous, de préférer les accès payants plutôt que la gratuité par la publicité, c’est honnorable et cohérent de votre part. Malheureusement, l’accès payant par micropaiement (qui serait d’environ 1 cent pour 20 pages consultées) n’est pour l’instant pas encore mis en place, et l’accès gratuit sans publicité, est réservé aux membres actif(ve)s du forum. En attendant, si vous souhaitez poursuivre votre visite chez nous, vous pouvez ajouter le site à votre liste blanche, ou encore mieux, désactiver le bloqueur partout. Pour ajouter le site à votre liste blanche, pour Firefox (similaire pour les autres navigateurs), rendez‑vous en bas à gauche de la fenêtre de votre navigateur, et cliquez sur le menu comme dans l’exemple de l’image ci‑dessous, puis rechargez la page, en appuyant sur F5.

Comparer des ensemble de réels
Auteur Message
Beau Parleur
Beau Parleur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 320
Sam 5 Mar 2016 09:49
Message Comparer des ensemble de réels
Bonjour,
Je cherche comment le plus simplement et efficacement avec Ada, faire ceci :

J'ai un tableau de 1 à 50 qui contient des réels de -1.0 à 1.0.
Je souhaite faire un tableau de 1 à 5 contenant les indice du tableau précédant de 1 à 50 des élément contenant les plus grand réels.

exemple : tableau de 5 pour 2 =>
Données : 0.7, 1.0, 0.9, 0.95, 0.8
Resultat : 4 => 0.95, 2 => 1.0.

je dois pouvoir appeller une fonction ou procedure pour mettre à jour le tableau de sortie après mise à jour du tableau d'entrée.

Je ne sais quoi utilisé dans Ada pour le faire au mieux.
Merci pour votre aiguillage.


Edit : Pour bien faire il me faudrait un paquetage générique pour instancier un type du genre :

Source Ada : 

type index_type is
record
Num_of_index : Index_1_A_50_type;
Value : Real := 0.0;
end record

et obtenir la structure ad'hoc pour mes specification.
-- Tri, appartenance, union, exclusion, etc... selon une clef.
Profil
Administrateur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 17205
Sam 5 Mar 2016 10:27
Message Re: Comparer des ensemble de réels
Emmanuel Sens a écrit : 
Pour bien faire il me faudrait un paquetage générique […]

Pourquoi générique ? Ou encore, comment serait‑il paramétré ?

Pour répondre à la question initiale, je ne vois pas d’autres solutions que de scanner tout le tableau, même si la mise à jour peut être optimisée en évitant de re‑scanner tout le tableau d’entrée à chaque fois, et scannant plutôt le tableau de sortie, qui est plus petit.

Les deux tableaux sont rassemblés dans un type ? Il existe un type composé de ces deux tableaux ?

Image
Hibou57

« La perversion de la cité commence par la fraude des mots » [Platon]
Profil Site Internet
Beau Parleur
Beau Parleur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 320
Sam 5 Mar 2016 11:03
Message Re: Comparer des ensemble de réels
Non, j'ai pas ce type dans mon programme.

Pour le moment je parcoure le premier tableau et met les index des premiers élément contenant un réel inférieur à un Seuil donné dans le tableau résultant.
Ca donne ça en vrai :

Source ada : 

accept Respond(Power : in Real; Predicted : out Predicted_Set) do
Response :=
Neurologies.Respond (Input_Encode(Input_Initialize));
New_Line;
declare
Index : Natural := 0;
begin
for I in Response'Range loop
if Response (I) > power then
Put(Integer'Image(I) & " => ");
Real_Io.Put(Response (I));
if Index < Predicted'Last then
Predicted(Index+1) := I;
Index := Index + 1;
end if;
New_Line;
end if;
end loop;
end;
end Respond;
Profil
Beau Parleur
Beau Parleur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 320
Sam 5 Mar 2016 11:59
Message Re: Comparer des ensemble de réels
Re- bonjour,

J'ai une nouvelle idée qui consisterais en une selection des probables et une selection des improbables et je souhaiterais obtenir une selection moyenne.
La probabilité est donnée par un réel compris entre (-1.0) et 1.0.
Mais je n'ai aucune idée pour le moment pour l'opération fondamentale.

mon idée, serais un truc du genre :
pour i dans Windows_type'range faire
moyenne(I) := (Minimum(I)+ maximum(I)) / 2.0
fin pour.
retourner les plus proche de moyenne.all


Mais comment faire les plus proches ?
Profil
Beau Parleur
Beau Parleur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 320
Sam 5 Mar 2016 22:34
Message Re: Comparer des ensemble de réels
Me revoilou.

J'ai fait ça à la volée, ça donne ici le résultat en bas de cette page de documentations pour le programme GNAR version 0.1.2 pour jouer au LOTO ou à l'Euro Millions.

Le code est dans src/lib/es-neurolog.adb en bas de fichier dans l'accept statment "respond" du type de tache Neural_Network.
Profil
Beau Parleur
Beau Parleur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 320
Dim 6 Mar 2016 00:47
Message Re: Comparer des ensemble de réels
Bon ! Vite dit ! Mal plutôt ! Une erreur !
Voici mon code corrigé.
J'ai mis à jour le site avec la version 0.1.3.

Source ada : 

accept Respond(Power : in Real; Middle : out Predicted_Set; Probable : out Predicted_Set;unprobable : out Predicted_Set) do
Response :=
Neurologies.Respond (Input_Encode(Input_Initialize));
New_Line;
Put_Line("Predicted : " & Positive'Image(N));
declare
Prob_Index : Natural := 0;
Unprob_Index : Natural := 0;
Middle_Index : Natural := 0;
Biais : Real := Power;

Min : Real := Real'last;
Max : Real := Real'first;
Mid : Real := 0.0;




For_Probable : Output_Type := Response;
For_unprobable : Output_Type := Response;
For_Middle : Output_Type := Response;
begin
Put_line("Probable:");
for Win_Id in Probable'Range loop
declare
Max : Real := 0.0;

begin
for I in Response'Range loop
Max := Real'max(Max, For_Probable(I));
end loop;

for I in For_probable'Range loop
if For_probable (I) >= (Max) then
Put(Integer'Image(I) & " => ");
Real_Io.Put(For_probable (I));

Probable(Win_iD) := I;
max := Real'max(Max, For_probable(probable(Win_Id)));
For_probable(probable(Win_Id)) := Real'First;
New_Line;
exit;
end if;
end loop;
end;
end loop;
Put_line("Unprobable:");
for Win_Id in unProbable'Range loop
declare
Min : Real := 0.0;

begin
for I in Response'Range loop
Min := Real'min(Min, For_unprobable(I));
end loop;

for I in For_Unprobable'Range loop
if For_Unprobable (I) <= (Min) then
Put(Integer'Image(I) & " => ");
Real_Io.Put(For_Unprobable (I));

UnProbable(win_id) := I;
min := Real'min(Min, For_Unprobable(Unprobable(Win_Id)));
For_unprobable(unprobable(Win_Id)) := Real'Last;
New_Line;
exit;
end if;

end loop;
end;
end loop;
Put_line("Middle:");
Max := Real'First;
Min := Real'Last;

Mid := (Min + Max) / 2.0;
-- initialisation de min et max retardée dans la boucle.
for Win_Id in Middle'Range loop
declare

begin

for I in For_middle'Range loop
Min := Real'Min(Min, For_Middle(I));
Max := Real'Max(Max, For_Middle(I));
end loop;

for I in For_middle'Range loop

if For_Middle (I) < (Mid) and For_Middle (I) - Biais > min then
Put(Integer'Image(I) & " => ");
Real_Io.Put(For_Middle (I));

middle(Win_id) := I;

max := Real'max(Max, For_Middle(Middle(Win_Id)));

For_Middle(Middle(Win_Id)) := Real'first; -- + or - infini.
New_Line;
exit;
elsif For_Middle (I) > (Mid) and For_Middle (I) + Biais < max then
Put(Integer'Image(I) & " => ");
Real_Io.Put(For_Middle (I));

middle(Win_id) := I;

min := Real'min(Min, For_Middle(Middle(Win_Id)));


For_Middle(Middle(Win_Id)) := Real'last; -- + or - infini.
New_Line;
exit;
end if;

end loop;
end;
end loop;
end;
end Respond;


Voilà, j'avais mis l'initialisation de min et max pour le calcul moyen avant la boucle et je l'ai reporté dans la boucle.
Profil
Beau Parleur
Beau Parleur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 320
Lun 7 Mar 2016 05:19
Message Re: Comparer des ensemble de réels
Bonjour, J'ai terminé une premiere version avec une couche caché de taille langauge_type'size.

Rapide robuste efficace et pas cher, cette version vous donnera les numéro probable et impropable et les moyen en quelque seconde.

Vous aurez à loisir de choisir votre stratégie pour remplire la ou les grilles.

A gauche LOTO à droite Euro Millions dans deux terminaux :
Image

Predicted 1 sont les ensembles les boules principale et Predicted 2 les numéro chance ou étoiles des jeux respectifs.

le biais et un petit réel permettant à l'utilisateur de focaliser sur les donnée souhaitées.
Profil
Administrateur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 17205
Lun 7 Mar 2016 08:58
Message Re: Comparer des ensemble de réels
Faut que je revois quelque chose dans la mise en page du forum Hihihi! .

Là, y a un couac, ça déborde Oops, n’a fait une bêtise .

Image
Hibou57

« La perversion de la cité commence par la fraude des mots » [Platon]
Profil Site Internet
cron