Appliquer l'action de Qmax
Bonjour,
J'ai deux actions windowincrease et windowdecrease décrites par :
void ConsumerPcon::WindowIncrease() { if (m_ccAlgorithm == CcAlgorithm::AIMD) { if (m_window < m_ssthresh) { m_window += 1.0; } else { m_window += (1.0 / m_window); } } else if (m_ccAlgorithm == CcAlgorithm::CUBIC) { CubicIncrease(); } else if (m_ccAlgorithm == CcAlgorithm::BIC) { BicIncrease(); } else { BOOST_ASSERT_MSG(false, "Unknown CC Algorithm"); } NS_LOG_DEBUG("Window size increased to " << m_window); } void ConsumerPcon::WindowDecrease() { if (!m_useCwa || m_highData > m_recPoint) { const double diff = m_seq - m_highData; BOOST_ASSERT(diff > 0); m_recPoint = m_seq + (m_addRttSuppress * diff); if (m_ccAlgorithm == CcAlgorithm::AIMD) { // Normal TCP Decrease: m_ssthresh = m_window * m_beta; m_window = m_ssthresh; } else if (m_ccAlgorithm == CcAlgorithm::CUBIC) { CubicDecrease(); } else if (m_ccAlgorithm == CcAlgorithm::BIC) { BicDecrease(); } else { BOOST_ASSERT_MSG(false, "Unknown CC Algorithm"); } // Window size cannot be reduced below initial size if (m_window < m_initialWindow) { m_window = m_initialWindow; } NS_LOG_DEBUG("Window size decreased to " << m_window); } else { NS_LOG_DEBUG("Window decrease suppressed, HighData: " << m_highData << ", RecPoint: " << m_recPoint); } }
Je veux créer une méthode action qui selon un état i, exécute soit l'action windowincrease, soit windowdecrease, puis après calcule les valeurs Q[i][j] d'un tableau définir par Q[i][j] = k*R[i], et enfin retourne la valeur maximale de Q.
Le problème que j'ai, c'est que je dois savoir l'état i équivalent à la valeur max de Q et savoir son action équivalente pour que je puisse l'appliquer à chaque état
Merci
- Appliquer l'action de Qmax
- Action - Guide
- Télécharger film d'action gratuitement et rapidement - Télécharger - TV & Vidéo
- Concurrent action - Guide
- Vous devez disposer d'une autorisation pour effectuer cette action - Guide
- Action fans - Accueil - Guide arnaque
3 réponses
Bonjour,
De ce que je comprends la méthode pourrait ressembler à :
void ConsumerPcon::action(int i) { if (i < 0) { windowIncrease(); } else { windowDecrease(); } ... }
... mais on ne sait pas comment la décision doit être prise par rapport à i puisque tu ne l'as pas précisé.
les valeurs Q[i][j] d'un tableau définir par Q[i][j] = k*R[i], et enfin retourne la valeur maximale de Q.
Ta formule dépend de j à gauche de l'égalité, mais pas à droite. Alors comment est défini j ? Et d'où vient le paramètre k ? Est-ce un paramètre de la méthode action ou un membre de ta classe ConsumerPcon ? Même question concernant R ?
les valeurs Q[i][j] d'un tableau définir par Q[i][j] = k*R[i], et enfin retourne la valeur maximale de Q.
Quel est le type de Q et où est-il défini ? Est-ce une variable locale à action ?
De manière générale pour chercher un max dans une liste (non vide) tu peux utiliser std::max_element :
#include <algorithm> #include <iostream> #include <list> int main() { std::list<int> l = {1, 2, 0, 3, 2}; std::list<int>::iterator it_max = std::max_element(l.begin(), l.end()); if (it_max != l.end()) { int max = *it_max; std::cout << "max = " << max << std::endl; // Affiche max = 3 } else { std::cerr << "max not found" << std::endl; } return 0; }
Cette discussion montre comment généraliser le code précédent pour une matrice.
Le problème que j'ai, c'est que je dois savoir l'état i équivalent à la valeur max de Q et savoir son action équivalente pour que je puisse l'appliquer à chaque état
Je n'ai pas compris. Peut-être que si tu donnes un exemple ce sera plus clair.
Bonne chance
Bonjour ,
la décision selon i est :
if ( i<10){
WindowDecrease ()
}
else {
WindowIncrease ()
}
j et k sont deux entiers , i et j sont utilisé dans le parcours de tableau Q
int j = 2;
int k = 50 ;
int i = 30 ;
R et k sont deux paramètres de la méthode action , Q est un paramètre globale
int R[30] ;
par exemple : après avoir calculé le max de Q , je veux une instruction qui retourne l'indice i de Qmax nommé indice_max, pour que je puisse exécuter son action càd action(indice_max)
Merci pour votre réponse
Bonjour,
J'espère que tu es conscience que tes messages sont difficile à suivre pour quelqu'un qui n'est pas dans ton projet.
- Quelle sont les dimensions du tableau Q ?
- En admettant que ce soit une matrice (tableau 2D), comment est défini le contenu de chaque case Q(i, j) ? À quoi sert j dans ce tableau (qu'est ce qui différencie deux colonnes de Q) ?
- Quand tu cherches l'indice i de Q, je suppose que tu veux dire la case (i, j) qui correspond au max(Q(i, j)) ? Du coup c'est un couple et pas un index ?
- Quel rapport entre Q et le test pour WindowsIncrease et WindowDecrease ?
Peut-être que si tu donnes un exemple minimal, j'arriverai à comprendre ce que tu veux faire.
Bonne chance