Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 293
1

Оптимизация методом покоординатного спуска

22.12.2014, 13:20. Показов 3529. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
код программы есть. осталось найти минимизируемую функцию.
Бункер для хранения зерна, для его лучшей сохранности, должен иметь форму усеченного конуса. Основание изготавливается из плит стоимостью 100 руб/м2, а остальная часть (боковые стенки) изготавливается из листового металла стоимостью 150 руб/м2. Дать модель оптимальной конструкции бункера для хранения 10 м3 зерна, обеспечивающую минимальную стоимость его изготовления.

Добавлено через 21 минуту
вот все, что я сделала:
S=pi*r1^2*100+pi*(r1+r2)*l*150=pi*r1^2*100+pi*(r1+r2)*sqrt((r2-r1)^2+h^2)*150 - стоимость но без учёта по объёму равному 10м3.
Есть мысли, что нужно как-то всё в этой формуле выразить через объём. Но вот как, это вопрос, который не даёт покоя.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2014, 13:20
Ответы с готовыми решениями:

Оптимизация методом покоординатного спуска
clear all; clc; format long; g = 0.5; % постоянная шага d = 0.01; % дельта % Начальная точка...

Оптимизация методом покоординатного спуска (Гаусса-Зейделя)
Есть рабочий вариант: clear all; clc; % Значения коэффициентов c1 = -2; c2 = -1; c12 = 1; ...

Оптимизации методом покоординатного спуска
Есть код: clear all; clc; g = 0.05; % постоянная шага d = 0.01; % дельта % Начальная точка x1...

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

26
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
22.12.2014, 13:56 2
А формула объема?
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 293
22.12.2014, 14:01  [ТС] 3
V усеченного конуса=1/3* π* h*(r1 в квадрате +r1·r2+r2 в квадрате)
0
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
22.12.2014, 14:07 4
этот объем V по условию равен 10 м3
вот у нас уже есть два выражения неприятность в том, что у усеченного конуса 3 параметра: r1, r2 и h может что-то зафиксировать, т.е. принять r1 = 1, а от этого искать значения двух других параметров?
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 293
22.12.2014, 14:23  [ТС] 5
для чего два выражения? нам же нужна одна функция
0
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
22.12.2014, 14:30 6
я решил выразить одно через другое, подставить, найти производную и приравнять нулю... но похоже перемудрил
Значение объема задает ограничение на значения параметров. из него можно выразить h, подставить в формулу S, получить ф-цию от r1, r2 и искать минимум покоординатным спуском Смекаешь?
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 293
22.12.2014, 14:30  [ТС] 7
нам нужно через объем выразить эти параметры и подставить их в формулу площадей.
0
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
22.12.2014, 14:32 8
*у тебя формула не площади, а стоимости, т.к. оно уже умножено на цену. Вот это и нужно минимизировать.
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 293
22.12.2014, 14:36  [ТС] 9
не, ну какая окончательная функция в итоге получается?

Добавлено через 3 минуты
из формулы объема выразила h, подставила в формулу S, получила функцию от r1, r2 , умножила на стоимость боковой поверхности . прибавила площадь нижнего основания умноженную на его стоимость. а дальше не знаю)
0
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
22.12.2014, 14:50 10
вот, гляди
*только ты забыла стоимость второго основания
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
clear, clc
 
syms r1 r2 h
 
P = pi*r1^2*100 + pi*r2^2*100 + pi*(r1+r2)*sqrt((r2-r1)^2+h^2)*150;
h0 = solve(1/3*pi*h*(r1^2+r1*r2+r2^2)-10 ,h) % выражаем h из объема
P = subs(P,h, h0) % подставляем в формулу цены
 
F = @(x) double( subs(P,[r1 r2],x.*(x>0)) ); % функция
 
ezsurf(P,[0 5 0 5]) % рисуем
R = fminsearch(F,[3, 3]);
R1 = R(1)
R2 = R(2)
h = double(subs(h0,[r1 r2],R)) % высота
Оптимизация методом покоординатного спуска


НО при расчете получилось, что R1=R2, т.е. у нас не конус, а цилиндр! можно задать условие, например R1 = 5*R2 и найти соответствующие значения
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 293
22.12.2014, 14:52  [ТС] 11
но нам не нужно учитывать верхнее основание)
0
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
22.12.2014, 14:54 12
Азалия96, почему? дождик будет капать ^___^"
*если так, то убери кусочек pi*r2^2*100 в строке 5, тогда радиусы будут немного разными
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 293
22.12.2014, 15:24  [ТС] 13
это уже готовый код? или что-то надо будет изменить?
и то есть не нужно высчитывать производные?

Добавлено через 26 минут
для реализации этого метода , мне из функции нужны взять коэффициенты. какие в данном случае коэффициенты?
0
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
22.12.2014, 16:21 14
коэф-тов нет и не будет
а производные можно рассчитать численно

Добавлено через 11 минут
если тебе удобней работать с функцией вида F(x1,x2), то можно записать:
F = @(x1,x2) double( subs(P,[r1,r2],[x1,x2]) );
тогда производная в точке [xk1,xk2] по первой переменной:
dFdr1 = (F(xk1+h,xk2)-F(xk1-h,xk2))/(2*h);
а по второй:
dFdr2 = (F(xk1,xk2+h)-F(xk1,xk2-h))/(2*h);
гдe h=1e-8; - очень малое приращение.
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 293
22.12.2014, 16:38  [ТС] 15
Вы вроде как использовали функцию из библиотеки, а мне самой надо реализовать этот алгорит оптимизации)
0
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
22.12.2014, 17:46 16
да, я использовал fminsearch, чтобы показать возможность решения а ты вместо нее поставь свой алгоритм
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 293
22.12.2014, 20:31  [ТС] 17
у меня есть на примере 1 код. но там есть коэффициенты, дельта, и постоянный шаг. еще координаты сохраняются в массиве.

Добавлено через 2 часа 38 минут
а почему вы не высчитываете производную?
0
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
22.12.2014, 21:15 18
формула производной будет длинной
я тебе вывел функцию, а метод поиска минимума роли не играет. Дельта и шаг подбираются опытным путем
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 293
22.12.2014, 21:54  [ТС] 19
то есть, я могу воспользоваться вашим методом?
0
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
22.12.2014, 22:45 20
можешь
если не получится, я подскажу
0
22.12.2014, 22:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2014, 22:45
Помогаю со студенческими работами здесь

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

Метод покоординатного спуска
Помогите кто-нибудь реализовать метод покоординатного спуска на MATLAB вот некоторые материалы...

Оптимизация методом Ньютона (нахождение точки минимума). Оптимизация кода
MATLAB только начал осваивать. Попытался реализовать нахождение точки минимума методом Ньютона...

Минимизация функции методом градиентного спуска с дроблением шага. Ошибка!
Уважаемые товарищи! Не могу справиться с задачей( Минимизация функции методом градиентного спуска с...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru