QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5175|回复: 4
打印 上一主题 下一主题

[分享][原创]单纯形法的程序代码,程序中不是用纯粹的VC++,输出函数用的是printf(

[复制链接]
字体大小: 正常 放大

1

主题

0

听众

18

积分

升级  13.68%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2006-7-19 15:05 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<p>#include&lt;stdio.h&gt;<br/>#include&lt;iostream.h&gt;<br/>#include&lt;math.h&gt;<br/>float matrix[100][100],x[100];<br/>int a[100];<br/>int m,n,s,type;<br/>int indexe,indexl,indexg;<br/>/////////////////////////////////<br/>void jckxj()//基础可行解<br/>{<br/>&nbsp;int i,j;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //基础可行解即为 非基变量对应的x=b, 基变量对应的解为0<br/>&nbsp;for(i=0;i&lt;n;i++)<br/>&nbsp;&nbsp;for(j=0;j&lt;s;j++)<br/>&nbsp;&nbsp;&nbsp;if(matrix[j]==1&amp;&amp;a[j]==1)<br/>&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;x[j]=matrix;<br/>&nbsp;&nbsp;&nbsp;&nbsp;j=s;<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;for(i=0;i&lt;s;i++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(a==0)x=0;<br/>}</p><p>int rj()//基解矩阵<br/>{<br/>&nbsp;int i;<br/>&nbsp;for(i=0;i&lt;s;i++)<br/>&nbsp;&nbsp;if(fabs(matrix[n])&gt;=0.000001)<br/>&nbsp;&nbsp;&nbsp;if(matrix[n]&lt;0)return 0;<br/>&nbsp;&nbsp;&nbsp;return 1;<br/>}</p><p>int Min()//求最小的<br/>{<br/>&nbsp;&nbsp;&nbsp; int i,temp=0;<br/>&nbsp;float min=matrix[n][0];<br/>&nbsp;for(i=1;i&lt;s;i++)<br/>&nbsp;&nbsp;if(min&gt;matrix[n])<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;min=matrix[n];<br/>&nbsp;&nbsp;&nbsp;temp=i;<br/>&nbsp;&nbsp;}<br/>&nbsp;return temp;<br/>}<br/>/////////////////////////////////<br/>void JustArtificial()//人工变量<br/>{<br/>&nbsp;int i;<br/>&nbsp;for(i=m+indexe+indexl;i&lt;s;i++)<br/>&nbsp;&nbsp;if(fabs(x)&gt;=0.000001)<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;cout&lt;&lt;"NO Answer\n";<br/>&nbsp;&nbsp;&nbsp;return;<br/>&nbsp;&nbsp;}<br/>}<br/>/////////////////////<br/>int Check(int in)//检验<br/>{<br/>&nbsp;int i;<br/>&nbsp;float maxl=-1;<br/>&nbsp;for(i=0;i&lt;n;i++)<br/>&nbsp;&nbsp;if(fabs(matrix[in])&gt;=0.000001&amp;&amp;maxl&lt;matrix/matrix[in])<br/>&nbsp;&nbsp;&nbsp;maxl=matrix/matrix[in];<br/>&nbsp;&nbsp;if(maxl&lt;0)<br/>&nbsp;&nbsp;&nbsp;return 1;<br/>&nbsp;&nbsp;return 0;<br/>}</p><p>int SearchOut(int *temp,int in)//出基变量<br/>{<br/>&nbsp;int i;<br/>&nbsp;float min=10000;<br/>&nbsp;for(i=0;i&lt;n;i++)<br/>&nbsp;&nbsp;if(fabs(matrix[in])&gt;=0.000001&amp;&amp;(matrix/matrix[in]&gt;=0)<br/>&nbsp;&nbsp;&nbsp;&amp;&amp;min&gt;matrix/matrix[in])<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;min=matrix/matrix[in];<br/>&nbsp;&nbsp;&nbsp;*temp=i;<br/>&nbsp;&nbsp;}&nbsp;&nbsp;<br/>&nbsp;for(i=0;i&lt;s;i++)<br/>&nbsp;&nbsp;if(a=1&amp;&amp;matrix[*temp]==1)<br/>&nbsp;return i;<br/>}<br/>/////////////////////////////////<br/>void Mto(int in,int temp)<br/>{<br/>&nbsp;int i;<br/>&nbsp;for(i=0;i&lt;=s;i++)<br/>&nbsp;&nbsp;if(i!=in)<br/>&nbsp;&nbsp;&nbsp;matrix[temp]=matrix[temp]/matrix[temp][in];<br/>&nbsp;&nbsp;matrix[temp][in]=1;<br/>}<br/>/////////////////////////////<br/>void Be(int temp,int in)//初等变换<br/>{<br/>&nbsp;int i,j;<br/>&nbsp;float c;<br/>&nbsp;for(i=0;i&lt;=n;i++)<br/>&nbsp;{<br/>&nbsp;&nbsp;c=matrix[in]/matrix[temp][in];<br/>&nbsp;&nbsp;if(i!=temp)<br/>&nbsp;&nbsp;&nbsp;for(j=0;j&lt;=s;j++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;matrix[j]=matrix[j]-matrix[temp][j]*c;<br/>&nbsp;}<br/>}<br/>//////////////////////////<br/>void Achange(int in,int out)//出基入基转换<br/>{<br/>&nbsp;int temp=a[in];<br/>&nbsp;a[in]=a[out];<br/>&nbsp;a[out]=temp;<br/>}<br/>////////////////////////<br/>void Print()<br/>{<br/>&nbsp;int i,j,k,temp=0;<br/>&nbsp;for(i=0;i&lt;n;i++)<br/>&nbsp;{<br/>&nbsp;&nbsp;for(k=temp;k&lt;s;k++)<br/>&nbsp;&nbsp;&nbsp;if(a[k]==1)<br/>&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;printf(" %d ",k);<br/>&nbsp;&nbsp;&nbsp;&nbsp;temp=k+1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;k=s;<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;for(j=0;j&lt;=s;j++)<br/>&nbsp;&nbsp;&nbsp;printf( " %.0f ",matrix[j]&nbsp; );<br/>&nbsp;&nbsp;printf("\n");<br/>&nbsp;}<br/>&nbsp;printf("Rj\n");<br/>&nbsp;for(j=0;j&lt;=s;j++)<br/>&nbsp;&nbsp;printf(" %.0f ",matrix[n][j] );<br/>&nbsp;printf("\n");<br/>}<br/>////////////////////////<br/>void InitPrint()<br/>{<br/>&nbsp;int i;<br/>&nbsp;printf(" X ");<br/>&nbsp;for(i=0;i&lt;s;i++)<br/>&nbsp;&nbsp;printf(" %d ",i);<br/>&nbsp;&nbsp;&nbsp; printf(" b \n" );<br/>&nbsp;printf("&nbsp; " );<br/>&nbsp;printf("\n" );<br/>}<br/>//////////////////<br/>void Result()<br/>{<br/>&nbsp;int i;<br/>&nbsp;printf( "(" );<br/>&nbsp;for(i=0;i&lt;s;i++)<br/>&nbsp;&nbsp;printf( "%.0f",x );<br/>&nbsp;printf( ")" );<br/>&nbsp;if(type==1)<br/>&nbsp;&nbsp;printf("\nZmax= %.0f\n" ,matrix[n] );<br/>&nbsp;else printf("\nZmin=%.0f\n", matrix[n] );<br/>}<br/>//////////////////////<br/>void PrintResult()<br/>{<br/>&nbsp;if(type==0)<br/>&nbsp;&nbsp;printf("the Minimal: %.2f\n", matrix[n] );<br/>&nbsp;else <br/>&nbsp;&nbsp;printf("the Maximum: %.2f\n", matrix[n] );<br/>}<br/>////////////////////////////////<br/>void Merge(float nget[][100],float nlet[][100],float net[][100],float b[])//合并 <br/>{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //置成我们需要的矩阵,最后一列置成0 <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 1&nbsp; 2&nbsp; 1&nbsp; 0&nbsp; 0&nbsp; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 4&nbsp; 0&nbsp; 0&nbsp; 1&nbsp; 0&nbsp; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 0&nbsp; 4&nbsp; 0&nbsp; 0&nbsp; 1&nbsp; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //-2 -3&nbsp; 0&nbsp; 0&nbsp; 0&nbsp; 0<br/>&nbsp;int i,j;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;for(i=0;i&lt;n;i++)<br/>&nbsp;{<br/>&nbsp;&nbsp;for(j=m;j&lt;m+indexe;j++)<br/>&nbsp;&nbsp;&nbsp;if(nget[j-m]!=-1)matrix[j]=0;<br/>&nbsp;&nbsp;&nbsp;else matrix[j]=-1;<br/>&nbsp;&nbsp;for(j=m+indexe;j&lt;m+indexe+indexl;j++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(nlet[j-m-indexe]!=1)matrix[j]=0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;else matrix[j]=1;<br/>&nbsp;&nbsp;for(j=m+indexe+indexl;j&lt;s;j++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(net[j-m-indexe-indexl]!=1)matrix[j]=0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;else matrix[j]=1;<br/>&nbsp;}<br/>&nbsp;for(i=m;i&lt;m+indexe+indexl;i++)&nbsp; //将目标函数中人工变量的系数补为0<br/>&nbsp;&nbsp;matrix[n]=0;<br/>&nbsp;for(i=m+indexe+indexl;i&lt;s;i++)<br/>&nbsp;&nbsp;matrix[n]=100;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //置成M<br/>&nbsp;for(i=0;i&lt;n;i++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //把b[]的值赋给matrix <br/>&nbsp;&nbsp;&nbsp;&nbsp; matrix=b;<br/>&nbsp;matrix[n]=0;<br/>}</p><p><br/>///////////////////////////<br/>void ProcessA()//初始a[]&nbsp;&nbsp;&nbsp; a[]是标记基变量,若为基变量则为0,若为非基变量则为1<br/>{<br/>&nbsp;int i;<br/>&nbsp;for(i=0;i&lt;m+indexe;i++)<br/>&nbsp;&nbsp;a=0;<br/>&nbsp;for(i=m+indexe;i&lt;s;i++)<br/>&nbsp;&nbsp;a=1;<br/>}</p><p>////////////////////////////////<br/>void Input(float b[],int code[])<br/>{<br/>&nbsp;int i=0;int j=0;<br/>&nbsp;cout&lt;&lt;"The equator variable and Restrictor\n";<br/>&nbsp;cin&gt;&gt;m&gt;&gt;n;<br/>&nbsp;for(i=0;i&lt;n;i++)<br/>&nbsp;{<br/>&nbsp;&nbsp;cout&lt;&lt;"Inputb[] and Restrictor code 0:&lt;= 1:= 2:&gt;=\n";//输入b[]和限制符号 &lt;= ,= ,&gt;=<br/>&nbsp;&nbsp;cin&gt;&gt;b&gt;&gt;code;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //分别输入到b 和&nbsp; code 中<br/>&nbsp;&nbsp;cout&lt;&lt;"The 系数&nbsp; \n";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //提示输入每个限制条件的系数<br/>&nbsp;&nbsp;for(j=0;j&lt;m;j++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;cin&gt;&gt;matrix[j];<br/>&nbsp;}<br/>&nbsp;cout&lt;&lt;"the type 0:Min 1:max\n";//输入要求是类型极大还是极小 0:Min 1:max<br/>&nbsp;do{<br/>&nbsp;&nbsp;cin&gt;&gt;type;<br/>&nbsp;&nbsp;if(type!=0&amp;&amp;type!=1)<br/>&nbsp;&nbsp;&nbsp;cout&lt;&lt;"error,ReInput!\n";<br/>&nbsp;}while(type!=0&amp;&amp;type!=1);<br/>&nbsp;cout&lt;&lt;"the Z\n";<br/>&nbsp;for(i=0;i&lt;m;i++)<br/>&nbsp;&nbsp;cin&gt;&gt;matrix[n];<br/>&nbsp;if(type==1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //如果是求极大,把它转化为极小来做,系数全部反号<br/>&nbsp;&nbsp;for(i=0;i&lt;m;i++)<br/>&nbsp;&nbsp;&nbsp;matrix[n]=-matrix[n];<br/>}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p><p><br/>//////////////////&nbsp;&nbsp;&nbsp; <br/>void Xartificial()//消去人工变量<br/>{<br/>&nbsp;int i,j,k;<br/>&nbsp;<br/>&nbsp;if(indexg!=0)<br/>&nbsp;{<br/>&nbsp;&nbsp;for(i=m+indexe+indexl;i&lt;s;i++)<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;for(j=0;j&lt;n;j++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(matrix[j]==1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(k=0;k&lt;=s;k++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matrix[n][k]=matrix[n][k]-matrix[j][k]*100;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=n;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;}<br/>&nbsp;}<br/>}</p><p>////////////////////////////////////////////////<br/>void Process(float c[][100],int row,int vol)<br/>{<br/>&nbsp;int i;<br/>&nbsp;for(i=0;i&lt;n;i++)&nbsp;&nbsp;&nbsp;&nbsp; //i =0 时置第一列为 1&nbsp; 0&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; i=1 时置第2列为 0&nbsp; 1&nbsp; 0&nbsp; <br/>&nbsp;&nbsp;if(i!=row)c[vol]=0;<br/>}<br/>//////////////////////<br/>void Start(float b[],int code[])<br/>{<br/>&nbsp;int i;<br/>&nbsp;float nget[100][100],nlet[100][100],net[100][100];<br/>&nbsp;indexe=indexl=indexg=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //indexl 表示松弛变量数&nbsp;&nbsp; indexg 表示人工变量数, indexe表示减去的松弛变量数<br/>&nbsp;for(i=0;i&lt;n;i++)<br/>&nbsp;{<br/>&nbsp;&nbsp;if(code==0)&nbsp;&nbsp;&nbsp; //如果是&lt;=<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;nlet[indexl++]=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //松弛变量数+1 且置成相应的标记<br/>&nbsp;&nbsp;&nbsprocess(nlet,i,indexl-1);//传 net, 行号,indexl-1 过去<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;if(code==1)<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;net[indexg++]=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //人工变量数+1且置成相应的标记<br/>&nbsp;&nbsp;&nbsprocess(net,i,indexg-1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //将刚加入的列单位化 <br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;if(code==2)<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;net[indexg++]=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //人工变量数+1 且置成相应的标记<br/>&nbsp;&nbsp;&nbsp;nget[indexe++]=-1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //剩余变量数+1 且置成相应的标记<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Process(net,i,indexg-1)rocess(nlet,i,indexe-1);<br/>&nbsp;&nbsp;}<br/>&nbsp;}<br/>&nbsp;s=indexe+indexl+indexg+m;&nbsp;&nbsp; //变量总个数<br/>&nbsp;Merge(nget,nlet,net,b);<br/>&nbsprocessA();<br/>&nbsp;InitPrint();<br/>&nbsp;Xartificial();<br/>}</p><p>void Simplix()//单纯形法<br/>{<br/>&nbsp;int in,out,temp=0;<br/>&nbsp;while(1)<br/>&nbsp;{<br/>&nbsp;&nbsp;jckxj();<br/>&nbsp;&nbsprint();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Result();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!rj()) in=Min();<br/>&nbsp;&nbsp;else<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;if(indexg!=0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;JustArtificial();<br/>&nbsp;&nbsp;&nbsprintResult();<br/>&nbsp;&nbsp;&nbsp;return;<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;if(Check(in))<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;cout&lt;&lt;"No Delimition\n";<br/>&nbsp;&nbsp;&nbsp;return;<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;out=SearchOut(&amp;temp,in);<br/>&nbsp;&nbsp;Mto(in,temp);<br/>&nbsp;&nbsp;Be(temp,in);<br/>&nbsp;&nbsp;Achange(in,out);<br/>&nbsp;}<br/>}</p><p>void main()<br/>{<br/>&nbsp;int code[100];//输入符号标记<br/>&nbsp;float b[100];<br/>&nbsp;Input(b,code);//初始化<br/>&nbsp;Start(b,code);//标准化行<br/>&nbsp;Simplix();<br/>}<br/>/*模拟输入数据 <br/>&nbsp;max z=2 x1 + 3 x2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s.t {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x1 + 2 x2 &lt;=8<br/>&nbsp;&nbsp;&nbsp;&nbsp; 4 x1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;=16<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 x2&lt;=12<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x1,x2&gt;=0<br/>&nbsp;&nbsp;&nbsp;}</p><p>2 3 8 0 1 2 16 0 4 0 12 0 0&nbsp; 4<br/>*/</p>
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
hjhmxh        

0

主题

3

听众

21

积分

升级  16.84%

该用户从未签到

新人进步奖

回复

使用道具 举报

madio        

3万

主题

1310

听众

5万

积分

  • TA的每日心情
    奋斗
    2024-7-1 22:21
  • 签到天数: 2014 天

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

    社区QQ达人 邮箱绑定达人 优秀斑竹奖 发帖功臣 风雨历程奖 新人进步奖 最具活力勋章

    群组数学建模培训课堂1

    群组数学中国美赛辅助报名

    群组Matlab讨论组

    群组2013认证赛A题讨论群组

    群组2013认证赛C题讨论群组

    回复

    使用道具 举报

    yangwenli        

    7

    主题

    4

    听众

    396

    积分

    升级  32%

    该用户从未签到

    新人进步奖

    好厉害,lz的程序不错。
    1 u' ]0 L9 w* h& n8 j% |4 t不过用gsl科学计算库的话可以省下很多步骤
    回复

    使用道具 举报

    梦紫涵        

    0

    主题

    3

    听众

    10

    积分

    升级  5.26%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-6-4 12:21 , Processed in 0.574886 second(s), 77 queries .

    回顶部