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
- 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
- Cette action ne peut pas être réalisée car le fichier est ouvert dans system - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
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