Автор работы: Пользователь скрыл имя, 01 Ноября 2010 в 14:55, Не определен
Постановка задачи и код программы
cout<<endl<<"-----------
while (exitt(delta)==false) // смотрим всё ли элементы в е отрицательны
{
if (neogr(A)==true) {cout<<"no ogran";return 0;} // проверяем есть ли столбцы со всеми отрицательными элементами
if (((bp[nomer])!=(bp_free()+1))&
{
bp[nomer]=bp_free(
bp_[bp_free()]=1;
}
else {bp[nomer]=bp_free()+2;bp_[bp_
//пересчитываем матрицу А
Y0[nomer]=e[0];
Y0[1-nomer]=Y0[1-nomer]-
for (int i=0;i<n;i++)
{
A1[nomer][i]=e[i+
A1[1-nomer][i]=A[
}
for (int i=0;i<n;i++)
{delta[i]=C[i]-(C[bp[0]-
if (exitt(delta)==true)
{
cout << endl<<endl;
for (int i=0;i<nn;i++)
{
printf("%2.
cout<<" "<<"x";
printf("%1i"
cout<<" ";
printf("%2.
cout<<" ";
for (int j=0;j<n;j++)
{printf("%7.
cout << endl;
}
cout << " ";
for (int j=0;j<n;j++)
printf("%7.2f",delta[j])
cout << endl<< " "<<endl<<endl;
double aa[n];
for (int i=0;i<n;i++) aa[i]=0;
aa[bp[0]-1]=Y0[0];
aa[bp[1]-1]=Y0[1];
cout<<"б.п. {";
for (int i=0;i<n;i++) cout <<aa[i]<<" ";
cout <<"}"<<endl;
if (aa[0]<0.0001) C[0]=0;
cout<<"(.)max = ("<<C[0]*aa[0]<<";"<<C[1]*aa[
cout<<"function(.)max = " <<C[0]*aa[0]+C[1]*aa[1];
return 0;
}
s=maxi(delta); // ведущий столбец
// находим минимум
nomer=0;
if (((Y0[1]/A1[1][s])<0)||(A1[1][
{mini=(Y0[0]/A1[0][s]);
else {mini=(Y0[1]/A1[1][s]);nomer=
if ((A1[0][s])==0)
{mini=(Y0[1]/A1[1][s]);
v_e=A1[nomer][s];
e[0]=Y0[nomer]/v_e;
for (int i=0;i<n;i++)
{
e[i+1]=A1[nomer][
}
// вывод
for (int i=0;i<nn;i++)
{
printf("%2.0f",C[
cout<<" "<<"x";
printf("%1i",bp[i]
cout<<" ";
printf("%2.0f",Y0[
cout<<" ";
for (int j=0;j<n;j++)
printf("%7.2f",A1[
cout <<" ";
printf("%5.2f",
cout <<endl;
}
cout<<"-----------------
cout << " ";
for (int j=0;j<n;j++)
printf("%7.2f",delta[j])
cout << endl<< " ";
for (int j=0;j<n+1;j++)
{printf("%7.2f",e[j]);}
cout<<endl<<"-----------
update(A,A1);
}
return 0 }
Информация о работе Решение задач линейного программирования симплекс – методом