3 / 3 / 0
Регистрация: 18.12.2012
Сообщений: 49
1

Определить минимум функции c ограничениями (генетический алгоритм)

20.06.2013, 16:57. Показов 4743. Ответов 6
Метки нет (Все метки)

Здравствуйте. Нуждаюсь в вашей помощи в вопросе минимизации функции нескольких переменных, при заданных ограничениях, использую Генетический алгоритм.
Пользуюсь MatLab 2013a
Никак не могу понять куда вводить ограничения. Почитал Help, полазил в интернете. Нашел куда вводить ограничения если функция одной переменной
x = fminimax(fun,x,A,b,Aeq,beq,lb,ub) определяет набор нижней и верхней границ для расчетных параметров так, что решение всегда находится в диапазоне lb <= x <= ub.
А вот как быть с функцией двух переменных не знаю
Помогите пожалуйста..

Определить с помощью генетического алгоритма минимум функции
f(x1,x2) = 8 - 4*x1^2 - 2*x2^2 + 4*x1*x2, на интервалах: 0 ≤ х1 ≤ 4, 0 ≤ х2 ≤ 3.


Добавлено через 21 минуту
В Help'е вычитал вот это:
Initial range specifies lower and upperbounds for the entries of the vectors in the initial population. You can specify Initial range as a matrix with 2 rows and Initial length columns. The first rowcontains lower bounds for the entries of the vectors in the initialpopulation, while the second row contains upper bounds.
Только не понимаю как записывать ограничения? [0 0;4 3] - типо так? В первой нижние границы во второй верхние?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.06.2013, 16:57
Ответы с готовыми решениями:

Найти минимум целевой функции с двумя переменными с ограничениями
Всем добрый день. Нужно методом линейного программирования минимизировать функцию. Вот задание:...

