Форум программистов, компьютерный форум, киберфорум
Методы оптимизации
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
57 / 18 / 1
Регистрация: 14.05.2012
Сообщений: 134

Метод барьерных функций. Нюансы

03.05.2014, 04:42. Показов 8414. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Я реализовал методы барьерных и штрафных функций. Функция двух переменных. Решение частное - имеется только одно ограничение вида https://www.cyberforum.ru/cgi-bin/latex.cgi?g(x)\leq 0. Методы не сложные. Воспользовался библиотекой SciPy ( python ). Поиск минимума делаю методом Нелдера — Мида.
Так-же в алгоритме проверяю каждую найденную точку на принадлеженость к допустимой области.
Граница: https://www.cyberforum.ru/cgi-bin/latex.cgi?3x+4y-3\leq 0
Функции штрафа:
1) В методе штрафных функций: https://www.cyberforum.ru/cgi-bin/latex.cgi?0.5*(g(\bar{x})+|g(\bar{x})|)
2) В методе барьерных функций: https://www.cyberforum.ru/cgi-bin/latex.cgi?-\frac{1}{g(\bar{x})}

График функции

Вот в чем вопрос. Пока как то точно определить минимум не получается ( сравниваю с wolframalpha ). Подбирая различные исходные точки и различные значения коэффициента штрафа r получается иногда попасть в минимум. В методе штрафных функций это происходит чаще =).
1)Правильно ли я выбрал метод поиска минимума?
2)Как все таки выбирать точки и коэф. штрафа?
3)Нормально ли такое поведения метода штрафов?


Текст программы на python
Кликните здесь для просмотра всего текста

penalty_method.py
Python
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
from scipy.optimize import *
 
def penalty_method(func, h, H, x0, eps=1e-4, r=1.0, delta=0.2):
    """
    Минимизация функции с ограничениями методом штрафных функций
    Алгоритм использует поиск нулевого порядка Нелдера — Мида
 
    Параметры
    --------------
    func : функция, которую надо минимизировать
    h : ограничение на функцию. Решение задачи частное, ограничение одно, вида g(x)<=0
    H : штрафная(барьерная) функция
    x0 : начальное приближение
    eps : точность вычислений
    r : коэфицент масштабирования штрафа
    delta : коэфицент масштабирования r
 
    """
    res = []
 
    while abs(r*H(h(x0))) > eps:
        temp = fmin(lambda x: func(x) + r*H(h(x)), x0, maxiter=100)
 
        #проверка, лежит ли точка в допустимой области
        if h(temp) <= 0.0:
            x0 = temp
 
        r *= delta
 
    return x0
main.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from penalty_method import *
 
#Исходная функция
def func(x):
    A = -2.0/(1.0 + ((x[0] - 2.0)/3.0)**2 + (x[1]-2.0)**2)
    B = -1.0/(1.0+(x[0]-3.0)**2 + ((x[1]-1.0)/3.0)**2)
    return A+B
#Ограничение функции
def g(x):
    return 3*x[0]+4*x[1]-3
def G1(x):
    return 0.5*(x + abs(x))
def G2(x):
    return -1.0 / x
 
res = penalty_method(func=func, h=g, H=G1, x0=[4,8], delta=1.0, eps=1e-4, r=2.0)
res = penalty_method(func=func, h=g, H=G2, x0=[-0.7, -0.7], delta=0.1, eps=1e-7, r=3.0)
 
print(func(res))
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.05.2014, 04:42
Ответы с готовыми решениями:

Оптимизация. Метод барьерных функций.
Если кто либо сталкивался с подобным методом, можете подсказать подробный алгоритм для реализации этого метода программно, для функции...

Метод штрафных функций (+Метод градиента)
Дорогие друзья, прошу помочь с реализацией метода штрафных функций на C#. Для многомерной безусловной оптимизации используется...

Условная оптимизация методом штрафных и методом барьерных функций
Дано задание: минимизировать при заданных ограничениях f(x) с точностью E методом штрафных и методом барьерных функций, определить точное...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.05.2014, 04:42
Помогаю со студенческими работами здесь

Нюансы работы стека при вызове функций
Добрый день! # include &lt;iostream&gt; int foo(int b,int w){ int y=b+3; return y; } int main(){ int c=2;

Какие нюансы в вызове виртуальных функций из конструктора и из деструктора?
Данный вопрос взят с перечня вопросов на собеседование, смысл мне не совсем понятен, вот и решил его задать тут. Может кто понял суть...

Нюансы синтаксиса и семантики: ссылки, указатели и массивы в качестве аргументов функций
Перенесено из этой темы. Чтобы вернуть указатели почему вот здесь не надо приводить janr к типу указателя char* на выходе? char*...

Нюансы обучения: желание учесть все нюансы - корректность кода или overengineering?
Здравствуйте программисты! Ответьте пожалуйста на такой вопрос(объясните) Вот я учу С++ и решаю задачи по учебникам, и постоянно...

Метод штрафных функций
Добрый вечер, не могу решить задачку нужно Перевезти груз из точки С в точку А с минимальными затратами (рис), если стоимость перевозки на...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru