用c语言实现单纯形法的编程.doc

上传人:re****.1 文档编号:556582748 上传时间:2022-09-02 格式:DOC 页数:5 大小:18.50KB
返回 下载 相关 举报
用c语言实现单纯形法的编程.doc_第1页
第1页 / 共5页
用c语言实现单纯形法的编程.doc_第2页
第2页 / 共5页
用c语言实现单纯形法的编程.doc_第3页
第3页 / 共5页
用c语言实现单纯形法的编程.doc_第4页
第4页 / 共5页
用c语言实现单纯形法的编程.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《用c语言实现单纯形法的编程.doc》由会员分享,可在线阅读,更多相关《用c语言实现单纯形法的编程.doc(5页珍藏版)》请在金锄头文库上搜索。

1、用c语言实现单纯形法的编程#include stdio.h#include math.h#include int M,N;float c100,a100100,b100,CZ100,Dn100,th100,x100;int Fn100;int K,L,ths;float zy;int shuru();void findmm();void chang();main() float max_Z,sum=0,s=0;int i,j,r=0;if(!shuru() printf(ERROR!n);return 0;while(rN) r=0; for(j=0;j0)findmm(); if(ths=M

2、) goto loop; else chang(); else r+; loop:if(ths=M) printf(n此线性规划没有有限最优解!n); printf(n此线性规划最终迭代结果为:); printf(n Cj ); for(j=0;jN;j+) printf(%.3f ,cj);printf(n); printf(Cb Xb b ); for(j=0;jN;j+) printf( x%d ,j+1); printf( th ); for(i=0;iM;i+) printf(n%.1f ,CZi); printf(x%d ,Fni+1); printf(%.3f ,bi); for

3、(j=0;jN;j+) printf( %.3f ,aij); printf( %.3f ,thi); printf(n); printf( Dn ); for(j=0;jN;j+) printf( %.3f ,Dnj); printf(n);printf(n此时的解为:);sum=0;for(i=0;iM;i+) sum+=CZi*bi; printf(nx%d=%.3f,Fni+1,bi);max_Z=sum;printf(n此时目标函数的值为:Z= %.3fn,max_Z); else printf(n此线性规划最终迭代结果为:); printf(n Cj ); for(j=0;jN;j

4、+) printf(%.3f ,cj);printf(n); printf(Cb Xb b ); for(j=0;jN;j+) printf( x%d ,j+1); printf( th ); for(i=0;iM;i+) printf(n%.1f ,CZi); printf(x%d ,Fni+1); printf(%.3f ,bi); for(j=0;jN;j+) printf( %.3f ,aij); printf( %.3f ,thi); printf(n); printf( Dn ); for(j=0;jN;j+) printf( %.3f ,Dnj); printf(n);print

5、f(n故,目标函数的基解为:);sum=0;for(i=0;iM;i+) sum+=CZi*bi; printf(nx%d=%.3f,Fni+1,bi);max_Z=sum;printf(n目标函数的值为:max_Z= %.3fn,max_Z); system(pause);return 1;int shuru() int i,j;float sum=0; printf(请输入线性规划问题的约束条件个数M:); scanf(%d,&M); printf(请输入线性规划问题的决策变量个数N:); scanf(%d,&N);printf(请输入目标函数的系数:);for(i=0;iN;i+) sc

6、anf(%f,&ci);printf(请输入线性规划问题的约束矩阵:n);for(i=0;iM;i+) for(j=0;jN;j+) scanf(%f,&aij); scanf(%f,&bi);printf(请输入线性规划问题的初始基:n);for(j=0;jN;j+) scanf(%f,&xj);for(i=j=0;jN;j+)if(xj!=0) Fni=j;CZi=cj;i+;for(j=0;jN;j+) sum=0; for(i=0;iM;i+) sum+=CZi*aij; Dnj=cj-sum;return 1;void findmm() int i;int max,min;max=0

7、; K=max;for(i=1;iDnK) max=i; K=max;for(i=0;iM;i+) if(aiK!=0) thi=bi/aiK;min=i; else thi=-1; ths=0; for(i=0;iM;i+)if(thi0) ths=ths+1; for(i=0;i0)&(thithmin) min=i;L=min;zy=aLK;FnL=K;CZL=cK; void chang() int i,j;float t;for(j=0;jN;j+) aLj=aLj/zy;bL=bL/zy;for(i=0;iM;i+) if(i=L) continue; t=aiK; bi=bL*(-t)+bi; for(j=0;jN;j+) aij=aLj*(-t)+aij; t=DnK;for(j=0;jN;j+) Dnj=(-t)*aLj+Dnj;K=0; for(i=1;iDnK) K=i; for(i=0;iM;i+) if(aiK!=0) thi=bi/aiK; else thi=-1;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号