[programmation en C]
Fermé
qosmio
Messages postés
13
Date d'inscription
vendredi 27 avril 2007
Statut
Membre
Dernière intervention
10 janvier 2011
-
27 avril 2007 à 17:52
qosmio Messages postés 13 Date d'inscription vendredi 27 avril 2007 Statut Membre Dernière intervention 10 janvier 2011 - 5 juin 2007 à 23:12
qosmio Messages postés 13 Date d'inscription vendredi 27 avril 2007 Statut Membre Dernière intervention 10 janvier 2011 - 5 juin 2007 à 23:12
A voir également:
- [programmation en C]
- Application de programmation - Guide
- Mettre en veille un programme - Guide
- Programmation logo tortue télécharger - Télécharger - Études & Formations
- Programmation télécommande porte de garage brico depot - Forum Matériel & Système
3 réponses
ekra
Messages postés
1870
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
24 juillet 2014
342
27 avril 2007 à 18:29
27 avril 2007 à 18:29
Bonjour,
qu'elles n'émettent pas vers le haut (une demi-sphère)
Il n'y a pas comme un problème ? Elles emmettent vers le bas alors ?
Commence par nous exposer tes réflexions mathématiques qui est le premier problème.
Je débute en programmation en C. Voilà l'énoncé:
Sauf erreur de ma part ce n'est pas un problème de débutant pour apprendre le C...
J'ai une image satellite de dimension quelconque. Cette image est une carte des altitudes du terrain [...] Je vous demande de bien vouloir m'aider, par un code qui ressemble à la question
Il manque un peu des informations.
En tout cas ne t'attends pas à ce que d'autres personnes fassent le travail à ta place. Tu nous as rien montré de ce que tu avais fait ou entrepris de faire.
qu'elles n'émettent pas vers le haut (une demi-sphère)
Il n'y a pas comme un problème ? Elles emmettent vers le bas alors ?
Commence par nous exposer tes réflexions mathématiques qui est le premier problème.
Je débute en programmation en C. Voilà l'énoncé:
Sauf erreur de ma part ce n'est pas un problème de débutant pour apprendre le C...
J'ai une image satellite de dimension quelconque. Cette image est une carte des altitudes du terrain [...] Je vous demande de bien vouloir m'aider, par un code qui ressemble à la question
Il manque un peu des informations.
En tout cas ne t'attends pas à ce que d'autres personnes fassent le travail à ta place. Tu nous as rien montré de ce que tu avais fait ou entrepris de faire.
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
27 avril 2007 à 18:40
27 avril 2007 à 18:40
Avant de programmer il faudrait réflechir à comment tu vas modéliser tout ça.
- quelles sont les variables ? position et orientation des antennes ? est-ce tu as une liste de sites candidats ? est-ce que les antennes sont homogène (même rayon) ?
- comment caractérises-tu une zone couverte ?
- est-ce que la notion de 3D est importante (est ce que le relief peut bloquer les ondes ?)
- qu'est-ce que tu optimises ? le nombre d'antenne (ie le cout) à placer ou la zone de couverture ?
- y a t'il des notions de robustesse, par exemple "les bordures de zone sont couvertes par deux antennes" (handover).
Je t'invite à faire des recherches sur google pour voir un peu ce qui se fait dans la littérature...
Quand tu auras réflechi à ton modèle, réflechis à comment tu vas le résoudre
- méthode exacte (avec CPLEX ou COIN par exemple)
- métaheuristiques
Je te préviens tout de suite que c'est loin d'être facile à programmer en C.
- quelles sont les variables ? position et orientation des antennes ? est-ce tu as une liste de sites candidats ? est-ce que les antennes sont homogène (même rayon) ?
- comment caractérises-tu une zone couverte ?
- est-ce que la notion de 3D est importante (est ce que le relief peut bloquer les ondes ?)
- qu'est-ce que tu optimises ? le nombre d'antenne (ie le cout) à placer ou la zone de couverture ?
- y a t'il des notions de robustesse, par exemple "les bordures de zone sont couvertes par deux antennes" (handover).
Je t'invite à faire des recherches sur google pour voir un peu ce qui se fait dans la littérature...
Quand tu auras réflechi à ton modèle, réflechis à comment tu vas le résoudre
- méthode exacte (avec CPLEX ou COIN par exemple)
- métaheuristiques
Je te préviens tout de suite que c'est loin d'être facile à programmer en C.
qosmio
Messages postés
13
Date d'inscription
vendredi 27 avril 2007
Statut
Membre
Dernière intervention
10 janvier 2011
5 juin 2007 à 23:12
5 juin 2007 à 23:12
Bonsoir,
J'ai effectué ce programme mais il m'affiche seulement les altitudes, et non pas la position des antennes sur les altitudes maximales. Comment faire pour afficher les antennes sur les pics?
#include <stdio.h>
#include <stdlib.h>
#define X 513 /* longueur de la carte satellite */
#define Y 513 /* largeur de la carte satellite */
#define N 20 /* nombre d'antennes */
#define R 15 /* rayon d'action d'une antenne */
#define H 40 /* hauteur maximale */
#define MAX_ITERATION 10000 /* nombre maximum d'essai */
int map[X][Y];
int antenne[N][2];
void creer_map() {
int i,j;
for (i = 0; i<X; i++)
for (j = 0; j<Y; j++)
map[i][j] = rand()%H;
}
void optimiser_positions_antennes() {
int a;
int b;
int i;
int p = 60; /* pourcentage de couverture */
int pos_X;
int pos_Y;
int sauv_pos_X;
int DX,DY;
int n;
int m;
int l;
int Nbr_pt_prs_antenne;
int dist_pt_antenne;
int p2 = 90; /* nouveau pourcentage de couverture */
for (a=0; a<=N; a++)
for (b=0; b<=N; b++)
antenne[a][b] = rand()%X;
antenne[a][b] = rand()%Y;
for (i = 0; i < MAX_ITERATION; i++) {
pos_X=rand()%X;
pos_Y=rand()%Y;
sauv_pos_X= pos_X;
DX=(rand()%6)-3;
DY=(rand()%6)-3;
Nbr_pt_prs_antenne= 0;
}
for (n = 0; n<X; n++)
for (m = 0; m<Y; m++)
for (l =0; l<antenne[N][0]; l++){
if (dist_pt_antenne<R){
Nbr_pt_prs_antenne++;
}
}
if (p2 >=p){
p=p2;
}
else pos_X= pos_X=rand()%X;{
pos_Y=rand()%Y;
}
}
void afficher_positions_antennes(){
int i;
int j;
for (i = 0; i<X; i++){
for (j =0; j<X; j++){
printf(" %d", map[i][j]);
}
printf("\n");
}
if (H>=30 && H<=40){
printf("atn %d",antenne[i][j]);
}
else printf("%d", map[i][j]);
}
int main() {
creer_map();
optimiser_positions_antennes();
afficher_positions_antennes();
return 1;
}
J'ai effectué ce programme mais il m'affiche seulement les altitudes, et non pas la position des antennes sur les altitudes maximales. Comment faire pour afficher les antennes sur les pics?
#include <stdio.h>
#include <stdlib.h>
#define X 513 /* longueur de la carte satellite */
#define Y 513 /* largeur de la carte satellite */
#define N 20 /* nombre d'antennes */
#define R 15 /* rayon d'action d'une antenne */
#define H 40 /* hauteur maximale */
#define MAX_ITERATION 10000 /* nombre maximum d'essai */
int map[X][Y];
int antenne[N][2];
void creer_map() {
int i,j;
for (i = 0; i<X; i++)
for (j = 0; j<Y; j++)
map[i][j] = rand()%H;
}
void optimiser_positions_antennes() {
int a;
int b;
int i;
int p = 60; /* pourcentage de couverture */
int pos_X;
int pos_Y;
int sauv_pos_X;
int DX,DY;
int n;
int m;
int l;
int Nbr_pt_prs_antenne;
int dist_pt_antenne;
int p2 = 90; /* nouveau pourcentage de couverture */
for (a=0; a<=N; a++)
for (b=0; b<=N; b++)
antenne[a][b] = rand()%X;
antenne[a][b] = rand()%Y;
for (i = 0; i < MAX_ITERATION; i++) {
pos_X=rand()%X;
pos_Y=rand()%Y;
sauv_pos_X= pos_X;
DX=(rand()%6)-3;
DY=(rand()%6)-3;
Nbr_pt_prs_antenne= 0;
}
for (n = 0; n<X; n++)
for (m = 0; m<Y; m++)
for (l =0; l<antenne[N][0]; l++){
if (dist_pt_antenne<R){
Nbr_pt_prs_antenne++;
}
}
if (p2 >=p){
p=p2;
}
else pos_X= pos_X=rand()%X;{
pos_Y=rand()%Y;
}
}
void afficher_positions_antennes(){
int i;
int j;
for (i = 0; i<X; i++){
for (j =0; j<X; j++){
printf(" %d", map[i][j]);
}
printf("\n");
}
if (H>=30 && H<=40){
printf("atn %d",antenne[i][j]);
}
else printf("%d", map[i][j]);
}
int main() {
creer_map();
optimiser_positions_antennes();
afficher_positions_antennes();
return 1;
}
4 juin 2007 à 14:26
p = pourcentage de couverture
choisir une antenne au hasard
sauvegarder sa position
modifier sa position au hasard
pour tous les points de la map regarder si il est assez pres d'une antenne
(distance euclidienne entre le point et une antenne < R)
p2 = nouveau pourcentage de couverture
si (p2 <= p) annuler le changement
}
}
int main() {
creer_map();
optimiser_positions_antennes();
afficher_position_antennes();
}
Le début de mon algorithme
#define X 100 /* longueur de la carte satellite */
#define Y 100 /* largeur de la carte satellite */
#define N 20 /* nombre d'antennes */
#define R 15 /*rayon d'action d'une antenne */
#define H 35 /* hauteur maximale */
#define MAX_ITERATION 10000 /* nombre maximum d'essai */
int map[X][Y];
int antenne[N][2];
void creer_map() {
int i, int j;
for (i = 0, i<X; i++)
for (j = 0, j<Y; j++)
map[X][Y] = rand()%H;
}
void optimiser_antennes() {
pour toutes les N antennes :
antenne[N][0] = rand()%X, antenne[N][1] = rand()%X
int i;
for (i = 0; i < MAX_ITERATION; i++) {
p = pourcentage de couverture
choisir une antenne au hasard
sauvegarder sa position
modifier sa position au hasard
pour tous les points de la map regarder si il est assez pres d'une antenne
(distance euclidienne entre le point et une antenne < R)
p2 = nouveau pourcentage de couverture
si (p2 <= p) annuler le changement
}
}
int main() {
creer_map();
optimiser_positions_antennes();
afficher_position_antennes();
}
4 juin 2007 à 14:27
choisir une antenne au hasard
sauvegarder sa position
modifier sa position au hasard
pour tous les points de la map regarder si il est assez pres d'une antenne
(distance euclidienne entre le point et une antenne < R)
p2 = nouveau pourcentage de couverture
si (p2 <= p) annuler le changement.
Pouvez-vous m'aider? car je dois le rendre le 10 juin.
#define X 100 /* longueur de la carte satellite */
#define Y 100 /* largeur de la carte satellite */
#define N 20 /* nombre d'antennes */
#define R 15 /*rayon d'action d'une antenne */
#define H 35 /* hauteur maximale */
#define MAX_ITERATION 10000 /* nombre maximum d'essai */
int map[X][Y];
int antenne[N][2];
void creer_map() {
int i, int j;
for (i = 0, i<X; i++)
for (j = 0, j<Y; j++)
map[X][Y] = rand()%H;
}
void optimiser_antennes() {
pour toutes les N antennes :
antenne[N][0] = rand()%X, antenne[N][1] = rand()%X
int i;
for (i = 0; i < MAX_ITERATION; i++) {
p = pourcentage de couverture
choisir une antenne au hasard
sauvegarder sa position
modifier sa position au hasard
pour tous les points de la map regarder si il est assez pres d'une antenne
(distance euclidienne entre le point et une antenne < R)
p2 = nouveau pourcentage de couverture
si (p2 <= p) annuler le changement
}
}
int main() {
creer_map();
optimiser_positions_antennes();
afficher_position_antennes();
}