2014 dxdy logo

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

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




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

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

 
 
 
 Re: Матлаб: решение оптимизационной задачи
Сообщение23.08.2022, 22:03 
Как всегда все оказалось просто - в 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 
maximkarimov
У таких алгоритмов есть куча настроечных параметров. Интересующий Вас называется Display, у него точно есть значение Verbose (дает максимум дебаг-информации, что используется при отладке) и Off. Надо перевести его в off. Механизм обычно такой: функция-оптимизатор принимает на вход структуру, в которой перечислены значения настроечных параметров. Структуру генерит функция (то ли optimset, то ли optimoptions). Она принимает аргументы парами "название - значение".

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

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group