优化设计-单纯形法.docx

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
优化设计-单纯形法

1) 用单纯形法求法min(x12+2x22-4x1-2x1x2),已知α=1,β=0.5,γ=2,ε=0.005。 程序如下: #include stdio.h #include math.h float abs(float); float max(float,float); float f(float*); float remain(); void fs( ); void xs( ); void ss( ); void sx( ); void eh( ); int k=0; float* xh; float* xe; float x0[2]={0,0},x1[2]={0,1},x2[2]={1,0},xn1[2],xn2[2],xn3[2],xn4[2],p[3]; float fh,fe,e=0.005; float f0,f1,f2,fn1,fn2,fn3,fn4; void eh( ) { f0=f(x0); f1=f(x1); f2=f(x2); if(f0f1) { if(f0f2) { if(f1f2) {fh=f0; fe=f2; xh=x0; xe=x2; p[0]=0;p[1]=1;p[2]=1;} else {fh=f0; fe=f1; xh=x0; xe=x1; p[0]=0;p[1]=1;p[2]=1;} } else { fh=f2; fe=f1; xh=x2; xe=x1; p[0]=1;p[1]=1;p[2]=0;} } else { if(f0f2) { if(f1f2){fh=f2; fe=f0; xh=x2; xe=x0; p[0]=1;p[1]=1;p[2]=0;} else {fh=f1; fe=f0; xh=x1; xe=x0; p[0]=1;p[1]=0;p[2]=1;} } else { fh=f1; fe=f2; xh=x1; xe=x2; p[0]=1;p[1]=0;p[2]=1;} } xn1[0]=(x0[0]*p[0]+x1[0]*p[1]+x2[0]*p[2])/2; xn1[1]=(x0[1]*p[0]+x1[1]*p[1]+x2[1]*p[2])/2; fn1=f(xn1); } void fs( ) { xn2[0]=xn1[0]+(xn1[0]-xh[0]); xn2[1]=xn1[1]+(xn1[1]-xh[1]); fn2=f(xn2); } void xs( ) { xn3[0]=xn1[0]+2*(xn2[0]-xn1[0]); xn3[1]=xn1[1]+2*(xn2[1]-xn1[1]); fn3=f(xn3); } void ss( ) { xn4[0]=xn1[0]+0.5*(xh[0]-xn1[0]); xn4[1]=xn1[1]+0.5*(xh[1]-xn1[1]); fn4=f(xn4); } void sx( ) { x0[0]=0.5*(x0[0]+xe[0]); x0[1]=0.5*(x0[1]+xe[1]); x1[0]=0.5*(x1[0]+xe[0]); x1[1]=0.5*(x1[1]+xe[1]); x2[0]=0.5*(x2[0]+xe[0]); x2[1]=0.5*(x2[1]+xe[1]); } float max(float x,float y) {if (xy)return x; else return y; } float remain() {if(p[0]==0)return max(f1,f2); else if(p[1]==0)return max(f0,f2); else if(p[2]==0)return max(f0,f1); else return 0; } float f(float* x) { float r; r=x[0]*x[0]+2*x[1]*x[1]-4*x[0]-2*x[0]*x[1]; return r; } void main() { float i,j,s;printf(\n k x0 x1 x2 f(x(n+1))\n\n); eh(); printf(%d\t[%.4f%.4f][%.4f%.4f] [%.4f %.4f] %.4f\n,k,x0[0],x0[1],x1[0],x1[1],x2[0],x2[1],fn1); k++; do {step1: fs(); if((fn2fe)(fn2remain())){x

文档评论(0)

2017ll + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档