Manipulation d'un objet?
Melissa75
Messages postés
21
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
J'ai la méthode suivante, j'ai besoin de faire une modification de telle sorte à avoir un tableau searchPoints non pas de type double mais supportant deux types de valeurs "entières" pour la première colonne pour servir d'index et "réelles" pour la deuxième colonne correspondante à l'index de la première colonne. Et si je définis une méthode de trie qui me permet de trier un tel tableau par ordre décroissant de la deuxième colonne,comment procéder pour maintenir chaque valeur réelle indexée par sa valeur entière??? merci beaucoup d'avance
[CODE]
public void run() {
double searchPoints[][] = new double[n][var + 1];
for (int i = 0; i < n; i++) {
double[] tmpX = new double[var];
for (int j = 0; j < var; j++) {
searchPoints[i][j] = this.random(upperLimit, lowerLimit);
tmpX[j] = searchPoints[i][j];
}
double tmp = function(tmpX);
searchPoints[i][var] = tmp;
}
for (int itr = 1; itr <= iteration; itr++) {
sort(searchPoints);
for (int i = 0; i < e; i++) {
double[] x = new double[var];
double[] x_best = new double[var];
for (int j = 0; j < var; j++) {
x[j] = searchPoints[i][j];
x_best[j] = x[j];
}
double f = searchPoints[i][var];
double f_best = f;
for (int indx = 0; indx < nep; indx++) {
double[] x_elite = new double[var];
for (int j = 0; j < var; j++) {
x_elite[j] = this.random(x[j] + ngh, x[j] - ngh);
}
double f_elite = function(x_elite);
if (f_elite > f_best) {
for (int j = 0; j < var; j++) {
x_best[j] = x_elite[j];
}
f_best = f_elite;
}
}
for (int j = 0; j < var; j++) {
searchPoints[i][j] = x_best[j];
}
searchPoints[i][var] = f_best;
}
for (int i = e; i < m; i++) {
double[] x = new double[var];
double[] x_best = new double[var];
for (int j = 0; j < var; j++) {
x[j] = searchPoints[i][j];
x_best[j] = x[j];
}
double f = searchPoints[i][var];
double f_best = f;
for (int indx = 0; indx < nsp; indx++) {
double[] x_elite = new double[var];
for (int j = 0; j < var; j++) {
x_elite[j] = this.random(x[j] + ngh, x[j] - ngh);
}
double f_elite = function(x_elite);
if (f_elite > f_best) {
for (int j = 0; j < var; j++) {
x_best[j] = x_elite[j];
}
f_best = f_elite;
}
}
for (int j = 0; j < var; j++) {
searchPoints[i][j] = x_best[j];
}
searchPoints[i][var] = f_best;
}
for (int i = m; i < n; i++) {
double[] tmpX = new double[var];
for (int j = 0; j < var; j++) {
searchPoints[i][j] = this.random(upperLimit, lowerLimit);
tmpX[j] = searchPoints[i][j];
}
searchPoints[i][var] = function(tmpX);
}
}
sort(searchPoints);
for (int j = 0; j < var; j++) {
optimalPoint[j] = searchPoints[0][j];
}
optimalPoint[var] = -searchPoints[0][var];
}
/CODE
J'ai la méthode suivante, j'ai besoin de faire une modification de telle sorte à avoir un tableau searchPoints non pas de type double mais supportant deux types de valeurs "entières" pour la première colonne pour servir d'index et "réelles" pour la deuxième colonne correspondante à l'index de la première colonne. Et si je définis une méthode de trie qui me permet de trier un tel tableau par ordre décroissant de la deuxième colonne,comment procéder pour maintenir chaque valeur réelle indexée par sa valeur entière??? merci beaucoup d'avance
[CODE]
public void run() {
double searchPoints[][] = new double[n][var + 1];
for (int i = 0; i < n; i++) {
double[] tmpX = new double[var];
for (int j = 0; j < var; j++) {
searchPoints[i][j] = this.random(upperLimit, lowerLimit);
tmpX[j] = searchPoints[i][j];
}
double tmp = function(tmpX);
searchPoints[i][var] = tmp;
}
for (int itr = 1; itr <= iteration; itr++) {
sort(searchPoints);
for (int i = 0; i < e; i++) {
double[] x = new double[var];
double[] x_best = new double[var];
for (int j = 0; j < var; j++) {
x[j] = searchPoints[i][j];
x_best[j] = x[j];
}
double f = searchPoints[i][var];
double f_best = f;
for (int indx = 0; indx < nep; indx++) {
double[] x_elite = new double[var];
for (int j = 0; j < var; j++) {
x_elite[j] = this.random(x[j] + ngh, x[j] - ngh);
}
double f_elite = function(x_elite);
if (f_elite > f_best) {
for (int j = 0; j < var; j++) {
x_best[j] = x_elite[j];
}
f_best = f_elite;
}
}
for (int j = 0; j < var; j++) {
searchPoints[i][j] = x_best[j];
}
searchPoints[i][var] = f_best;
}
for (int i = e; i < m; i++) {
double[] x = new double[var];
double[] x_best = new double[var];
for (int j = 0; j < var; j++) {
x[j] = searchPoints[i][j];
x_best[j] = x[j];
}
double f = searchPoints[i][var];
double f_best = f;
for (int indx = 0; indx < nsp; indx++) {
double[] x_elite = new double[var];
for (int j = 0; j < var; j++) {
x_elite[j] = this.random(x[j] + ngh, x[j] - ngh);
}
double f_elite = function(x_elite);
if (f_elite > f_best) {
for (int j = 0; j < var; j++) {
x_best[j] = x_elite[j];
}
f_best = f_elite;
}
}
for (int j = 0; j < var; j++) {
searchPoints[i][j] = x_best[j];
}
searchPoints[i][var] = f_best;
}
for (int i = m; i < n; i++) {
double[] tmpX = new double[var];
for (int j = 0; j < var; j++) {
searchPoints[i][j] = this.random(upperLimit, lowerLimit);
tmpX[j] = searchPoints[i][j];
}
searchPoints[i][var] = function(tmpX);
}
}
sort(searchPoints);
for (int j = 0; j < var; j++) {
optimalPoint[j] = searchPoints[0][j];
}
optimalPoint[var] = -searchPoints[0][var];
}
/CODE
A voir également:
- Manipulation d'un objet?
- Vente objet occasion entre particulier - Guide
- Trouver objet avec photo - Guide
- Mesurer un objet - Guide
- Objet interdit en cabine ryanair - Guide
- Comment désactiver le mode anti manipulation involontaire - Forum BIOS
4 réponses
Je ne suis pas sûr d'avoir tout compris, un exemple serait le bienvenu !
"comment procéder pour maintenir chaque valeur réelle indexée par sa valeur entière?"
Si c'est bien ce que je comprends tu auras besoin d'un Comparator
"comment procéder pour maintenir chaque valeur réelle indexée par sa valeur entière?"
Si c'est bien ce que je comprends tu auras besoin d'un Comparator
Salut, ce que je veux c'est qu'au lieu de (double searchPoints[][]) pour des valeurs réelles.utiliser searchPoints un tableau avec deux types de valeurs par exemple:
index valeurs
1 0.3
5 0.1
3 0.01
par la suite je veux faire une méthode de tri qui me permet de trier un tel tableau selon l'ordre décroissant des "valeurs".On m'a dit qu'il faut utiliser OBJECT pour manipuler un truc pareil..Mais pour mon programme je ne sais pas comment?? franchement!!Je veux de l'aide sur ça Merci beaucoup d'avance :)
index valeurs
1 0.3
5 0.1
3 0.01
par la suite je veux faire une méthode de tri qui me permet de trier un tel tableau selon l'ordre décroissant des "valeurs".On m'a dit qu'il faut utiliser OBJECT pour manipuler un truc pareil..Mais pour mon programme je ne sais pas comment?? franchement!!Je veux de l'aide sur ça Merci beaucoup d'avance :)
Tu devrais faire une petite classe pour contenir tes deux valeurs, et bien sûr implémenter Comparable pour pouvoir les comparer. D'ailleurs toute méthode de tri devrait être généralisée pour trier des Comparable quelconques.
class Point implements Comparable<Point>
{
public final int index;
public final double valeur;
public Point(int n, double val)
{
index = n;
valeur = val;
}
@Override
public int compareTo(Point p)
{
if (index==p.index)
return Double.compare(valeur, p.valeur);
else
return Integer.compare(index, p.index);
}
}
Bonjour, merci KX pour vos réponses..
Je rajoute que mes index sont des nombres entiers aléatoires générés entre deux limites (upperLimit, lowerLimit)..En fonction du nombre généré je fais appel à une fonction qui me donne comme résultat la valeur réelle...Cette étape me permet de donner le résultat du tableau précédent dans l'exemple.que je dois trier....
Je rajoute que mes index sont des nombres entiers aléatoires générés entre deux limites (upperLimit, lowerLimit)..En fonction du nombre généré je fais appel à une fonction qui me donne comme résultat la valeur réelle...Cette étape me permet de donner le résultat du tableau précédent dans l'exemple.que je dois trier....