#include <stdio.h>
#define M 42
#define N 20
int CalcheckinValue(double CB[],double **matrix,double checkin[],double Z[],int m,int Row)
{
int i,j,n=-1;
double Min=0;
double var;
double sum=0;
for(i=0;i<m;i++)
{ for(j=0;j<Row;j++)
// sum[i]+=CB[j]*matrix[j][i];
{
var=*((double*)matrix + m*j+ i);
sum+=CB[j]*var;
}
checkin[i]=Z[i]-sum;
sum=0;
}
for(i=0;i<m;i++)
if(Min>checkin[i])
{
Min = checkin[i];
n=i;
}
return n;
}
int CalcheckoutValue(double b[],double **matrix,double checkout[],int n,int Row,int col)
{
int i,m;
double var;
double Min=1000000;
for(i=0;i<Row;i++)
if(*((double*)matrix + col*i + n)==0)
checkout[i] =1000000;
else
{ var=*((double*)matrix +col*i + n);
checkout[i]=b[i]/var;
}
for(i=0;i<Row;i++)
if(Min>checkout[i]&&checkout[i]>0)
{
Min = checkout[i];
m=i;
}
return m;
}
void Alg(double Z[],double **matrix, double CB[], double **BMatrix, double checkout[], double checkin[], int x[],double b[],int m,int n)//自变量的序号
{
int RowIndex,ColumnIndex;//换出变量的行 换入变量的列
double s=0;
double RotatePoint=0;//旋转主元
double MultiNumber=0;// 化简标准型
int i,j;
double var ;
for(i=0;i<n;i++)
for(j=0;j<m-n;j++)
{
var= *((double*)matrix + m*i + j)*0.3;
b[i]-= var;
}
while(CalcheckinValue( CB,matrix,checkin,Z,m,n)!=-1)
{
ColumnIndex =CalcheckinValue( CB,matrix,checkin,Z,m,n);
RowIndex=CalcheckoutValue(b,matrix,checkout, ColumnIndex,n,m);
x[RowIndex]= ColumnIndex;
for(i=0;i<n;i++)
*((double*)BMatrix+i*(m+1)+0)=b[i];
for(i=0;i<n;i++)
for(j=1;j<m+1;j++)
{
*((double*)BMatrix+i*(m+1)+j)=*((double*)matrix + m*i+ j-1);
}
RotatePoint=*((double*)BMatrix+RowIndex*(m+1)+ColumnIndex+1);
for(i=0;i<m+1;i++)
*((double*)BMatrix+RowIndex*(m+1)+i)=*((double*)BMatrix+RowIndex*(m+1)+i)/RotatePoint;
for(i=0;i<n;i++)
{
if(i!=RowIndex)
{
MultiNumber=*((double*)BMatrix+i*(m+1)+ColumnIndex+1);
for(j=0;j<m+1;j++)
{ var=*((double*)BMatrix+RowIndex*(m+1)+j);
*((double*)BMatrix+i*(m+1)+j)=*((double*)BMatrix+i*(m+1)+j)-MultiNumber*var;
}
}
}
for(i=0;i<n;i++)
b[i]=*((double*)BMatrix+i*(m+1)+0);
for(i=0;i<n;i++)
for(j=1;j<m+1;j++)
*((double*)matrix + m*i + j-1)= *((double*)BMatrix+i*(m+1)+j);
CB[RowIndex]=Z[ColumnIndex];
}
}
int main()
{
//int RowIndex,ColumnIndex;//换出变量的行 换入变量的列
//double Z[30]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1};//目标函数的系数
//double b[2]={2,10};//约束方程的等式的右值
//double matrix[2][5]={-2,1,3,1,0,2,3,4,0,1};//约束方程的系数
//double matrix[8][30]={144,15,17,29,21,144,167,113,87.8,98.6,89.4,28,81,15,150,167,67.4,19,76,69,44.6,17,-1,0,0,0,0,0,0,0,
// 144,15,17,29,21,144,167,113,87.8,98.6,89.4,28,81,15,150,167,67.4,19,76,69,44.6,17,0,1,0,0,0,0,0,0,
// 144,15,17,29,21,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,
// 144,15,17,29,21,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,1,0,0,0,0,
// 0,0,0,0,0,0,167,113,87.8,98.6,89.4,28,81,15,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,
// 0,0,0,0,0,0,167,113,87.8,98.6,89.4,28,81,15,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0.0,
// 0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,167,67.4,19,76,69,44.6,17,0,0,0,0,0,0,-1,0,
// 0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,167,67.4,19,76,69,44.6,17,0,0,0,0,0,0,0,1
// };
//double b[8]={100000,110000,25000,27000,44000,45500,36000,38000};
//
//double CB[8]={1,1,1,1,1,1,1,1};//基变量的系数
//double BMatrix[8][31]={0};//扩转矩阵
//double checkout[8]={0};
//double checkin[30]={0};
//int x[8]={22,23,24,25,26,27,28,29};//自变量的序号
//double matrix[8][30]={144,15,17,29,21,144,167,113,87.8,98.6,89.4,28,81,15,150,167,67.4,19,76,69,44.6,17,-1,0,0,0,0,0,0,0,
// 144,15,17,29,21,144,167,113,87.8,98.6,89.4,28,81,15,150,167,67.4,19,76,69,44.6,17,0,1,0,0,0,0,0,0,
// 144,15,17,29,21,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,
// 144,15,17,29,21,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,1,0,0,0,0,
// 0,0,0,0,0,0,167,113,87.8,98.6,89.4,28,81,15,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,
// 0,0,0,0,0,0,167,113,87.8,98.6,89.4,28,81,15,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0.0,
// 0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,167,67.4,19,76,69,44.6,17,0,0,0,0,0,0,-1,0,
// 0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,167,67.4,19,76,69,44.6,17,0,0,0,0,0,0,0,1
// };
//DisheAmount dishesamount[M-N];
double Z[M]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
double matrix[N][M]={126.72,13.8,14.79,28.8,29.45,126.72,110.22,115.2,63,143,85.752,26.88,81,12.15,88.5,168.96,56.73,14.82,160.664,61.746,28.592,17.22,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
126.72,13.8,14.79,28.8,29.45,126.72,110.22,115.2,63,143,85.752,26.88,81,12.15,88.5,168.96,56.73,14.82,160.664,61.746,28.592,17.22,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
126.72,13.8,14.79,28.8,29.45,126.72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
126.72,13.8,14.79,28.8,29.45,126.72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,110.22,115.2,63,143,85.752,26.88,81,12.15,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,110.22,115.2,63,143,85.752,26.88,81,12.15,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,88.5,168.96,56.73,14.82,160.664,61.746,28.592,17.22,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,88.5,168.96,56.73,14.82,160.664,61.746,28.592,17.22,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
514.8,0,0,0,0,514.8,69.96,34.3,30.456,81,0,0,0,0,21.24,109.56,117.73,0,109.6,205.92,11.6,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,
514.8,0,0,0,0,514.8,69.96,34.3,30.456,81,0,0,0,0,21.24,109.56,117.73,0,109.6,205.92,11.6,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
205.92,13.8,17.4,31.68,9.5,205.92,31.68,0,20.844,44,12.56,33.6,0,48.6,6.49,91.74,9.15,448.5,15.176,135.912,6.48,206.64,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,
205.92,13.8,17.4,31.68,9.5,205.92,31.68,0,20.844,44,12.56,33.6,0,48.6,6.49,91.74,9.15,448.5,15.176,135.912,6.48,206.64,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
0,8.28,26.97,17.28,13.3,0,0,0,20.832,0,20.304,5.76,0,16.2,0,0,0,59.28,10.416,11.058,6.336,14.76,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,
0,8.28,26.97,17.28,13.3,0,0,0,20.832,0,20.304,5.76,0,16.2,0,0,0,59.28,10.416,11.058,6.336,14.76,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,
1.6192,0.4508,0.6612,2.1504,0.209,1.6192,0.4422,2.90325,0.7356,0.34,0.32368,1.1904,2.71,0,0,0.8844,0.3782,0.7488,0.54784,0.97942,1.23688,0.7544,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,
1.6192,0.4508,0.6612,2.1504,0.209,1.6192,0.4422,2.90325,0.7356,0.34,0.32368,1.1904,2.71,0,0,0.8844,0.3782,0.7488,0.54784,0.97942,1.23688,0.7544,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,
1,0,0,0,0,1,1,0.7,0.6,1,0.2,0,0,0,1,1,1,0,0.8,0.4,0.2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,
1,0,0,0,0,1,1,0.7,0.6,1,0.2,0,0,0,1,1,1,0,0.8,0.4,0.2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,
0,1,1,1,1,0,0,0,0.4,0,0.8,1,0,1,0,0,0,1,0.2,0.6,0.8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,
0,1,1,1,1,0,0,0,0.4,0,0.8,1,0,1,0,0,0,1,0.2,0.6,0.8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1};
double b[N]={90000,93000,10000,12000,40000,43000,34000,37000,80000,90000,10000,12000,16000,18000,1200,1500,500,600,700,800};
double CB[N]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};//基变量的系数
double BMatrix[N][M+1]={0};//扩转矩阵
double checkout[N]={0};
double checkin[M]={0};
double
alg.rar_不等式
版权申诉
72 浏览量
2022-09-21
04:21:22
上传
评论
收藏 3KB RAR 举报
周楷雯
- 粉丝: 80
- 资源: 1万+
最新资源
- 适用于tensorflow-2.11.0 CUDA版本11.2的cuDNN8.1版本
- 5Y study学习平台2016计算机基础-综合测试(8)_哔哩哔哩_bilibili_2580252704.mp4
- (大赛作品)STM32实现的F072RB NUCLEO智能家居控制.zip
- STM32实现的数字示波器源码+数字信号处理教程、配套实例.zip
- 【cookie续续】【cookie续续】【cookie续续】
- 低功耗STM32实现的F411开发板(原理图+PCB源文件+官方例程+驱动等).zip
- 基于stm32实现的 nucleo-L476的智能灯(操作说明+源码).zip
- 基于STM32实现的 NUCLEO板设计彩色LED照明灯(纯cubeMX开发).zip
- 基于STM32实现的 的联合调试侦听设备解决方案(原理图、PCB源文件、调试工具、视频).zip
- 基于STM32实现的 人群定位、调速智能风扇设计(程序、设计报告、视频演示).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