×
 

8.4 Пример использования команды

В качестве примера использования Комплексной оптимизации с ограничениями можно привести расчет дальности полета камня. Камень бросают вверх под различными углами к горизонту с одинаковой скоростью. В момент, когда высота становится равной – 0.001 [m], расчет останавливается (камень упал на землю). Оптимизируемым параметром в данном примере является угол бросания камня (скаляр angle), а критерием – дальность полета камня (датчик dist).
Скаляр angle имеет начальное значение 25 [deg], левая граница – 25 [deg], правая граница – 55 [deg]. Осуществляется поиск угла при котором достигается максимум дальности.
 
Файл проекта
point point1=point( 0 [ m ], 0 [ m ], 0 [ m ] );
solid solid1=sphere( point1, 0.1 [ m ], mass = 1 [ kg ] );
color color1=index( 25 );
body stone=body( color = color1 );
body stone < ( solid1 );
body ground=body( color = RGB( 229, 229, 229 ) );
sensor dist=bodyDisplacement( ground, point1, projectX, stone, point1 );
scalar angle=25 [deg];
node node3=node( point1, 0 [ deg ], 0 [ deg ], angle, color = index( 36 ) );
condition condition1=transVelocity( ground, vectorX( node3 ), stone, point1, 6 [m/s] );
gravity gravity1=parallel( reverse( projectY ), g = 9.807 [ m/ s2 ] );
sensor height=bodyDisplacement( ground, point1, projectY, stone, point1 );
reform reform1=stop( );
event event1=reformsBySensor( list( reform1 ), height, -0.001 [ m ] );
command dynamics=constRK4( 2 [s], 0.01 [s], stepOut = 1, minTimeOut = 0 );
command OPT=optimizeComplex( NelderMead:,
list( designVariable( angle, 25 [deg], 1, lowerBound = 25 [deg], upperBound = 55 [deg] ) ), list( dist ), list( 1 ),
list( maximum: ), 0.0001, 100, dynamics );
 
/\///////////////////////////////////////////////////////////////////////////////////
set ground = ground;
 
/\///////////////////////////////////////////////////////////////////////////////////
/\ Единицы измерения;
set angle = deg;
 
На рис. 18 представлены результаты проведения Комплексной оптимизации с ограничениями.
 
Рис. 18. Результаты Комплексной оптимизации
 
Ниже представлена таблица результатов Комплексной оптимизации с ограничениями (формат TBL).
 
Таблица результатов
// Комплексная оптимизация с ограничениями
// Проект: ComplexOpt.elr
// Команда: OPT
// Результат: I: Расчет успешно завершен, найдена оптимальная точка
6
НомерИтерации []
angle  [deg]
dist  [m]
ЦелеваяФункция []
КритерийОптимальности []
ВыполнениеОграничений []
// НомерИтерации angle ЦелеваяФункция КритерийОптимальности ВыполнениеОграничений
1    25.000000 2.814175  -2.814175 0.206130  0.000000
2    42.188734 3.654289  -3.654289 0.007797  0.000000
3    42.188734 3.654289  -3.654289 0.000784  0.000000
4    45.053523 3.671838  -3.671838 0.007990  0.000000
5    45.053523 3.671838  -3.671838 0.002096  0.000000
6    45.053523 3.671838  -3.671838 0.000474  0.000000
7    45.053523 3.671838  -3.671838 0.000093  0.000000
 
Из таблицы видно, что оптимальное значение угла бросания камня – 45.053523 [deg], а дальность полета – 3.671838 [m].