Разработка алгоритма и его программной реализациидля пэвм для анализа системы
} //Проверяет выполнение ограничений на минимальные и максимальные значения по G и по h bool CheckConstraints(){(G0<Gmin||G0>Gmax)return false;(G1<Gmin||G1>Gmax)return false;(G2<Gmin||G2>Gmax)return false;(G3<Gmin||G3>Gmax)return false;(G4<Gmin||G4>Gmax)return false;(G5<Gmin||G5>Gmax)return false;(G6<Gmin||G6>Gmax)return false;(G7<Gmin||G7>Gmax)return false;(G8<Gmin||G8>Gmax)return false;(G9<Gmin||G9>Gmax)return false;(h0<h3678min||h0>h3678max)return false;(h3<h3678min||h3>h3678max)return false;(h6<h3678min||h6>h3678max)return false;(h7<h3678min||h7>h3678max)return false;(h8<h3678min||h8>h3678max)return false;(h1<h245min||h1>h245max)return false;(h2<h245min||h2>h245max)return false;(h4<h245min||h4>h245max)return false;(h5<h245min||h5>h245max)return false;true; } //оптимизируемая величинаKPD(){(G0*h8+G6*h5)/(G0*h0+G3*h1); } //Вывести решение (на экран или в файл в зависимости от параметра out) void PrintSolution(ostream &out){<<" G0="<<G0<<endl;<<" G1="<<G1<<endl;<<" G2="<<G2<<endl;<<" G3="<<G3<<endl;<<" G4="<<G4<<endl;<<" G5="<<G5<<endl;<<" G6="<<G6<<endl;<<" G7="<<G7<<endl;<<" G8="<<G8<<endl;<<" G9="<<G9<<endl;<<" h0="<<h0<<endl;<<" h1="<<h1<<endl;<<" h2="<<h2<<endl;<<" h3="<<h3<<endl;<<" h4="<<h4<<endl;<<" h5="<<h5<<endl;<<" h6="<<h6<<endl;<<" h7="<<h7<<endl;<<" h8="<<h8<<endl;<<"Value of KPD="<<KPD()<<endl; } //Инициализация - подготовка внутренних переменных, //а также заполнение "шапки" при выводе в файл void Init(){.open(pchFileName); FileOut<<"Результаты для следующих данных: "<<endl; FileOut<<" fi2="<<fi2<<" fi3="<<fi3<<" fi4=" <<fi4<<" fi7="<<fi7<<" fi8="<<fi8<<endl; FileOut<<" Максимизация проводится по параметру "; if(pfFreeG==&G0){<<"G0"; }else if(pfFreeG==&G1){<<"G1"; }else if(pfFreeG==&G3){<<"G3"; }else if(pfFreeG==&G4){<<"G4"; }else if(pfFreeG==&G7){<<"G7"; }else{(!"Нет такого свободного G."); }<<", пробегающему отрезок ["<<FreeGmin<<";"<<FreeGmax<<"] с шагом " <<(FreeGmax-FreeGmin)/N<<"."<<endl;<<" Минимальное G: "<<Gmin<<endl;<<" Максимальное G: "<<Gmax<<endl;<<" Минимальное h для h1, h2, h4, h5: "<<h245min<<endl;<<" Максимальное h для h1, h2, h4, h5: "<<h245max<<endl;<<" Минимальное h для h0, h3, h6, h7, h8: "<<h3678min<<endl;<<" Максимальное h для h0, h3, h6, h7, h8: "<<h3678max<<endl;<<" Начальные данные: "<<endl;_G_h();(FileOut);<<"Вычисление. "<<endl; } //Деинициализация - освобождение памяти, закрытие ресурсов //Тело функции пока пусто, т. к. ничего освобождать не надоDeinit(){ } //Главная функция - она осуществляет максимизацию bool Optimize(){KPDmax=-INFTY;MaximizingG;fRes=false;(int i=0;i<=N;++i){ *pfFreeG=FreeGmin+i*(FreeGmax-FreeGmin)/N;_G_h();TheKPD=KPD();<<*pfFreeG<<"\t"<<TheKPD<<"\t";(CheckConstraints()&&(TheKPD>0)){(TheKPD<=1);<<"*";(KPDmax<TheKPD){=TheKPD; |