Оптимизация функции (Генетический алгоритм)
Задание вот такое: Дана следующая функция: 1. Провести оптимизацию заданной функции в Matlab (с...

Минимум/максимум функции с ограничениями и их график
Почему оно ругается на Х1 ? И как (если тогда после исправления всё заработает остальное)...

Можно ли в линейном программировании записать ограничениями минимум из двух значений
Здравствуйте! Есть задача, которую пытаемся решить методами линейного программирования. В одно из...

6
461 / 451 / 56
Регистрация: 28.05.2013
Сообщений: 699
20.06.2013, 17:02 2
Генетический алгоритм в функцию годности (цели) передаёт вектор значений заданого вами размера. Какой перменной соответствует елемент вектора решать вам. Тоесть если записать функции цели в виде анонимной функции, то она будет иметь вид:
f =@(x) 8 - 4*x(1)^2 - 2*x(2)^2 + 4*x(1)*x(2).


fminimax это не генетический алгоритм.
0
3 / 3 / 0
Регистрация: 18.12.2012
Сообщений: 49
20.06.2013, 17:04  [ТС] 3
Цитата Сообщение от tvoretsmira Посмотреть сообщение
Генетический алгоритм в функцию годности (цели) передаёт вектор значений заданого вами размера. Какой перменной соответствует елемент вектора решать вам. Тоесть если записать функции цели в виде анонимной функции, то она будет иметь вид:
f =@(x) 8 - 4*x(1)^2 - 2*x(2)^2 + 4*x(1)*x(2).


fminimax это не генетический алгоритм.
так как же мне решить данную задачу тогда?
0
461 / 451 / 56
Регистрация: 28.05.2013
Сообщений: 699
20.06.2013, 17:20 4
Цитата Сообщение от FRINGE Посмотреть сообщение
[0 0;4 3] - типо так?
именно так, где:
Matlab M
1
2
3
lb=[0,0]; 
ub=[4,3];
options = gaoptimset('PopInitRange',[0,0;4,3])
Добавлено через 2 минуты
Используйте функцию ga или задайте задачу в gatool. В gatool у вас ещё и будет возможность поучаствовать в процесе эволюции.

Добавлено через 8 минут
И вам решать будете вы распаралеливать:
Matlab M
1
2
3
matlabpool open
options = gaoptimset(options,'UseParallel', 'always', 'Vectorized', 'off');
f =@(x) 8 - 4*x(1)^2 - 2*x(2)^2 + 4*x(1)*x(2)
или векторизировать:
Matlab M
1
2
options=gaoptimset(options,'UseParallel', 'never','Vectorized','on')
f =@(x) 8 - 4*x(:,1).^2 - 2*x(:,2).^2 + 4*x(:,1).*x(:,2)
0
3 / 3 / 0
Регистрация: 18.12.2012
Сообщений: 49
20.06.2013, 17:24  [ТС] 5
Цитата Сообщение от tvoretsmira Посмотреть сообщение
именно так, где:
Matlab M
1
2
3
lb=[0,0]; 
ub=[4,3];
options = gaoptimset('PopInitRange',[0,0;4,3])
Добавлено через 2 минуты
Используйте функцию ga или задайте задачу в gatool. В gatool у вас ещё и будет возможность поучаствовать в процесе эволюции.

Добавлено через 8 минут
И вам решать будете вы распаралеливать:
Matlab M
1
2
3
matlabpool open
options = gaoptimset(options,'UseParallel', 'always', 'Vectorized', 'off');
f =@(x) 8 - 4*x(1)^2 - 2*x(2)^2 + 4*x(1)*x(2)
или векторизировать:
Matlab M
1
2
options=gaoptimset(options,'UseParallel', 'never','Vectorized','on')
f =@(x) 8 - 4*x(:,1).^2 - 2*x(:,2).^2 + 4*x(:,1).*x(:,2)
да. я и делаю это в gatool. и там в поле initial range пишу [0 0;3 4]
0
461 / 451 / 56
Регистрация: 28.05.2013
Сообщений: 699
20.06.2013, 17:35 6
То чего у вас в задаче нет задаёте пустым массивом []:
Matlab M
1
2
3
x = ga(f,2,[],[],[],[],lb,ub,[],options)
x1=x(1);
x2=x(2);
или в gatool оставляете пустые поля.

Добавлено через 10 минут
Цитата Сообщение от FRINGE Посмотреть сообщение
да. я и делаю это в gatool. и там в поле initial range пишу [0 0;3 4]
Есть разница между [0 0;3 4] и [0 0;4 3]. Для первого случая х1=х(1); х2=х(2), а для второго х1=х(2); и х2=х(1). Что влечёт за собой изменение функции годности, не перепутайте.
0
3 / 3 / 0
Регистрация: 18.12.2012
Сообщений: 49
20.06.2013, 23:51  [ТС] 7
Цитата Сообщение от tvoretsmira Посмотреть сообщение
То чего у вас в задаче нет задаёте пустым массивом []:
Matlab M
1
2
3
x = ga(f,2,[],[],[],[],lb,ub,[],options)
x1=x(1);
x2=x(2);
или в gatool оставляете пустые поля.

Добавлено через 10 минут

Есть разница между [0 0;3 4] и [0 0;4 3]. Для первого случая х1=х(1); х2=х(2), а для второго х1=х(2); и х2=х(1). Что влечёт за собой изменение функции годности, не перепутайте.
хорошо. спасибо вам больщое за вашу помощь
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.06.2013, 23:51
Помогаю со студенческими работами здесь

Составить алгоритм определения и вычислить минимум функции методом Гауса-Зейделя.
листаю методичку и пособие каторые выдал препод не могу разобраться подскажите кто чем может...

Определить минимум функции
пожалуйста,Как

Генетический алгоритм
Ребятки помогите запилить в Делфи генетический алгоритм,край до четверга ночи(((а то препод дал...

Генетический алгоритм
Требуется написать программу, реализующую генетический алгоритм для подбора строки ”Hello, World!”....


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru