Bonjour, dans le cadre de mon TFE, je dois optimiser les commandes d'éclairage. N'étant pas informaticien de formation j'ai un peu du mal avec l'algorithme du simplexe. En gros je vous explique mon problème :
J'ai quatre luminaires associés avec 4 capteurs. Le but du jeu est que chaque capteur contrôle le luminaire pour que la valeur détectée par le capteur atteigne un consigne.
Exemple , j'ai
Ax = consigne
avec A la matrice d'influence de chaque luminaire sur chaque capteur et x le dimming du luminaire.
Mon but est que la somme des x soit le plus petit possible
j'ai commencer à coder en VBA par la méthode "brute". En effet, j'ai fais une ittération de chaque luminaire et je retiens la meilleure des valeurs possible. le problème, c'est que ca prends trop de temps. Je pense qu'il devrait y avoir moyen avec l'algo du simplexe mais je n'y comprends pas grand chose... Est-ce que qq'un l'a déja codé en VBA ???
en gros, voici mon code pour l'instant :
si quelqu'un avait une idée pour m'aider
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 i = pas 'pas d'iteration While i <= e(1) j= pas While j <= e(2) k = pas While k <= e(3) l = pas While l <= e(4) Dim R(4) As Double 'tableau de résultats 'lumière au capteur 1 R(1) = Eart(1, 1) * i + Eart(1, 2) * j + Eart(1, 3) * k + Eart(1, 4) * l 'lumière au capteur 2 R(2) = Eart(2, 1) * i + Eart(2, 2) * j + Eart(2, 3) * k + Eart(2, 4) * l 'lumière au capteur 3 R(3) = Eart(3, 1) * i + Eart(3, 2) * j + Eart(3, 3) * k + Eart(3, 4) * l 'lumière au capteur 4 R(4) = Eart(4, 1) * i + Eart(4, 2) * j + Eart(4, 3) * k + Eart(4, 4) * l Dim rd As Double rd = 0 For cmp = 1 To 4 rd = rd + Abs(consigne - R(cmp)) Next cmp If rd < min Then min = rd result(ind, 1) = i * 100 result(ind, 2) = j * 100 result(ind, 3) = k * 100 result(ind, 4) = l * 100 result(ind, 5) = min End If l = l + pas Wend k = k + pas Wend j = j + pas Wend i = i + pas Wend
Partager