ВЫБОР ЭНЕРГОСБЕРЕГАЮЩЕГО (ИЛИ БЕЗОПАСНОГО) МАРШРУТА СУДНА НА ОСНОВЕ СПУТНИКОВОЙ ИНФОРМАЦИИ

Болотов В.П., Гербек Э.Э., Сатаев А.Г.
 
Определение местоположения судна с помощью спутников стало привычным в судовождении. Однако не менее интересна и полезна для судоводителя графическая информация о той ситуации, в которой находится судно. Такой информацией могут быть направление и траектории движения слоев воды океана, движения потоков воздуха, движения льдин и айсбергов, дислокация транспортных морских средств и их траектория движения в данном районе, соленость воды и т.д. Эту информацию можно получить в результате обработки спутниковых фотоснимков поверхности Земли на судовых или береговых компьютерах.

Со спутника принимается фотоизображение театра действий на компьютер, который обрабатывая его, "снимает" облака и довольно точно представляет информацию о движении ветра, воды, дислокации судов и т.п. На основе этой информации можно корректировать движение судна в целях безопасности или оптимизации.

Рассмотрим конкретный пример. Судно (рис.1) движется из пункта р1 в пункт р2. Со спутника получены данные о направлении потока воды (или ветра), не совпадающего с курсом судна. Капитан судна принимает решение часть пути двигаться по течению воды, а затем повернуть в нужном направлении. Необходимо определить точку поворота. Для решения задачи классическими методами теории оптимизации требуются обширные знания из дифференциального исчисления и оптимального управления. Однако в теории оптимизации возможен и другой подход - через графическое представление дифференциальной зависимости в виде целевой функции (ЦФ), график которой наглядно показывает точку минимума. Из-за неточности графических построений и, особенно, сложившегося мнения о невозможности представления многомерных ЦФ графические методы использовались ограниченно, в основном - для ЦФ размерности не более трех.

Однако в системе "Вектор" эта проблема решена: возможны моделирование и анализ многомерных функций - построение их различных ортогональных проекций и изолиний, вычисление минимума/максимума на них и т.д., что делает данный подход доступным для пользователя, не знакомого с программированием, традиционно принятым в оптимизационных методах.

Итак, требуется определить маршрут движения судна из точки р1 в точку р2 из условия того, что часть пути судно может двигаться по течению воды (р1-p10). Известны скорость судна v1=12 миль/час, скорость течения v2=7 миль/час.

Формализация (алгоритмизация) задачи. Время движения судна по течению воды (р1p)  и далее по прямой (рp2) определяется как сумма t=s12/(v1+v2)+s11/v1 и должно стремиться к минимуму. Время является ЦФ, минимум которой дает минимальное значение времени движения судна по маршруту. Причем абсцисса минимального значения соответствует точке, где необходимо свернуть с потока. Длина части маршрута по течению s11 и части движения по прямой s12 вычисляется из соотношений:  s12 =| p-p1|, s11 = |p2-p| , где точка р определяется по формуле p=(1-s)p1 + sp10 при изменении s от нуля до единицы. Таким образом, задача сводится к простому перебору точек на прямой р1р10, вычислению времени на прохождение маршрута,  сравнению их и выбору из них наименьшего.

В системе "Вектор" наряду с автоматизированной обработкой (визуализацией ЦФ любой размерности, вычислением минимума/максимума, построением изолиний и т.п.) подготовленного массива ЦФ, например, на языке СИ, данная задача может быть легко реализована и на основе языка "Калькулятор" (см. приведенные ниже макрокоманды). В основе языка "Калькулятор" заложена возможность хранения данных в регистрах, вычислительная и рекурсивная работа с векторами и графикой. При этом все операции при работе с системой автоматически записываются в сценарий, который может быть оформлен в отдельную макрокоманду как самостоятельную программу (см. мк tprin построения отрезка прямой и обращений к ней из tship и tship1). На рис.1,2 показан графически результат моделирования данной задачи. Время движения судна по течению воды и вне его равно 15.0866 часа, что значительно меньше чем по прямой (t1=17.8924 час).

Приведенная задача является одной из многих, которые могут быть решены на основе расчетно-графического моделирования. В многомерном случае количество рекурсивных циклов будет увеличиваться последовательно на единицу, при этом график ЦФ можно последовательно изображать на ортогональных двумерных проекциях, количество которых также определяется размерностью ЦФ.
 

Рис. 1.                                                      Рис. 2.

 
 < tship> - МК  задания исходных данных и обращения к циклу 
: p1=10.,10.  p2=200.,110.   p10=250.,50.
: s1=12.   s2=7.   $ скорость судна и воды
$ Расстояния между портами по прямой:
s10 = $sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))
s11 = s10/s1   $ Время в пути по прямой
tprin : p101=p1 p102=p10  $ МК построения отрезка
tship1 : s=0.  p105=x1,s11*15.-110.

< tship1>  МК  рекурсивного цикла 
s > 1.001 ? exit
p=(1.-s)*p1+s*p10
s12= $sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1))/(s1+s2)
s11= $sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2))/s1
s40=s12+s11   $ время в пути
s40 < s90 ? s90=s40   $ в s11 min времени в пути
s40=s40*15.-110.        $  для лучшего вида графика
tprin : p101=p  p102= p2
tprin : p101=p105  p102=x, s40
n=s90*10000.
$ n <> 150865 ? exit      $ условие выхода при 2-м запуске МК
tship1 : s=s+0.05  p105=p102          $ рекурсивный вызов
 
< tprin> - МК  построения отрезка прямой  
_Линии_общего_назначения
 _Отрезок_прямой____________________________
 _Начальная_точка___=_( x101    y101    z101
 _Кoнeчная_точка____=_( x102    y102    z102
_Визуализация__по_стандартным_проекциям_ n