运筹学两阶段法C语言程序代码解决方案.doc

运筹学两阶段法C语言程序代码解决方案.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课 程 设 计 程 序 代 码 课程设计名称 运筹课程设计 专 业 信息管理与信息系统 班 级 140505班 学 生 姓 名 孙玉玲 王凤禹 王美玲 指 导 教 师   王亚君 2016年7月15日  PAGE \* MERGEFORMAT 13 #include stdio.h #include stdlib.h #define MAX 100 #define STP 100 int stop=1; //迭代记数变量 int status; //iterative迭代返回值:1唯一最优,0无界解,-1无穷多最优解 -2迭代超过限制次数 int step=1; //目前阶段 double a[MAX][MAX],b[MAX],c[MAX],temp_c[MAX],max=0; //方程组相关系数 int num_x; //变量个数 int num_st; //约束方程数 int num_ar=0; //人工变量个数 int arti[MAX]; //人工变量下标 int base[MAX]; //基变量下标 int ma_mi; //1为求最大值,2为求最小值 void create(); //建立方程组 void iterative(); //单纯型法迭代 void output(); //输出结果 void banner(); //打印程序标题 void exchange(double c[MAX],double temp_c[MAX]); //交换两阶段价值系数 void show(); //输出方程组 void main() { int i,j,k; banner(); create(); //保存原价值系数,转换为第一阶段价值系数 for(i=1;i=num_x;i++) { k=0; for(j=1;j=num_ar;j++) if(i==arti[j]) k=1; if(k==1) temp_c[i]=-1; else temp_c[i]=0; } exchange(c,temp_c); printf(\n\n第一阶段问题为:\n\n); show(); step++; printf(\n\n按回车开始第一阶段迭代); getchar(); getchar(); iterative(); if(status==-2) { puts(迭代超过限制次数强行终止!\n); puts(\n按回车结束); getchar(); exit(0); } output(); if(max!=0) { puts(\n\n原问题无可行解。\n); puts(\n按回车结束); getchar(); exit(0); } //转换为第二阶段价值系数 exchange(c,temp_c); //把人工变量列全设为0 for(i=1;i=num_ar;i++) { c[arti[i]]=0; for(j=1;j=num_st;j++) a[j][arti[i]]=0; } puts(\n\n第二阶段问题为:\n\n); show(); puts(\n\n按回车开始第二阶段迭代); getchar(); iterative(); switch(status) { case 1: output(); puts(\n\n原问题有唯一最优解。\n); puts(\n按回车结束); getchar(); exit(0); case 0: puts(\n\n原问题为无界解。\n); puts(\n按回车结束); getchar(); exit(0); case -1: output(); puts(\n\n原问题有无穷多最优解。\n); puts(\n按回车结束); getchar(); exit(0); case -2: puts(迭代超过限制次数强行终止!\n); puts(\n按回车结束); getchar(); exit(0); }//switch } void banner() { printf(\t\t****************************************\n); printf(\t\t 两阶段法解LP问题\n); printf(\t\t****************************************\n); printf(\n); } void sh

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档