Optimisez la forme d'une came
Dessinez la forme d'une came convexe pour maximiser la zone de l'ouverture de la vanne pour une rotation de la came, avec des contraintes sur les rayons de la came.
Supposons que la forme de la came soit circulaire sur un angle de de sa circonférence avec un rayon et est de forme symétrique sur le reste .
Les variables de conception , , , , , représentent le rayon de la came aux angles équidistants distribués sur un angle de , la moitié supérieure de la partie non circulaire de la came.
n = 100; vars = Array[r, n];
Chaque rayon est contraint de tomber dans l'intervalle .
rmin = 1; rmax = 2;
varbounds = Table[rmin <= r[i] <= rmax, {i, 1, n}];
Entrez l'angle défini ci-dessus.
\[Theta] = 2 Pi/(5 (n + 1));
Les contraintes de convexité sont exprimées par le système des inégalités.
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]];
En utilisant , le système peut être réexprimé comme suit. Notez que est le rayon du point sur la partie circulaire de la came et est donc égal à .
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};
Une contrainte sur le taux de variation du rayon est exprimé en termes du paramètre comme .
\[Alpha] = 1.5; rchangeconstr =
Table[-\[Alpha] <= (r[i + 1] - r[i])/\[Theta] <= \[Alpha], {i, 0,
n}] /. {r[0] -> rmin, r[n + 1] -> rmax};
La fonction objective (aire d'ouverture de la vanne), est supposée avoir une relation linéaire simple avec les variable de conception donné comme , où est une constante liée à la géométrie de la vanne.
rv = 1;
objfun = Pi rv^2 (1/n) Sum[r[i], {i, 1, n}];
Choisissez les points initiaux pour les variables.
initpts = Table[.5 (rmin + rmax), {i, 1, n}];
Résolvez le problème de maximisation.
sol = FindMaximum[
Join[{objfun}, varbounds, convexconstr, rchangeconstr],
Thread[vars, initpts]];
Notez que plusieurs des plus grands rayons sont au maximum .
Table[r[i], {i, 95, 100}] /. sol[[2]]
Tracez la solution.