Оптимизация формы кулочка
Спроектировать форму выпуклой бочки валка, чтобы максимизировать площадь отверстия клапана для одного вращения бочки валка с ограничениями радиусa.
Предположим, что форма бочки валка кругообразная с углом , что её окружность с радиусом rmin, и что она симметрично сформирована для оставшихся .
Расчётные параметры ri, i=1, …, n представляют радиус бочки валка на равноудалённых углах θ, распределённых в рамках угла верхней части некругообразной части бочки валка.
n = 100; vars = Array[r, n];
Каждый радиус ri лежит на отрезке .
rmin = 1; rmax = 2;
varbounds = Table[rmin <= r[i] <= rmax, {i, 1, n}];
Ввести угол θ, определённый выше.
\[Theta] = 2 Pi/(5 (n + 1));
Ограничения на выпуклость выражены системой неравенств .
convexconstri = (1/2) r[i - 1] r[i + 1] Sin[2 \[Theta]] <=
(1/2) r[i - 1] r[i] Sin[\[Theta]] + (1/2) r[i] r[
i + 1] Sin[\[Theta]];
Используя , система неравенств может быть выражена в ином формате. Заметьте, что является радиусом точки на кругообразной части бочки валка и потому равна .
convexconstr =
Table[2 r[i - 1] r[i + 1] Cos[\[Theta]] <=
r[i] (r[i - 1] + r[i + 1]), {i, 0, n}] /. {r[-1] -> rmin,
r[0] -> rmin, r[n + 1] -> rmax};
Ограничение скорости изменения радиуса выражено параметром α, как в .
\[Alpha] = 1.5; rchangeconstr =
Table[-\[Alpha] <= (r[i + 1] - r[i])/\[Theta] <= \[Alpha], {i, 0,
n}] /. {r[0] -> rmin, r[n + 1] -> rmax};
Целевая функция (площадь отверстия клапана) предполагает наличие простого линейного отношения с расчётными параметрами ri при условии, что π rv 2(r1+…+rn)/n, где rv является постоянной величиной, относящейся к геометрическому строению клапана.
rv = 1;
objfun = Pi rv^2 (1/n) Sum[r[i], {i, 1, n}];
Выберать начальные точки для переменных.
initpts = Table[.5 (rmin + rmax), {i, 1, n}];
Решить задачу максимизации.
sol = FindMaximum[
Join[{objfun}, varbounds, convexconstr, rchangeconstr],
Thread[vars, initpts]];
Hекоторые самые большие радиусы максимальны, .
Table[r[i], {i, 95, 100}] /. sol[[2]]
Отобразить решение данной задачи на графике.