Действия достижения сильного успеха. Рассчитывается X γи Q γ. Наилучшая из точек α или β записывается на место наихудшей k-точки симплекса.
Действия отсутствия успеха. Рассчитывается X βи Q β. Далее выполняется действие по изменению симплекса при отсутствии успеха.
Действие по изменению симплекса при отсутствии успеха представляет собой альтернативу: если Q β≤ Q k, то точка β записывается на место k-точки, иначе, если точка β хуже точки k, выполняется процедура редукции симплекса.
При выполнении процедуры редукции симплекса все точки симплекса стягиваются к лучшей точке симплекса на половину своего прежнего удаления и далее выполняется процедура расчета значений целевой функции во всех точках симплекса.
5.8. КОДИРОВАНИЕ ТИПОВЫХ СТРУКТУР НА ЯЗЫКАХ ПРОГРАММИРОВАНИЯ
Обычно разработку алгоритмов программ совмещают с кодированием текста программы. Отдельное от программирования написание алгоритмов практически ничем не отличается от написания инструкций.
Кодирование программы должно осуществляться только с использованием стандартных структур! Запрещено использование меток, операторов безусловного перехода на метку (go to), операторов досрочного выхода из структуры break!
При кодировании на языке С оператор break может использоваться только при кодировании структуры switch.
При использовании другого процедурно-ориентированного языка программирования (не Pascal) необходимо предварительно закодировать на используемом языке программирования все описанные в этом подразделе стандартные структуры без изменения их логики!
Так, при программировании на языке С структура УНИВЕРСАЛЬНЫЙ ЦИКЛ — "ДО" будет включать операцию "!" (НЕ):
/* подготовка цикла */
do
{
/* Тело цикла */
…
}
while (! (L));
В приведенной выше структуре ненулевое значение переменной L соответствует окончанию выполнения цикла, а не его продолжению выполнения, как в операторе языка программирования! Использование "линией" операции (!) НЕ никак не удлинит программу. Современные компиляторы автоматически инвертируют логическое условие завершения цикла.
Структуре СЛЕДОВАНИЕ в программах могут соответствовать: выполнение всей программы; вызов процедуры.
Согласно стандарту проекта, АЛЬТЕРНАТИВА имеет четыре конструкции. Рассмотрим их запись на языке программирования Pascal.
Конструкция для одной альтернативы:
if L then begin
{Действие при L=True}
…
end;
Конструкция для двух альтернатив:
if L then begin
{Действие при L=True}
…
end
else
begin
{Действие при L=False}
…
End;
Первый вариант конструкции для нескольких альтернатив (ВЫБОРА):
if L1 then Begin
{Действие при L1=True}
end;
…
if L2 then
begin
{Действие при L2=True}
…
end;
if L3 then
begin
{Действие при L3=True}
…
end;
Второй вариант конструкции для нескольких альтернатив (ВЫБОРА):
Switch:= 0;
L1:=…;
L2:=…;
L3:=…;
…
if L1 then Switch:= 1;
if L2 then Switch:= 2;
if L3 then Switch:= 3;
…
case Switch of
1:begin
{Действие при L1=True}
…
end;
2:begin
{Действие при L2=True}
…
end;
3:begin
{Действие при L3=True}
…
end;
else
begin
{Вывод сообщения об ошибочном кодировании модуля}
…
end;
end; {End of Case}
Рассмотрим запись вариантов кодирования структуры АЛЬТЕРНАТИВА на языке программирования С.
Конструкция для одной альтернативы:
if (L)
{
/* Действие при L ≠ 0*/
…
}
Конструкция для двух альтернатив:
if (L)
{
/* Действие при L ≠ 0*/
…
}
else
{
/*Действие при L = 0*/
…
}
Первый вариант конструкции для нескольких альтернатив (ВЫБОРА)
if (L1)
{
/* Действие при L1 ≠ 0* /
…
}
else if (L2)
{
/* Действие при L2 ≠ 0*/
…
}
Читать дальше