Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Поиск решения 2010 генетический алгоритм, вывести промежуточные значения оптимизируемых параметров
 
Здравствуйте, подскажите пожалуйста как в Поиске решения вывести все найденные наборы оптимальных параметров.
Например, задача максимизации
По строке состояния видно что значение целевой функции несколько раз становится равным например 100 и потом поиск останавливается: ц.ф. 100, окончательные параметры - в изменяемых ячейках.
Может что-то вроде лога есть где можно было бы посмотреть на каких параметрах получалась ц.ф. 100 по ходу оптимизации?
Решать задачу через пошаговое исполнение - оптимизма не вызывает:)
Как вариант - организовать пошаговый поиск решения через VBA с записью лога - тяжко, поскольку много нового познать придется, но все-же лучше пошагового клацанья мышкой.  
Может есть какие хитрости чтоб без программирования обойтись?
Изменено: Николай - 17.12.2015 18:21:48 (новые мысли по поводу)
Поиск решения в малых числах, как настроить для работы с 12м знаком после запятой
 
Здравствуйте,
ищу дробь m/2^n входящую в диапазон [0.5430590272; 0.543059104) m, n - целые положительные, n  минимальное
поиск решения excel 2010 пишет что ответ готов при любых начальных условиях
подскажите, можно ли  где чего в солвере подкрутить чтоб заработало.
Изменено: Николай - 13.10.2015 02:51:08
макрос с поиском решения на нескольких листах, как в Excel2010 сделать макрос, запускающий последовательно поиск решения на нескольких листах
 
Просто другой логин для входа на форум я забуду - этот у меня на все случаи жизни. А галку "отображать имя" в профиле форума я сейчас поставил. Может заработает.
Вопрос совместными усилиями решен. Для полного удовлетворения необходимо
1. В Excel: Файл - параметры - надстройки - перейти - пакет анализа VBA    ставим галку
2. В ВБА редакторе Tools - References - Solver - ставим галку и поднимаем в приоритете как можно выше
3. код   (True  - подавляет вывод окна с океем по окончании расчета)
Код
Sheets("Лист1").Select 
SolverSolve (True)    
Sheets("Лист2").Select    
SolverSolve (True)
Спасибо,
С уважением, Николай

О, имя уже отобразилось
Изменено: Николай - 24.11.2014 22:09:30
макрос с поиском решения на нескольких листах, как в Excel2010 сделать макрос, запускающий последовательно поиск решения на нескольких листах
 
Да, понятно, спасибо еще раз.
Подключил Файл - параметры - надстройки - перейти - пакет анализа VBA
и макрорекордер на поиске решения заработал - правда пока ошибок кажет, но это уже лучше  чем пустой Sub ... End Sub.
Хоть что-то заработало!  :) уже прогресс
макрос с поиском решения на нескольких листах, как в Excel2010 сделать макрос, запускающий последовательно поиск решения на нескольких листах
 
Спасибо за совет - если проще никак, бум штудировать хелп по Solver - у  :)
Изменено: hrnv - 24.11.2014 16:40:23
макрос с поиском решения на нескольких листах, как в Excel2010 сделать макрос, запускающий последовательно поиск решения на нескольких листах
 
Здравствуйте,
Без макроса процесс выглядит так:
1 Настраиваю поиск решения (ограничения, изменяемые, целевую) на нескольких листах. На каждом листе настройки разные. Они сохраняются если  вызвать окно поиска решения, выставить все, а потом закрыть не запуская.  
2. Запускаю поиск решения на листе 1, курю 2-3 минуты, запускаю поиск решения на листе 2, курю.... на листе 10
3. Прохожусь по всем листам - сохраняю результаты поиска решения. Прикидываю как изменить настройки и снова п. 1

Очень хочется автоматизировать п. 2. Напрямую макрорекордер не записал ничего.
Посоветуйте как подступиться. Важно, чтобы настройки поиск решения брал с листа.

Excel 2010 - принципиально, поскольку в 2003 генетического алгоритма нет
Изменено: hrnv - 24.11.2014 15:36:39
перевести общий с запятой - в числовой формат, VBA
 
спасибо! оба кода работают:
и подлинее от lexey_fan
и покороче от KuklP
А скажите, если не секрет, в
Код
Cells.Replace ",", ".", 2
двойка, она для чего?
перевести общий с запятой - в числовой формат, VBA
 
так с мастера внешних данных код я и съобезьянничал
Код
        ActiveWorkbook.Worksheets.Add
        ActiveSheet.Name = fa$    
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & ПапкаДляФайлов$ & fa$ & ".csv", Destination:=Range("A1"))
    
        '.Name = "АГРО"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = -535
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileOtherDelimiter = ";"
        .TextFileColumnDataTypes = Array(4, 1, 1)
        .TextFileDecimalSeparator = "."
        .Refresh BackgroundQuery:=False
    End With
 
менять  .TextFileDecimalSeparator = "." на запятую  - это на весь диапазон работает а не постолбцово не решает проблему -
там один столбец с разделителем точкой а другой с запятой.
по идее хотелось бы чтоб с этого же макроса и диаграмма строилась
замена запятой на точку и обратно
Код
        Columns("B:B").Select
    Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
            Columns("B:B").Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
 
