Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 28.10.2020
Сообщений: 7

Прямо двойственный метод внутренней точки

12.01.2023, 21:11. Показов 1655. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать код с вводимыми данными для решения задач
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.01.2023, 21:11
Ответы с готовыми решениями:

Метод внутренней точки
Подскажите как решать примеры на данный метод ? Если не решается система для нахождения стационарной точки, можно как-то обойти ее и...

Двойственный симплекс метод
Здравствуйте! Пытаюсь решить ЗЛП двойственным симплекс методом. В Mathematica встроенной функции, как я понял, нет. В каком виде нужно...

Двойственный симпликс-метод
Как реализовать программно на C++ двойственную задачу симплекс-метода в случае произвольных свободных членов?

2
Йуный плагиат-падаван)
176 / 119 / 45
Регистрация: 17.10.2022
Сообщений: 566
20.01.2023, 19:04
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
import numpy as np
 
# Input data
c = np.array([2, 3, 4]) # Objective function coefficients
A = np.array([[1, 1, 0], [2, 0, 1]]) # Constraint matrix
b = np.array([3, 5]) # Constraint vector
x_0 = np.array([0, 0, 0]) # Initial point 
tau = 0.5 # Step size 
epsilon = 10**(-6) # Precision parameter 
 
 
# Auxiliary variables 
n_iterations = 0 # Iteration counter 
x_k = x_0 # Current point 
 
    
# Main loop of the algorithm    
while True:
 
    n_iterations += 1
 
    # Computing the gradient of the objective function at x_k    
    grad_f_xk = c
 
    # Computing the gradient of the dual problem at x_k    
    grad_g_xk = A.T @ (1/b)
 
    # Computing the step direction d_k    
    d_k = -grad_f_xk + tau * grad_g_xk
 
    # Computing the step size alpha    
    alpha = 1
 
    while True:
 
        x_{n+1} = x_{n} + alpha * d_{n}
 
        if c @ x_{n+1} <= c @ x_{n} + epsilon:   break  
 
        alpha /= 2  
 
    if np.linalg.norm(d_{n}) <= epsilon:   break  
 
    x_{n} = x_{n+1}  
 
        
# Output data        
print('Optimal solution is', x_{n+1})        
print('Number of iterations is', n_iterations)
Добавлено через 13 секунд
хотя он мне не очень нравится

Добавлено через 15 секунд
Нарыл:
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
import cvxpy as cp
 
# Define the primal problem variables
x = cp.Variable(n)
 
# Define the objective function
obj = cp.Minimize(cp.sum_squares(A*x - b))
 
# Define the constraints
constraints = [G*x <= h, x >= 0]
 
# Define the primal problem
primal = cp.Problem(obj, constraints)
 
# Define the dual problem variables
y = cp.Variable(m)
 
# Define the objective function
dual_obj = cp.Maximize(b.T*y)
 
# Define the constraints
dual_constraints = [G.T*y >= cp.sum_squares(x), y >= 0]
 
# Define the dual problem
dual = cp.Problem(dual_obj, dual_constraints)
 
# Define the initial feasible point
x_init = cp.Variable(n)
y_init = cp.Variable(m)
init_constraints = [G*x_init <= h, x_init >= 0, G.T*y_init >= cp.sum_squares(x_init), y_init >= 0]
init_problem = cp.Problem(cp.Minimize(0), init_constraints)
init_problem.solve()
 
# Define the parameter for the barrier method
t = cp.Parameter(nonneg=True)
 
# Define the logarithmic barrier function
log_barrier = cp.sum(cp.log(x)) + cp.sum(cp.log(y)) + cp.sum(cp.log(-G*x + h)) + cp.sum(cp.log(-G.T*y + cp.sum_squares(x)))
 
# Define the composite problem
obj_t = obj + t*log_barrier
constraints_t = constraints + [G.T*y == cp.sum_squares(x)]
composite = cp.Problem(obj_t, constraints_t)
 
# Define the parameter for the step size
sigma = cp.Parameter(nonneg=True)
 
# Define the step size and update rule
step = cp.Variable(n+m)
x_step = x + sigma*step[:n]
y_step = y + sigma*step[n:]
 
# Perform the iterations
while t.value > 1e-3:
    # Solve the composite problem
    composite.solve()
    x_star = x.value
    y_star = y.value
 
    # Compute the Newton direction
    grad_f = cp.vstack([2*A.T*(A*x_star - b), -G.T*y_star + cp.sum_squ
0
 Аватар для OlegChe
73 / 55 / 25
Регистрация: 12.07.2014
Сообщений: 216
03.02.2023, 17:12
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
import numpy as np
 
def interior_point(c, A, b, x0, s0, alpha=0.1, beta=0.9, tol=1e-6):
    n = x0.shape[0]
    m = b.shape[0]
    x = x0.copy()
    s = s0.copy()
    for k in range(1000):
        # Calculate gradient of the logarithmic barrier function
        grad_L = c - np.dot(A.T, (1 / s))
        # Calculate Jacobian of the constraints
        J = np.dot(A, np.diag(x)) - np.dot(np.diag(s), np.identity(m))
        # Solve the Newton system to get direction
        dx, ds = np.linalg.solve(J, -grad_L)
        # Calculate step size
        t = 1
        while any(x + t * dx <= 0) or any(s + t * ds <= 0):
            t *= beta
        # Update x and s
        x = x + t * dx
        s = s + t * ds
        # Check termination condition
        if np.linalg.norm(grad_L) < tol:
            break
    return x
 
# Example usage
c = np.array([-1, -2])
A = np.array([[1, 1], [2, 1], [1, 2]])
b = np.array([1, 2, 2])
x0 = np.array([1, 1])
s0 = np.array([1, 1, 1])
x = interior_point(c, A, b, x0, s0)
print("Optimal solution:", x)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.02.2023, 17:12
Помогаю со студенческими работами здесь

Двойственный симплекс метод
Наверно этот вопрос уже был. Срочно нужен исходник реализующий двойственный симплекс метод. Заранее всем спасибо!

Двойственный симплекс метод
У меня есть код написанный на С для ренегия ЗЛП двойственным симплекс методом. А мне надо портировать его в C++ Builder, но ни как не...

Двойственный симплекс метод (ЗЛП)
Этот вопрос поднимался во многих темах, но стоящих ответов так и не было получено. Необходим код программной реализации двойственного...

Проект двойственный симплекс-метод
Ребят, могли бы скинуть проект двойственный симлекс-метод для си шарпа. Очень надо. Спасибо!

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
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. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru