Во-первых, если ваша задача действительно может быть приведена как линейное или квадратичное программирование, сначала сделайте это.
В противном случае вы пробовали заполнить ее различными начальными значениями x0
?Если он начинается в плохом месте, может быть намного труднее достичь оптимального значения.
Если вы можете предоставить градиент функции, это может сильно помочь оптимизатору (хотя, очевидно, только если выможет найти его каким-либо другим способом, кроме численного дифференцирования).Точно так же, если вы можете предоставить (полный или разреженный) гессиан относительно дешево, вы - золотой.
Вы также можете попробовать , используя другой алгоритм в решателе .
По сути, fmincon
по умолчанию почти не содержит информации о функции, которую он пытается оптимизировать, и предоставление большего может быть чрезвычайно полезным.Если вы можете рассказать нам больше о целевой функции, мы могли бы дать больше советов.