Разработка математической модели и исследование теплотехнической системы
Курсовой проект - Менеджмент
Другие курсовые по предмету Менеджмент
±одные параметры-----------------G0,G1,G3,G4,G7;
double h0,h1,h5,h6;
//-------------------Вычисляемые (зависимые) параметры-----------------G2,G5,G6,G8,G9;
double h2,h3,h4,h7,h8;
//-------------------Границы интервала изменения Gk-----------------FreeGmin,FreeGmax;
//-------------------Количество узлов интерпоолирования-----------------N=1000;
//-------------------Выходной файл с результатами-----------------FileOut;
//Internal variablespchFileName[40];nChoice=0;
double *pfFreeG=NULL;
//Функция, которая получает данные, введённые пользователем
void UserInput(){1){<<"Ignoring invalid input. fi2=0.99 (default)."<<endl;=0.99;
}1){<<"Ignoring invalid input. fi3=0.98 (default)."<<endl;=0.98;
}1){<<"Ignoring invalid input. fi4=0.97 (default)."<<endl;=0.97;
}1){<<"Ignoring invalid input. fi7=0.96 (default)."<<endl;=0.96;
}1){<<"Ignoring invalid input. fi8=0.95 (default)."<<endl;=0.95;
}Gmin;(Gmin<=0){<<"Ignoring invalid input. Minimum G="<<(Gmin=1)<<" (default)."<<endl;
}Gmax;(Gmax<3*Gmin){<<"Ignoring invalid input. Maximum G="<<(Gmax=10*Gmin)<<" (default)."<<endl;
}(Gmin=G3+Gmin=0.5*G1;=Gmin;=Gmax;<<"What parameter you whant to be variable: G0 (enter 0), G1 (enter 1), "
"G3 (enter 3), G4 (enter 4),G7 (enter 7): ";nChoice;>>nChoice;(nChoice){0:=&G0;;1:=&G1;;3:=&G3;;4:=&G4;;7:=&G7;;:<<"Ignoring invalid input. Chosed G1 (default)."<<endl;=&G1;
}
>pchFileName;(strlen(pchFileName)==0){pchFileName;(strlen(pchFileName)==0){<<"Ignoring invalid input. File will be \"output.txt\" (default)"<<endl;
strcpy(pchFileName,"output.txt");
}
}
//Эта функция нужна для отладки - чтобы проверить выполнение балансовых соотношений
void ASSERT_BALANCE(){
/*1*/assert(IS_ZERO(G2+G1-G0));
/*2*/assert(IS_ZERO(G3*h2+G1*h3-fi2*(G3*h1+G1*h0)));
/*3*/assert(IS_ZERO(G4-G3-G5));assert(IS_ZERO(G4*h4-fi3*(G3*h2+G5*h5)));
/*4*/assert(IS_ZERO(G4*h5+G2*h6-fi4*(G2*h0+G4*h4)));
/*5*/assert(IS_ZERO(G6+G5-G4));
/*6*/assert(IS_ZERO(G7+G8-G1));
/*7*/assert(IS_ZERO(G9-G2-G7));assert(IS_ZERO(G9*h7-fi7*(G2*h6+G7*h3)));
/*8*/assert(IS_ZERO(G0-G8-G9));assert(IS_ZERO(G0*h8-fi8*(G8*h3+G9*h7)));
}
//Вычисляет зависимые переменные G и h по независимым G и h
void CalcDependent_G_h(){=G0-G1;=G4-G3;=G3;=G1-G7;=G0-G1+G7;=1/(fi4*fi3*G1)*(fi4*G0*h0+fi4*fi3*fi2*G3*h1-fi4*(1-fi3*fi2)*G1*h0-*fi3*G3*h5-(1-fi4*fi3)*G4*h5-(G0-G1)*h6);=(fi2*(G1*h0+G3*h1)-G1*h3)/G3;=fi3/G4*(fi2*(G1*h0+G3*h1)-G1*h3+(G4-G3)*h5);=fi7*((G0-G1)*h6+G7*h3)/(G0-G1+G7);=fi8*(G9*h7+G8*h3)/G0;_BALANCE();
}
//Проверяет выполнение ограничений на минимальные и максимальные значения по G и по h
bool CheckConstraints(){(G0h245max)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();0)){(TheKPD<=1);<<"*";(KPDmax<TheKPD){=TheKPD;
MaximizingG=*pfFreeG;
}
}<<endl;
}<<endl;(IS_ZERO(KPDmax+INFTY)){//no solutions, sorry...<<"No solutions."<<endl;<<"No solutions."<<endl;false;
}else{
*pfFreeG=MaximizingG;_G_h();(IS_ZERO(KPD()-KPDmax));(FileOut);(cout);true;
}
}
//Точка входа в программуmain(){();();();();
}
. ЧИСЛЕННОЕ ИССЛЕДОВАНИЕ И АНАЛИЗ ПОЛУЧЕННЫХ РЕЗУЛЬТАТОВ
Выводим результаты расчёта программы:
Результаты для следующих данных:
fi2=0.97 fi3=0.96 fi40.98 fi7=0.99 fi8=0.94
Максимизация проводится по параметру G1, пробегаю?/p>