2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Матлаб: решение оптимизационной задачи
Сообщение30.07.2022, 23:27 


26/09/17
346
Не смог самостоятельно разобраться с Optimization Toolbox - очень уж навороченная штука с широкими возможностями, которые для моей задачи не нужны. Прошу помочь разобраться на простом примере.
Создаю вектор символьных переменных:
Используется синтаксис Matlab M
s = sym('x', [1 5], 'integer');
 

Интересует каким образом:
1) задать условия на некоторые переменные (например, $x_{1}>x_{3}$);
2) задать в качестве целевой функции минимум суммы и получить множество всех решений с учетом заданных условий на переменные (в общем случае решение не единственно).
Замечание: в моей задаче (любая) переменная натуральна или равна 0.

 Профиль  
                  
 
 Re: Матлаб: решение оптимизационной задачи
Сообщение23.08.2022, 22:03 


26/09/17
346
Как всегда все оказалось просто - в Optimization Toolbox свой тип переменных (символьные не подходят).
Реализовал файл-функцию и обнаружил неудобство - текстовая информация о решении оптимизационной задачи выводится в командное окно, вот так:
Используется синтаксис Matlab M
>> getMeta(Patts{17})
LP:                Optimal objective value is 6.000000.                                            


Optimal solution found.

Intlinprog stopped at the root node because the objective value is within a gap tolerance of the
optimal value, options.AbsoluteGapTolerance = 0 (the default value). The intcon variables are
integer within tolerance, options.IntegerTolerance = 1e-05 (the default value).
Функция работает в цикле и число итераций очень большое, поэтому вывод такого текста сильно тормозит процесс.
Кто-нибудь знает можно ли "запретить" Матлабу выводит это сообщение?

 Профиль  
                  
 
 Re: Матлаб: решение оптимизационной задачи
Сообщение24.08.2022, 01:12 


10/03/16
4444
Aeroport
maximkarimov
У таких алгоритмов есть куча настроечных параметров. Интересующий Вас называется Display, у него точно есть значение Verbose (дает максимум дебаг-информации, что используется при отладке) и Off. Надо перевести его в off. Механизм обычно такой: функция-оптимизатор принимает на вход структуру, в которой перечислены значения настроечных параметров. Структуру генерит функция (то ли optimset, то ли optimoptions). Она принимает аргументы парами "название - значение".

 Профиль  
                  
 
 Re: Матлаб: решение оптимизационной задачи
Сообщение24.08.2022, 03:02 


26/09/17
346
ozheredov в сообщении #1563361 писал(а):
maximkarimov
то ли optimset, то ли optimoptions. Она принимает аргументы парами "название - значение".
Не знаю как, но у меня получилось:
Используется синтаксис Matlab M
options.Display = 'off';
sol=solve(P{i},'linprog',options);
Раньше было так:
Используется синтаксис Matlab M
sol=solve(P{i});
Спасибо огромное!

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group