Délégation de services domotique
Fermé
mariya2016
Messages postés
30
Date d'inscription
dimanche 13 mars 2016
Statut
Membre
Dernière intervention
19 mai 2016
-
3 avril 2016 à 22:11
mariya2016 Messages postés 30 Date d'inscription dimanche 13 mars 2016 Statut Membre Dernière intervention 19 mai 2016 - 4 mai 2016 à 01:20
mariya2016 Messages postés 30 Date d'inscription dimanche 13 mars 2016 Statut Membre Dernière intervention 19 mai 2016 - 4 mai 2016 à 01:20
A voir également:
- Délégation de services domotique
- Désactiver services inutiles windows 11 - Guide
- Service de diffusion de données - Forum TNT / Satellite / Réception
- Microsoft apps & services ✓ - Forum Téléphones & tablettes Android
- Quel service d'internet permet à son navigateur de trouver l’adresse ip qui correspond à bipm.org ? - Forum Webmastering
- Savoir l'adresse ip du correspondant - Forum Réseau
3 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
3 avril 2016 à 22:29
3 avril 2016 à 22:29
Bonjour,
Le plus dur là dedans ce n'est pas trop le calcul en soit (c'est juste une moyenne pondérée), mais plutôt comment tu vas attribuer des valeurs derrière chacun des paramètres a, b, c... qui sont plus durs à déterminer.
Remarque : que représente la pondération w ?
Le plus dur là dedans ce n'est pas trop le calcul en soit (c'est juste une moyenne pondérée), mais plutôt comment tu vas attribuer des valeurs derrière chacun des paramètres a, b, c... qui sont plus durs à déterminer.
Remarque : que représente la pondération w ?
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 4/04/2016 à 18:47
Modifié par KX le 4/04/2016 à 18:47
De manière purement algorithmique tu peux faire comme ceci :
Le plus dur maintenant c'est de mettre en équations w, x et y...
La confiance n'exclut pas le contrôle
private static double sum(int n, Function<Integer, Double> x) { double s = 0; for (int i = 1; i <= n; i++) s += x.apply(i); return s; } public static <X, Y> double qSim(int a, int b, int c, Function<Integer, Double> w, Function<Integer, X> x, Function<Integer, Y> y) { double p = a * sum(a + b + c, i -> w.apply(i) * aSim(x.apply(i), y.apply(i))); double q = a * sum(a, i -> w.apply(i)) + b * sum(b, i -> w.apply(a + i)) + c * sum(c, i -> w.apply(a + b + i)); return p / q; } public static <X, Y> double aSim(X x, Y y) { return 0; // TODO }
Le plus dur maintenant c'est de mettre en équations w, x et y...
La confiance n'exclut pas le contrôle
mariya2016
Messages postés
30
Date d'inscription
dimanche 13 mars 2016
Statut
Membre
Dernière intervention
19 mai 2016
4 avril 2016 à 20:08
4 avril 2016 à 20:08
Bonjour,
merci pour votre réponse, ça reste toujours ambiguë je ne vois pas encore la solution et comment récupérer a et b....etc
merci pour votre réponse, ça reste toujours ambiguë je ne vois pas encore la solution et comment récupérer a et b....etc
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
5 avril 2016 à 22:08
5 avril 2016 à 22:08
Je ne connais pas ta formule donc je ne sais pas à quoi elle sert exactement, mais je dirais que le but c'est de chercher a,b,c tels que Qsim est maximal ?
Dans ce cas tu peux y aller en force brute :
Dans ce cas tu peux y aller en force brute :
int aMax = 1, bMax = 1, cMax = 1; double simMax = Double.NEGATIVE_INFINITY; for (int a = 1; a <= n - 2; a++) for (int b = 1; b <= n - a -1; b++) for (int c = 1; a <= n - a - b; c++) { double sim = qSim(a, b, c, w, x, y); if (sim > simMax) { simMax = sim; aMax = a; bMax = b; cMax = c; } } System.out.println("a="+aMax+", b="+bMax+", c="+cMax+" -> qSim="+simMax);
mariya2016
Messages postés
30
Date d'inscription
dimanche 13 mars 2016
Statut
Membre
Dernière intervention
19 mai 2016
4 mai 2016 à 01:18
4 mai 2016 à 01:18
Bonsoir à tous, j'ai pas encore trouvé une solution à ce problème.
J'ai essayé un petit code pour trouvé a,b et c mais ça ne marche pas, les nombres ne s'incrémentent pas, je pense que le problème est dans la boucle (je veux dire dans "result.next()").
j'ai pas su régler le problème :( , est ce que quelqu'un pourras m'aider svp!
voici mon code:
et voici ma table 'equipementtemperature':
donc dans exemple(en comparant 'chauf' et 'climG') le résultat finale doit être:
a=4 (le nombre de caractéristiques en commun_on ne compte pas le nom de l'equipement,marque,piece,etat_);
b=3 (le nombre de caractéristiques que 'climG' a et 'chauf' n'a pas _ le slash / veut dire la caractéristique est abente_);
c=0 (le nombre de caractéristiques que 'chauf' a et 'climG' n'a pas).
Merci pour votre aide.
J'ai essayé un petit code pour trouvé a,b et c mais ça ne marche pas, les nombres ne s'incrémentent pas, je pense que le problème est dans la boucle (je veux dire dans "result.next()").
j'ai pas su régler le problème :( , est ce que quelqu'un pourras m'aider svp!
voici mon code:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; public class similair { static int a=0; static int b=0; static int c=0; public static void main(String[] args) { try{ Class.forName("oracle.jdbc.driver.OracleDriver"); Connection con=DriverManager.getConnection("jdbc:oracle:thin:system/orcl1@localhost:1521:XE","admin","admin"); Statement st=con.createStatement(); String sqlT1="select * from EQUIPEMENTTEMPERATURE where NOMEQUIPEMENT='chauf' "; String sqlT2="select * from EQUIPEMENTTEMPERATURE where NOMEQUIPEMENT='climG' "; ResultSet rsT1=st.executeQuery(sqlT1); ResultSet rsT2=st.executeQuery(sqlT2); ResultSetMetaData rsmd = rsT1.getMetaData(); int columnsNumber = rsmd.getColumnCount(); ResultSetMetaData rsmd2 = rsT2.getMetaData(); int columnsNumber2 = rsmd2.getColumnCount(); while (rsT1.next()&& rsT2.next()) { for(int i = 0 ; i <= columnsNumber && i <= columnsNumber2; i++){ int j=i+3; if((rsT1.getString(j)!="/") &(rsT2.getString(j) !="/")) a++; else if((rsT1.getString(j)=="/")& (rsT2.getString(j) !="/")) b++; else if ((rsT1.getString(j)!="/") & (rsT2.getString(j) =="/")) c++; } } System.out.println(a +" "+ b +" "+c); con.close(); } catch(Exception e) { e.printStackTrace(); } } }
et voici ma table 'equipementtemperature':
donc dans exemple(en comparant 'chauf' et 'climG') le résultat finale doit être:
a=4 (le nombre de caractéristiques en commun_on ne compte pas le nom de l'equipement,marque,piece,etat_);
b=3 (le nombre de caractéristiques que 'climG' a et 'chauf' n'a pas _ le slash / veut dire la caractéristique est abente_);
c=0 (le nombre de caractéristiques que 'chauf' a et 'climG' n'a pas).
Merci pour votre aide.
mariya2016
Messages postés
30
Date d'inscription
dimanche 13 mars 2016
Statut
Membre
Dernière intervention
19 mai 2016
4 mai 2016 à 01:20
4 mai 2016 à 01:20
j'ai oublié de citer que ça m'affiche 0 0 0 (comme valeurs de a,b et c )
3 avril 2016 à 22:38