успеха не имеет - также по левому краю выравнивание остается
наверное все-таки придется доп столбцы с делением на 1 организовывать и от них диаграмму строить
Изменено: hrnv - 15.12.2013 15:22:18
перевести общий с запятой - в числовой формат, VBA
 
Здравствуйте!
есть внешние файлы csv с десятичным разделителем точкой

после импорта с  .TextFileDecimalSeparator = "." (в excel 2003) получаются столбцы с запятыми, которые выравниваются слева и не воспринимаются как числа.
формат диапазона ячеек - числовой - не работает
двойной щелчок на ячейке - решает проблему - содержимое ячейки становится числом
включение в формулу - тоже работает
а диаграмма от исходных столбцов не строится

подскажите, пожалуйста, как на VBA организовать "осмысление" исходных столбцов до чисел.
наверно делать дублирующие столбцы с формулами, делящими исходные на 1 - не самое лаконичное решение.
если решение уже есть на форуме - ткните пожалуйста носом  :)
Разместить кнопку на окне предварительного просмотра, Или MsgBox без кнопок и с выдержкой по времени
 
Спасибо, ато все мозги сломал пытаясь задержку через OnTime сделать
Цикл это хороший выход
Но и моя придумка с размещением доп информации в уголке экрана непосредственно в просмотре - тоже неплохо
Разместить кнопку на окне предварительного просмотра, Или MsgBox без кнопок и с выдержкой по времени
 
стандартный превью интуитивно понятен тем, кто на компьютере умеет, хотя бы слегка.
Тут задача максимально упростить - чтоб человек отошел от станка, подошел к компьютеру, нажал на 2-3 большие кнопки с понятными ему словами и взял листы из принтера.
Ато сейчас маршруты руками (ручкой на бумажном бланке) пишут.

извините за мелкий текст - из ворда вставил и не посмотрел. поправил
Разместить кнопку на окне предварительного просмотра, Или MsgBox без кнопок и с выдержкой по времени
 
Здравствуйте!
С первого листа вызываем просмотр и печать листа печ
Код
Sub pros()
MsgBox ("просмотр закрывать штатной кнопкой, что сверху посередке")
Sheets("печ").Select
ActiveWindow.SelectedSheets.PrintPreview
Sheets("первый").Select
End Sub

Sub prin()
Sheets("печ").Select
ActiveWindow.SelectedSheets.PrintOut
Sheets("первый").Select
End Sub 
Хочу получше, но не знаю как

Или так
1. Вместо MsgBox ("закрывать ...." ) повесить сообщение  на 2 сек без необходимость кликать в ОК на месбоксе и желательно чтобы по щелчку в любом месте за время от 0 до 2с это сообщение тоже убиралось
Или так
2. Разместить собственные (не штатные) кнопки закрытия и печати (в немодальном режиме) непосредственно в PrintPreview.
Не то, что я не могу выбрать между 1 и 2  ) – просто ни то ни то пока не умею

Посоветуйте, пожалуйста
Изменено: hrnv - 06.12.2013 12:05:06
Поиск перечня операций по названию узла
 
Гениально!
Большое спасибо
Поиск перечня операций по названию узла
 
Прицепление к  сообщению #3 немного не то - числа в теле таблицы - это порядковый номер операции.
Узел2 сначала ровнять потом сверлить и т.д
Выпадающий список неудобно - уже есть конструкция - там гоняние невинной буквы автоматизировано - клик по любой ячейке столбца выбор ставит в ячейке галку со снятием галки предыдущего выбора. Как сделано пока не разбирался - только видно, что галка это буква а.
А вот дублирование шапки снизу и правда как то плохо. И еще раз спасибо за идею - повесить строку равную той, где стоит указатель а, над шапкой и от нее уже городить ГПР.
Поиск перечня операций по названию узла
 
Спасибо за подсказку про ДВССЫЛ
кривенько, но получилось
ГПР($J5;ДВССЫЛ(АДРЕС(ПОИСКПОЗ("a";A:A);1;4)):$H$7;8-ПОИСКПОЗ("a";A:A);ЛОЖЬ)
а шапку вниз сдублировал, поскольку у ГПРа вывод только ниже поиска
а СМЕЩ как 3й аргумент ГПРа - не могу сообразить как вставить.
Видал конечно модифицированную функцию ВПР без ограничения на вывод правее поиска - может попробовать такой же рукописный ГПР по аналогии сконструировать...
С ИНДЕКСом честно говоря, не понял, ИНДЕКС($A$1:$A$7;ПОИСКПОЗ("a";$A$1:$A$7)) возвращает а
Поиск перечня операций по названию узла
 
Здравствуйте,
Есть двумерная таблица, где по вертикали - наименования узлов, по горизонтали - наименования технологических операций, а внутри - порядковый номер операции для определенного узла.
по вертикали определяем узел напротив которого стоит буква а (строку по которой выводим информацию) АДРЕС(ПОИСКПОЗ("a";A:A);1;4)
по горизонтали ГПРом выводим последовательность операций ГПР(J5;A3:H7;5;ЛОЖЬ)
Осталось в ГПР вместо жестко заданного начала диапазона A3 вписать возвращаемое АДРЕСом
ГПР($J5;АДРЕС(ПОИСКПОЗ("a";A:A);1;4):H7;5;ЛОЖЬ) - не сработало
Посоветуйте пожалуйста как
Страницы: 1
Наверх