Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 5

Нелинейная оптимизация fmincon

24.04.2014, 21:09. Показов 3095. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решаю задачу с помощью функции fmincon
x = fmincon(fun,x0,A,b,Aeq,beq)
x0-начальное приближение. При разном значении x0 получаются значения вектора x разные - вплоть до 1-го знака после запятой.
Хотя если задачу решать в лоб аналитически, то ответ должен быть один единственный.
Реально ли как-нибудь сделать, чтобы ответ fmincon совпадал с аналитическим?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.04.2014, 21:09
Ответы с готовыми решениями:

Поиск минимума задачи с ограничениями fmincon
Доброго времени суток! Мне нужно минимизировать функцию при помощи MatLab 2015b: function f = lab1a(X) f =...

Найти локальный экстремум с помощью fmincon.
Помогите пожалуйста,найти локальный экстремум с помощью fmincon ф-ции f= 3.145+(1.78+5.02*x1+3.06*x2+4.85*x3)^2 с такими ограничениями:...

нелинейная система уравнений
Добрый день,нужно решить данную систему уравнений C1*C2*R1*R3*R4=23.265; C1*R1*(R3+R4)=5.105e5; C1*C2*R1*R3*R4=23.265; ...

4
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
24.04.2014, 21:58
ты бы хоть задание/наброски выложил
0
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 5
25.04.2014, 15:07  [ТС]
(W*x,x)-min
(x,delta)=0.28
все xi от нуля до единицы


x-искомый вектор
W-заданная диагональная квадратная матрица
delta-заданный вектор, сумма его элементов равна 1
скобки - скалярное произведение

Я решала задачу аналитически, с помощью функции Лагранжа
L(x,u)=1/2(W*x,x)+u*(0.28-(x,delta))
Находим градиент
Wx-u*delta=0
x=u*inv(W)*delta
u=0.28/(inv(W)*delta,delta)
x=0.28*inv(W)*delta/(inv(W)*delta,delta)
Вот оно - единственное решение x, можно найти аналитически по этой формуле.

В матлабе считала примерно так

Matlab M
1
2
3
4
5
6
7
Aeq=[delta'];
beq=[0.28];
A=[-eye(11);
   eye(11)]
b=[zeros(11,1);
    diag(eye(11))];
[x,fval] = fmincon(@myfun,xo,A,b,Aeq,beq)
Если считать по формуле получится
0.3938
0.1607
0.2344
0.3164
0.3868
0.2813
0.3375
0.2557
0.1266
0.2344
0.2813

Если считать с помощью fmincon
0.3586
0.1629
0.2287
0.3256
0.3979
0.2887
0.3411
0.2521
0.1394
0.2215
0.2887
Это при начальном приближении x0- все нули.
Если поставить другое начальное приближение - будет другой результат.
А по идее, надо добиться, чтобы численный и аналитический совпадали.

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

Добавлено через 16 часов 37 минут
Порылась в инете - решение найдено. Здесь надо использовать quadprog
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
25.04.2014, 20:08
а можешь показать, как это должно быть?
глядишь и до меня дойдет
0
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 5
25.04.2014, 20:23  [ТС]
Да... У меня в программе еще куча всего. Вот начало:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
clear 
clc
W=[0.005 0 0 0 0 0 0 0 0 0 0;      % ковариационная матрица W
                0 0.007 0 0 0 0 0 0 0 0 0; 
                0 0 0.006 0 0 0 0 0 0 0 0;
                0 0 0 0.008 0 0 0 0 0 0 0;
                0 0 0 0 0.008 0 0 0 0 0 0;
                0 0 0 0 0 0.009 0 0 0 0 0;
                0 0 0 0 0 0 0.010 0 0 0 0;
                0 0 0 0 0 0 0 0.011 0 0 0;
                0 0 0 0 0 0 0 0 0.020 0 0;
                0 0 0 0 0 0 0 0 0 0.018 0
                0 0 0 0 0 0 0 0 0 0 0.009];
            JJ=size(W, 1)
mV = [1.05
    1.1
    1.07
    1.11
    1.08
    1.12
    1.15
    1.13
    1.17
    1.16
    1.14]; 
alpha=[0;
    0;
    0.1;
    0.05;
    0.05;
    0;
    0.1;
    0.1;
    0.2;
    0.1;
    0.2];
beta=[0.5;
    0.8;
    0.3;
    0.2;
    0.3;
    0.2;
    0.3;
    0.2;
    0.4;
    0.3;
    0.5];
delta=[0.07;
    0.04;
    0.05;
    0.09;
    0.11;
    0.09;
    0.12;
    0.1;
    0.09;
    0.15;
    0.09];
Prisk=0.05;
delta_ten=0.28;
N=20;
 
 
A=[-eye(11);
    eye(11)];
b=[-alpha;
    beta];
Aeq=[delta'];
beq=[delta_ten];
zz=[];
 
[x,fvall] = quadprog(W,zz,A,b,Aeq,beq)
mVp_zv=dot(mV,x)
delta_ten_zv=dot(x,delta)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.04.2014, 20:23
Помогаю со студенческими работами здесь

Нелинейная регрессия по параметру
Создаю модель нелинейной регрессии по параметрам и оптимизирую её с помощью алгоритма Левенберга-Марквардта: clc; clear; close all; ...

Нелинейная краевая задача
Добрый день! Прошу помощи в решении задачи. Не могу разобраться с заданием прямоугольной области и граничных условий в pdetool, а также...

нелинейная система уравнений
Как решить данную систему уравнений? дело в том что уравнений 5 а переменных 4,получается решить только если исключить одну из систем,но...

нелинейная система уравнений
Нужно найти все значения неизвестных переменных K1*c1*c2=1 c1*c2=1 g2*(c2*(-KU1+1))+c1*(g1)+c2*g1=0,01 g2*g1=1 При условии...

Функция fmincon. Ошибка "Too many input arguments"
есть основной код: function calc2222 clear; clc; lb=; ub=; x0=; Aeq=; Beq=; A=;


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru