⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dualsimplex.c

📁 这是关于对偶单纯算法的c语言程序
💻 C
字号:
xi_dsm(m, n, m1, mn1, a, k, x)

int m, n, m1, mn1, k[];
float a[5][7], x[];
{
	int i, mn, i0, j0, j;
	float c, g;
	
	mn=m+n;
	for(i=0; i<=m; i++)
		k[i]=n+i;
  loop120:
    c=1e+10;
    for(i=1; i<=m; i++)
    {
    	if(a[i][mn1] - c <= 0)
    	{
    		c=a[i][mn1];
    		i0=i;
    	}
    }
    if(c >= 0)
    {
    	for(i=1; i<=m ; i++)
    		x[i]=a[i][mn1];
    	for(i=1; i<=m ; i++)    	 
    		printf("\n I=%d, X[%d] = %f \n", k[i],k[i], x[i]);        
    	printf("\n F = %f\n", a[m1][mn1]);
    	return (0);
    }
    c=1e+10;
    for(j=1;j<=mn; j++)
    {
    	if(a[m1][j]<0)
    	{
    		g=a[m1][j]/a[i0][j];
    		if(g-c<0)
    		{
    			c=g;
    			j0=j;	
    		}	
    	}
    	
    }
    
    if(c==1e+10)
    {
    	printf("LP_NO_SOLUTION\n");
    	return (-1);	
    }
    
    k[i0]=j0;
    for(j=1; j<=mn1; j++)
    {
    	if(j !=j0 )
    	{
    		g=a[i0][j]/a[i0][j0];	
    		a[i0][j] = g;
    		for(i=1; i<=m1; i++)
    		{
    			if(i != i0)
    			a[i][j]=a[i][j]-a[i][j0]*g;	
    		}
    	}    	
    }
    for(i=1; i<=m1; i++)
    	a[i][j0]=0;
    a[i0][j0]=1;
    goto loop120;	

} /*End of Func*/

#include <stdio.h>
#include <math.h>

main()
{
	float a[5][7] = { {0, 0, 0, 0, 0, 0, 0},
					  {0,-3,-1, 1, 0, 0,-3},
					  {0,-4,-3, 0, 1, 0,-6},
					  {0,-1,-2, 0, 0, 1,-2},
					  {0,-2,-1, 0, 0, 0, 0}		
					};
    int k[4], rtn;
    float x[4];
    
    rtn = xi_dsm(3, 2, 4, 6, a, k, x);
} /*End of main*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -