5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583

Метод проекции градиента Розена

16.06.2018, 18:59. Показов 5464. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите с реализацией? нужно для линейных и нелинейных ограничений. много теории пролистала, а реализация не получается

Добавлено через 3 минуты
примерно нашел вот это, но не то, что мне нужно
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
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import numpy as np
import math
import pandas as pd
from parser import expr
from copy import copy
 
n = 20
m = 400
l = 5
T = 1
#предпологаяется что функция непрервынвая и u(0,t) = u(l,t)
u_tx = "x*sin(t)"
 
alpha = "-1"
beta = "1"
h = float(l) / n
tau = float(T) / m
gamma = tau / h**2
 
print gamma
 
def j_area(j_u):
    area = 0
    for i in xrange(n + 1):
        if (i == 0) or (i == n):
            area += j_u[i]*j_u[i]
        elif i % 2 == 0:
            area += 2 * j_u[i]*j_u[i]
        else:
            area += 4 * j_u[i]*j_u[i]
    return h * area / 3
 
def disc(foo):
    g = np.zeros([m+1, n+1])
    for k in xrange(m+1):
        for i in xrange(n+1):
            g[k, i] = np.array(eval(expr(foo).compile(),
                                      {'x': i*h, 't': k*tau, 'sin': math.sin, 'cos': math.cos, 'exp': math.exp}))
    return g
 
def direct_sys(g):
    u = np.empty(shape=(m+1, n+1))
    u[0, :] = 0
    u[:, 0] = 0
    u[:, n] = 0
    for k in xrange(0, m):
        for i in xrange(1, n):
            u[k+1, i] = gamma*u[k, i-1] + gamma*u[k, i+1] + tau*g[k, i] - (2*gamma - 1)*u[k, i]
    return u
 
def con_sys(v):
    psi = np.zeros([m+1, n+1])
    psi[m, :] = v
    psi[:, n] = 0
    psi[:, 0] = 0
    for k in reversed(xrange(1, m+1)):
        for i in xrange(1, n):
            psi[k-1, i] = psi[k, i] - gamma*(2*psi[k, i] - psi[k, i-1] - psi[k, i+1])
    return psi
 
fff = "sin(x)"
 
def own_GPM():
    a = disc(alpha)
    b = disc(beta)
 
    #тест режим
    #f_x = direct_sys(disc(u_tx))[m, :]
 
    #стандартный режим
    f_x = disc(fff)[m, :]
    u_prev = disc("0")
    u_next = np.zeros([m+1, n+1])
    lmbd = 1.
    st = 0
    while True:
        dj_u = con_sys(direct_sys(u_prev)[m, :] - f_x)
        for k in xrange(m+1):
            for i in xrange(n+1):
                u_next[k, i] = u_prev[k, i] - lmbd * 2 * dj_u[k, i]
                if u_next[k, i] < a[k, i]:
                    u_next[k, i] = a[k, i]
                if u_next[k, i] > b[k, i]:
                    u_next[k, i] = b[k, i]
        if j_area(direct_sys(u_next)[m, :]-f_x) > j_area(direct_sys(u_prev)[m, :]-f_x):
            u_next = copy(u_prev)
            lmbd *= 0.95
            #lmbd *= 1./(st + 1)
        u_prev = copy(u_next)
        st += 1
        print "J: " + str(j_area(direct_sys(u_prev)[m, :]-f_x)), "lambda: " + str(lmbd)
        if st == 1000:
            break
    return u_prev
a = own_GPM()
 
print direct_sys(disc(u_tx))[m, :]
 
#стандартный режим
print j_area(direct_sys(a)[m, :]-disc(fff)[m, :])
 
print "\n"
 
pd.DataFrame(data=a, index=[x for x in range(m+1)], columns=[x for x in range(n+1)]).to_csv("U.csv.txt")
pd.DataFrame(data=direct_sys(a), index=[x for x in range(m+1)], columns=[x for x in range(n+1)]).to_csv("direct_U.csv.txt")
pd.DataFrame(data=disc(fff), index=[x for x in range(m+1)], columns=[x for x in range(n+1)]).to_csv("fx.csv.txt")
Добавлено через 3 минуты
функция (х-2)^4+(x-2)^2*y^2+(y+1)^2,
рассмотреть
- случай линейных ограничений х+y>=4 x+4y-16<=0
- случай нелинейный ограничений х^2+y-4>=0 11x-4y-44<=0
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.06.2018, 18:59
Ответы с готовыми решениями:

Методы проекции градиента на питоне
Искал реализацию одного из методов проекции градиента на питоне, но смог найти лишь градиентный спуск (он не подходит, т.к. нужен метод, в...

Есть ли у кого-нибудь программная реализация метода проекции градиента (Розена) на любом ЯП
Здравствуйте! Прошу помочь. Есть ли у кого-нибудь программная реализация метода проекции градиента (Розена) на любом ЯП? Если есть,...

Метод проекции градиента
Здравствуйте! Подскажите (может быть кто-нибудь знает) где можно найти запрограммированный метод проекции градиента (ограничения типа...

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

Условный метод оптимизации проекции градиента
Здравствуйте мне надо найди максимум функции -x1+6*x2-x1^2-3*x2^2 с ограничением x1+x2=3 методом проекции градиента. У меня есть программа...

Минимизация в бесконечном гильбертовом пр-ве метод проекции градиента
Добрый день! Задан функционал J(U) сграничными условиями : &lt;x+y,u&gt; &gt;= 17 &lt;y, u&gt; &gt;=18 Один из которых (первое) является активным...

Метод проекции градиента. Как записать ограничения в виде шара
Нужно сделать проверку в маткад правильности нахождения точки минимума методом проекции градиента,если задано простое множество -шар. Как...

Методы: условного градиента, проекции градиента, возможных направлений
Помогите плиз с кодом. метод условного градиента метод проекции градиента метод возможных направлений

Метод проекции градиента. Проблема с тем, чтобы преобразовать один из шагов в пользовательскую функцию
Здравствуйте, у меня есть вариант с построчной реализацией алгоритма, и один из шагов для нее (с 10го и до конца итерации) не получается...


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

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

Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru