Страницы: 1
RSS
Поиск решения на 34к строк
 
Форумчане, очень нужна ваша помощь! Заранее большое спасибо всем!

Есть вот такой макрос на поиск решения. Мне надо сделать так для строк с 3 до 34042. То есть каждый раз Z и V ячейки должны идти дальше на 1 число.
Есть ли какой-нибудь способ сделать это быстро, а не делать 34 тысячи раз контрол-с / контрол-в? Может быть код подстановки и итеративного запуска поиска решения 34 тыс. раз или что-то еще?

Код
SolverOk SetCell:="$Z$3", MaxMinVal:=2, ValueOf:=0, ByChange:="$V$3", Engine:=3 _
        , EngineDesc:="Evolutionary"
    SolverAdd CellRef:="$V$3", Relation:=4, FormulaText:="целое"
    SolverAdd CellRef:="$V$3", Relation:=1, FormulaText:="185"
    SolverAdd CellRef:="$V$3", Relation:=3, FormulaText:="1"
    SolverSolve UserFinish:=True
 
DonPеdro3x, цикл сделайте
Цитата
DonPеdro3x написал:
надо сделать так для строк с 3 до 34042
Не бойтесь совершенства. Вам его не достичь.
 
Прошу прощения, не подскажете как в этом случае?
 
обсуждение темы без файла-примера бесполезная трата времени  с нулевым результатом в итоге
навались все, кто не знает чем себя занять ближайшие пару часов
понеслась:
Код
for r = 3 to 34002

...

next

ставлю на то, что без файла-примера решение может быть получено не раньше 20-го поста в теме

Изменено: Ігор Гончаренко - 29.03.2020 20:46:15
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко,
Цитата
Ігор Гончаренко написал:
навались все, кто не знает чем себя занять ближайшие пару часов
:D  
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Ігор Гончаренко написал: ставлю на то, что без файла-примера решение может быть получено не раньше 20-го поста в теме
Убедили) Виноват, что сразу не приложил. Вот файл без лишних расчетов, только по сути вопроса.

Только файл 2 мб весит, закачал на яндекс.диск - https://yadi.sk/d/Bz6sLTX0-AAH7Q (а тут более 100 кб не хочет)
Снизить размер не могу, так как там важно все 34 тыс. строк.

Заранее еще раз спасибо)
Изменено: DonPеdro3x - 29.03.2020 23:52:13
 
DonPеdro3x, в файле не нашел макроса
Код
Sub sdsdad()
Dim i As Double
Dim v As Range, z As Range
For i = 3 To 34002
Set v = Range("V" & i) ' ваша переменная ячейка в столбце V
Set z = Range("Z" & i)' ваша переменная ячейка в столбце Z

' Ваш макрос
Next i
End Sub
Изменено: Mershik - 29.03.2020 21:29:08
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
в файле не нашел макроса
Странно, он там есть, проверил. По Вашему коду сделал так, но эксель пишет бесконечно долго "постановка задачи" и все. Пока для 3-5 попробовал, но не пошло (а если v и z без ковычек делать - то он просто в ячейки пишет типа "$V$3):
Код
Sub sdsdad()
Dim i As Double
Dim v As Range, z As Range
For i = 3 To 5
Set v = Range("V" & i) 
Set z = Range("Z" & i) 
' Macros 1
    SolverOk SetCell:="z", MaxMinVal:=2, ValueOf:=0, ByChange:="v", Engine:=3 _
        , EngineDesc:="Evolutionary"
    SolverAdd CellRef:="v", Relation:=4, FormulaText:="целое"
    SolverAdd CellRef:="v", Relation:=1, FormulaText:="185"
    SolverAdd CellRef:="v", Relation:=3, FormulaText:="1"
    SolverSolve UserFinish:=True
Next i
End Sub

Изменено: DonPеdro3x - 29.03.2020 21:50:53
 
DonPеdro3x, этот макрос у вас запускается? я не могу проверить так как у меня нет SolverOk.
скорее всего V и Z не нужно брать в в кавычки
Изменено: Mershik - 29.03.2020 21:51:01
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
этот макрос у вас запускается?
Да, но дальше "постановки задачи" не идет
 
Цитата
Mershik написал: этот макрос у вас запускается?
Да, но дальше "постановки задачи" не идет

Цитата
Mershik написал: я не могу проверить так как у меня нет SolverOk.
https://docs.microsoft.com/ru-ru/office/vba/excel/concepts/functions/using-the-solver-vba-functions
Вот тут есть описание как включить его в VBA. Без кавычек пробовал тоже - он просто в ячейки пишет типа "$V$3", "$V$4" и т.д.
 
DonPеdro3x, попробуйте Range(V) и Range(Z)
Не бойтесь совершенства. Вам его не достичь.
 
Выдает ошибку сразу. Я вот чувствую прям, что очень близко!))  
 
DonPеdro3x, ну экспериментируйте или ждите может кто поможет - я просто не могу проверить
Не бойтесь совершенства. Вам его не достичь.
 
уже разные комбинации делаю) Большое спасибо!!!!
 
DonPеdro3x, та получается не за что...удачи
Не бойтесь совершенства. Вам его не достичь.
 
я вижу что V  нет НИКАКИХ формул ячейка без формулы НЕ МОЖЕТ БЫТЬ целевой ячейкой для поиска решений.
Поиск решения только в 1-й строке занимает 30-40 сек времени умножьте на 34040 (приблизительно после 15 дней расчетов этот макрос закончит свою работу)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
перестаньте мучить кнопку цитирования. Не для копирования она предназначена. И писать все через строку тоже не стоит [МОДЕРАТОР]

так целевая ячейка у меня не в V, а в Z. Я меняю значения в V3,4,5,6... чтобы оптимизировать значения в Z3,4,5,6...
Поиск решения в строке у меня около 5 секунд занимает. Ну 2 суток на сервере поработает и ок.
А в файле примере все сдвинулось влево по столбцам, так как я удалил лишние столбцы из расчетов. там код такой c "I" и "E" вместо "V" и "Z"

Может. подскажете все же более точный макрос. пожалуйста...?
Изменено: DonPеdro3x - 29.03.2020 23:56:18
 
см. вложение несколько первых городов...
но там масса маршрутов, которые не возможно преодолеть с одним подскоком
можете руками проверить как на таких маршрутах поведет себя ПоискРешений
а также на маршрутах, где есть прямое сообщение, между начальным и конечным пунктами
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
DonPеdro3x, опишите задачу, что нужно реализовать?
На вскидку очень похоже на нахождение кратчайшего пути в графе, решающийся алгоритмом Дейкстры
http://www.excelworld.ru/forum/3-6656-1
Страницы: 1
Наверх