Добрый день! подскажите, нужно написать макрос поиска оптимального решения. нужно подобрать значения в желтых столбцах таким образом, чтобы значения в зеленом столбце были максимальны. При этом соблюдались условия: значения в 15 столбце должны быть больше либо равны 1, но меньше либо равны 12, должны быть целыми числами значения в 16 столбце должны быть больше либо равны 2, но меньше либо равны 13, должны быть целыми числами значения в 23 столбце должны быть больше либо равны 0, но меньше либо равны 0,33
нужно чтобы макрос прошелся по всем строчкам с 4 по 37. я написал такой макрос, но в нем ошибки: [vba]
Код
For i = 4 To 37 SolverOk SetCell:=Cells(i, 25), MaxMinVal:=1, ValueOf:=0, ByChange:=Range(cell(i, 15), cell(i, 16)), _ Engine:=1, EngineDesc:="GRG Nonlinear" SolverAdd CellRef:=Cells(i, 15), Relation:=3, FormulaText:="1" SolverAdd CellRef:=Cells(i, 16), Relation:=3, FormulaText:="2" SolverAdd CellRef:=Cells(i, 15), Relation:=1, FormulaText:="12" SolverAdd CellRef:=Cells(i, 16), Relation:=1, FormulaText:="13" SolverAdd CellRef:=Cells(i, 23), Relation:=1, FormulaText:="0,33" SolverSolve End Sub
[/vba]
Может быть это можно сделать не через Solver. Очень надеюсь на помощь. заранее огромное спасибо!
Добрый день! подскажите, нужно написать макрос поиска оптимального решения. нужно подобрать значения в желтых столбцах таким образом, чтобы значения в зеленом столбце были максимальны. При этом соблюдались условия: значения в 15 столбце должны быть больше либо равны 1, но меньше либо равны 12, должны быть целыми числами значения в 16 столбце должны быть больше либо равны 2, но меньше либо равны 13, должны быть целыми числами значения в 23 столбце должны быть больше либо равны 0, но меньше либо равны 0,33
нужно чтобы макрос прошелся по всем строчкам с 4 по 37. я написал такой макрос, но в нем ошибки: [vba]
Код
For i = 4 To 37 SolverOk SetCell:=Cells(i, 25), MaxMinVal:=1, ValueOf:=0, ByChange:=Range(cell(i, 15), cell(i, 16)), _ Engine:=1, EngineDesc:="GRG Nonlinear" SolverAdd CellRef:=Cells(i, 15), Relation:=3, FormulaText:="1" SolverAdd CellRef:=Cells(i, 16), Relation:=3, FormulaText:="2" SolverAdd CellRef:=Cells(i, 15), Relation:=1, FormulaText:="12" SolverAdd CellRef:=Cells(i, 16), Relation:=1, FormulaText:="13" SolverAdd CellRef:=Cells(i, 23), Relation:=1, FormulaText:="0,33" SolverSolve End Sub
[/vba]
Может быть это можно сделать не через Solver. Очень надеюсь на помощь. заранее огромное спасибо!fanat1k90
Слишком сложные зависимости между изменяемыми ячейками и столбцом 23, поэтому приходится запускать эволюционный метод, а это всегда долго. У меня крутил минут 15. Возможно простым перебором значений в макросе будет даже быстрее, если только понять зависимость целевой ячейки от изменяемых данных. Пока так получилось через Поиск решения
Слишком сложные зависимости между изменяемыми ячейками и столбцом 23, поэтому приходится запускать эволюционный метод, а это всегда долго. У меня крутил минут 15. Возможно простым перебором значений в макросе будет даже быстрее, если только понять зависимость целевой ячейки от изменяемых данных. Пока так получилось через Поиск решенияPelena
Слишком сложные зависимости между изменяемыми ячейками и столбцом 23, поэтому приходится запускать эволюционный метод, а это всегда долго. У меня крутил минут 15. Возможно простым перебором значений в макросе будет даже быстрее, если только понять зависимость целевой ячейки от изменяемых данных. Пока так получилось через Поиск решения
Суть задачи - определить по каждой строке промежуток значений таким образом, чтобы их коэффициант вариации не превышал 33% и в этот промежуток попало максимальное количество значений. У меня может быть около 400 строк и 40 столбцов для вычислений, вручную это займет кучу времени
Слишком сложные зависимости между изменяемыми ячейками и столбцом 23, поэтому приходится запускать эволюционный метод, а это всегда долго. У меня крутил минут 15. Возможно простым перебором значений в макросе будет даже быстрее, если только понять зависимость целевой ячейки от изменяемых данных. Пока так получилось через Поиск решения
Суть задачи - определить по каждой строке промежуток значений таким образом, чтобы их коэффициант вариации не превышал 33% и в этот промежуток попало максимальное количество значений. У меня может быть около 400 строк и 40 столбцов для вычислений, вручную это займет кучу времени fanat1k90
Сообщение отредактировал fanat1k90 - Пятница, 27.03.2020, 12:24