Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA, алгоритм поиска нужной комбинации / 6 сообщений из 6, страница 1 из 1
26.07.2009, 13:34:52
    #36109517
Gus Hidding
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, алгоритм поиска нужной комбинации
Доброго дня.
есть макрос который подставляет в массив размером 6х9 (с шагом 50) комбинации чисел, которые в сумме дают 500 000.В конце выбирается наилучшая комбинация. Это все происходит перебором, следующим образом:

проход 1.

500 000 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0

проход 2.


шаг1.

450 000 50 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0

и т.д.

Для шага 50 считается довольно быстро. но нужно для шага 1 считать.
Каким другим образом можно искать нужную комбинацию, кроме перебора?
Спасибо.
...
Рейтинг: 0 / 0
26.07.2009, 15:16:42
    #36109586
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, алгоритм поиска нужной комбинации
Gus Hidding,
что значит наилучшая комбинация?
...
Рейтинг: 0 / 0
26.07.2009, 15:19:16
    #36109590
Gus Hidding
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, алгоритм поиска нужной комбинации
Там каждый город умножается на различные коэфф-ты(сверху) и считается себестимость..наменьшая себестоимость - наилучшая комбинация
...
Рейтинг: 0 / 0
26.07.2009, 15:27:05
    #36109593
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, алгоритм поиска нужной комбинации
Что такое "НП" я так и не понял...
автор Gus HiddingКаким другим образом можно искать нужную комбинацию, кроме перебора?Попробуйте надстройку "поиск решения", хотя, при текущем представлении данных она не применима. И вот тут , может, что интересное будет.
...
Рейтинг: 0 / 0
27.07.2009, 12:58:13
    #36110699
Случайно
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, алгоритм поиска нужной комбинации
Первое что не понравилось так это
Код: plaintext
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.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
If k =  1  Then a =  1 : b =  1 
If k =  2  Then a =  1 : b =  2 
If k =  3  Then a =  1 : b =  3 
If k =  4  Then a =  1 : b =  4 
If k =  5  Then a =  1 : b =  5 
If k =  6  Then a =  1 : b =  6 
If k =  7  Then a =  1 : b =  7 
If k =  8  Then a =  1 : b =  8 
If k =  9  Then a =  1 : b =  9 

If k =  10  Then a =  2 : b =  1 
If k =  11  Then a =  2 : b =  2 
If k =  12  Then a =  2 : b =  3 
If k =  13  Then a =  2 : b =  4 
If k =  14  Then a =  2 : b =  5 
If k =  15  Then a =  2 : b =  6 
If k =  16  Then a =  2 : b =  7 
If k =  17  Then a =  2 : b =  8 
If k =  18  Then a =  2 : b =  9 

If k =  19  Then a =  3 : b =  1 
If k =  20  Then a =  3 : b =  2 
If k =  21  Then a =  3 : b =  3 
If k =  22  Then a =  3 : b =  4 
If k =  23  Then a =  3 : b =  5 
If k =  24  Then a =  3 : b =  6 
If k =  25  Then a =  3 : b =  7 
If k =  26  Then a =  3 : b =  8 
If k =  27  Then a =  3 : b =  9 

If k =  28  Then a =  4 : b =  1 
If k =  29  Then a =  4 : b =  2 
If k =  30  Then a =  4 : b =  3 
If k =  31  Then a =  4 : b =  4 
If k =  32  Then a =  4 : b =  5 
If k =  33  Then a =  4 : b =  6 
If k =  34  Then a =  4 : b =  7 
If k =  35  Then a =  4 : b =  8 
If k =  36  Then a =  4 : b =  9 

If k =  37  Then a =  5 : b =  1 
If k =  38  Then a =  5 : b =  2 
If k =  39  Then a =  5 : b =  3 
If k =  40  Then a =  5 : b =  4 
If k =  41  Then a =  5 : b =  5 
If k =  42  Then a =  5 : b =  6 
If k =  43  Then a =  5 : b =  7 
If k =  44  Then a =  5 : b =  8 
If k =  45  Then a =  5 : b =  9 

If k =  46  Then a =  6 : b =  1 
If k =  47  Then a =  6 : b =  2 
If k =  48  Then a =  6 : b =  3 
If k =  49  Then a =  6 : b =  4 
If k =  50  Then a =  6 : b =  5 
If k =  51  Then a =  6 : b =  6 
If k =  52  Then a =  6 : b =  7 
If k =  53  Then a =  6 : b =  8 
If k =  54  Then a =  6 : b =  9 
Вставьте лучше
Код: plaintext
1.
a = Int((k -  0 . 1 ) /  9 ) +  1 
b =  9  + k *( 1 - a)

Остальное пока еще не рассмотрел
...
Рейтинг: 0 / 0
27.07.2009, 13:01:10
    #36110713
Случайно
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, алгоритм поиска нужной комбинации
Ошибся!
Код: plaintext
1.
2.
a = Int((k -  0 . 1 ) /  9 ) +  1 
b =  k + 9 ( 1 -a)
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA, алгоритм поиска нужной комбинации / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]