0 / 0 / 0
Регистрация: 04.12.2019
Сообщений: 15

Одномерная оптимизация СДУ

09.03.2021, 18:52. Показов 2896. Ответов 4

Студворк — интернет-сервис помощи студентам
Всем Привет! Подскажите пожалуйста, как реализовать нахождение оптимального начального значения при заданных условиях в системе жестких ДУ. Надо найти минимум s[1] при значении Mw = 600000.
Код программы:

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
 import matplotlib.pyplot as plt
    import numpy as np
    from scipy.integrate import odeint
    from scipy import optimize
    def  F (s,t):
    kp = 48; km = 0.0048; ka1 = 8.16; ka2 = 0.96
    dMdt = -s[0]*s[3]*(kp*km)-s[0]*(kp+km)*s[4]
    dA1dt = -ka1*s[1]*s[3]-ka1*s[1]*s[4]
    dA2dt = -ka2*s[2]*s[3]-ka2*s[2]*s[4]
    dPdt = -kp*s[0]*s[3]+(km*s[0]+ka1*s[1]+ka2*s[2])*s[4]
    dQdt = km*s[0]*s[3]+ka1*s[1]*s[3]+ka2*s[2]*s[3]*s[4]
    dm0dt = kp*s[0]*s[3]-(km*s[0]+ka1*s[1]+ka2*s[2])*s[4]
    dn0dt = (km*s[0]*ka1*s[2]+ka2*s[2]*s[3])*s[4]
    dm1dt = 2*kp*s[0]*s[3]+kp*s[0]*s[4]-(km*s[0]+ka1*s[1]+ka2*s[2])*s[5]
    dn1dt = (km*s[0]+ka1*s[1]+ka2*s[2])*s[5]
    dm2dt = 4*kp*s[0]*s[3]+kp*s[0]*s[4]+2*kp*s[0]*s[5]-(km*s[0]+ka1*s[1]+ka2*s[2])*s[6]
    dn2dt = (km*s[0]+ka1*s[1]+ka2*s[2])*s[6]
    return [dMdt, dA1dt, dA2dt, dPdt, dQdt, dm0dt, dn0dt, dm1dt, dn1dt, dm2dt, dn2dt]
    t = np.linspace(0,3600)
    s0 = [1.39,0.000177,0.00168,0.0000007,0,0,0,0,0,0,0]
    s = odeint(F, s0, t)
    Mw = ((s[:,9]+s[:,10])/(s[:,7]+s[:,8]+2**-100))*68
    plt.plot(t,Mw,'b-',linewidth=2.0,label='Mw')
    plt.xlabel("W0")
    plt.ylabel("Mw")
    plt.legend()
    plt.grid()
    plt.show()
    print (Mw)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.03.2021, 18:52
Ответы с готовыми решениями:

Одномерная оптимизация
Поиск унимодального участка функции f(x)=-\sqrt{{x}^{2}}-\sqrt{1-{x}^{2}} с помощью алгоритма Свена, реализованого с помощью процедуры....

Одномерная оптимизация
Здравствуйте, мне нужна помощь в решении данной задачи. Оптимизировать функцию f (x) = 4xsin x, с помощью метода половинного деления....

Одномерная оптимизация
Поиогите пожалуйста написать программу на паскале на нахождение значения минимума функции f(x)=x^4-14x^3+60x^2-70x в интервале методам...

4
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
10.03.2021, 08:29
Koala1996, добавьте новую функцию и ищите ее минимум, что-то типа такого:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
t = np.linspace(0,3600)
s0_ = [1.39,0.000177,0.00168,0.0000007,0,0,0,0,0,0,0]
 
def F2(s0):
    t = np.linspace(0,3600)
    print(s0)
    s = odeint(F, s0, t)
    Mw = ((s[:,9]+s[:,10])/(s[:,7]+s[:,8]+2**-100))*68
    plt.plot(t,Mw,'b-',linewidth=2.0,label='Mw')
    plt.xlabel("W0")
    plt.ylabel("Mw")
    plt.legend()
    plt.grid()
    plt.show()
    curve=scipy.interpolate.splrep(t, Mw-600000)
    x0=scipy.interpolate.sproot(curve)
    y1=scipy.interpolate.splrep(t, s[:, 1])
    s1=scipy.interpolate.splev(x0[0], y1)
    print (s1)
    return s1
 
res = minimize(F2, s0_, method='Nelder-Mead', tol=1e-3)
Тут, видимо, надо подбирать методы и параметры минимизации, при приведенных в коде параметрах вылетает после 5 итераций.
1
0 / 0 / 0
Регистрация: 04.12.2019
Сообщений: 15
11.03.2021, 19:36  [ТС]
u235, здравствуйте. Спасибо, что отозвались на мою проблему. Перепробовал разные методы minimize и почти у всех выходит одна и таже ошибка
Python
1
2
3
4
5
6
7
8
<ipython-input-17-e6b7ad077c0a> in F2(s0)
     13     x0=sproot(curve)
     14     y1=splrep(t, s[:, 1])
---> 15     s1=splev(x0[0], y1)
     16     print (s1)
     17     return s1
 
IndexError: index 0 is out of bounds for axis 0 with size 0
В интернете не могу найти документации по командам splrep, splev и sproot. Подскажите пожалуйста где можно найти нужную информацию.
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
11.03.2021, 19:59
Koala1996, по функциям splrep, splev и sproot есть официальная документация:
https://docs.scipy.org/doc/sci... olate.html
Смысл в том, что Mw мы интерполируем сплайнами и вычисляем то t, при котором Mw==600000.
Попробуйте также поподбирать параметры решателя odeint, уменьшить шаг.
0
0 / 0 / 0
Регистрация: 04.12.2019
Сообщений: 15
11.03.2021, 21:02  [ТС]
u235, спасибо !! Попробую разобраться.
P.s я новичок в этом деле )))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2021, 21:02
Помогаю со студенческими работами здесь

Одномерная оптимизация
Добрый день. Есть задача: Дана функция двух переменных f(r), начальная точка r0=(x0,y0).Определить направление спуска из...

Одномерная оптимизация
Добрый день, есть такой код, для одномерной оптимизации методом поразрядного поиска. Как сделать так, чтобы поиск минимума функции...

Одномерная оптимизация
f(x)=x3-x, x∈ нужно решить данное уравнение методами дихотомии, Фибоначчи, секущих. СПАСИБО ВСЕМ

Одномерная оптимизация
Помогите решить Решить методами пассивного поиска, золотого сечения, метод Ньютона. Исследовать их сходимость и провести сравнение по...

Одномерная оптимизация
Нужна помощь с написанием кода на C++ для решения уравнения, методом трихотомии. Характер экстремума min


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

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

Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru