1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      罰函數(shù)c語言 罰函數(shù)求解

      罰函數(shù)法和拉格朗日乘子法的區(qū)別

      一、作用不同:

      創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的武威網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

      懲罰函數(shù)法在M越來越大的情況下,函數(shù)F趨近于病態(tài),乘子法克服這個缺點根據(jù)拉格朗日分解加了一個uih(x)M變?yōu)榱薱/2。

      主要思想是引入一個新的參數(shù)λ(即拉格朗日乘子),將約束條件函數(shù)與原函數(shù)聯(lián)系到一起,使能配成與變量數(shù)量相等的等式方程。

      二、定義不同:

      基本的拉格朗日乘子法(又稱為拉格朗日乘數(shù)法),就是求函數(shù)f(x1,x2,)在g(x1,x2,)=0的約束條件下的極值的方法。

      罰函數(shù)法是從非可行解出發(fā)逐漸移動到可行區(qū)域的方法。罰函數(shù)法在理論上是可行的,在實際計算中的缺點是罰因子M的取值難于把握,太小起不到懲罰作用;太大則由于誤差的影響會導(dǎo)致錯誤。

      三、使用方法不同:

      在進化計算中,研究者選擇外部罰函數(shù)法的原因主要是該方法不需要提供初始可行解。需要提供初始可行解則是內(nèi)部罰函數(shù)法的主要缺點。由于進化算法應(yīng)用到實際問題中可能存在搜索可行解就是NP難問題,因此這個缺點是非常致命的。

      基本的拉格朗日乘子法就bai是求函數(shù)f(x1,x2,...)在約束條件g(x1,x2,...)=0下的極值的方法。其主要思想是將約束條件函數(shù)與原函數(shù)聯(lián)立,從而求出使原函數(shù)取得極值的各個變量的解。

      擴展資料:

      如果這個實際問題的最大或最小值存在,一般說來駐點只有一個,于是最值可求。

      條件極值問題也可以化為無條件極值求解,但有些條件關(guān)系比較復(fù)雜,代換和運算很繁,而相對來說“拉格朗日乘數(shù)法”不需代換,運算簡單一點,這就是優(yōu)勢。

      條件φ(x,y,z)一定是個等式,不妨設(shè)為φ(x,y,z)=m

      則再建一個函數(shù)g(x,y,z)=φ(x,y,z)-m

      g(x,y,z)=0以g(x,y,z)代替φ(x,y,z)

      在許多極值問題中,函數(shù)的自變量往往要受到一些條件的限制,比如,要設(shè)計一個容積為 V的長方體形開口水箱,確定長、寬和高,使水箱的表面積最小.。設(shè)水箱的長、寬、高分別為 x,y,z, 則水箱容積V=xyz。

      參考資料來源:百度百科-拉格朗日乘數(shù)法

      求解一道貪心算法

      因為這個問題涉及到高維求解(大于3維),所以不推薦你用貪心算法或遺傳算法之類的算法。這里給出一種升級的蒙特卡羅算法——自適應(yīng)序貫數(shù)論算法,這是一種以GLP集合為基礎(chǔ)的隨機遍歷算法,可以很輕易的解決一系列的高維求解問題,目前根據(jù)網(wǎng)上能找到的資料最多可以做到18維。

      下面就根據(jù)你給出的例子講解一下:

      對于6000的料來說

      1185最多做到5根(要求4根,所以一根木料對于1185的產(chǎn)品來說最多有0到45種可能);1079最多做到5根;985最多做到6根;756最多做到7根。

      所以第一次加工一根木料最多有5*6*7*8=1680種加工可能(當(dāng)然其中包括那些產(chǎn)品總長度大于料長的可能,但是我們可以通過罰函數(shù)來避免這些情況),那么利用GLP算法我們可以一次性產(chǎn)生這1680種可能,然后逐個比較那種可能最省木料;

      設(shè)第一加工出的產(chǎn)品量分別為1 1 3 1

      那么1185加工量剩3,1079剩5,985剩7,756剩7,所以第二次加工的可能性有(3+1)*(5+1)*(6+1)*(7+1)=1120種

      關(guān)于自適應(yīng)序貫數(shù)論算法,根據(jù)這道題你可以這樣理解,4種尺寸構(gòu)成了一個4維的空間,四種尺寸的每一種組合相當(dāng)于空間中的一個點(1185的1根,1079的1根,985的3根,756的1根,這就組成了這個4維空間中的(1,1,3,1)點) ,自適應(yīng)序貫數(shù)論算法就是先根據(jù)GLP算法在這個4維空間中隨機的,均勻的分布一定的點(也就是尺寸的組合),然后根據(jù)目標(biāo)函數(shù)確定其中哪一個點是最優(yōu)點,我們認為最優(yōu)點的附近出現(xiàn)最優(yōu)解的可能性最大,那么我們就以最優(yōu)點為中心,以一定的尺度為半徑將原空間縮小,然后我們在心空間中再一次利用GLP算法均勻,隨機的充滿這個空間,然后重復(fù)以上過程,直到這個空間小到我們事先規(guī)定的大小,這樣我們就找到了最優(yōu)解。

      也許你會擔(dān)心算法一上來就收斂到了局部最優(yōu)解,然后一直在這里打轉(zhuǎn),不用擔(dān)心,GLP最大的優(yōu)點就是均勻的充斥整個空間,盡量將每一種可能都遍歷到。

      這種算法的缺點在于充斥空間用的點需要生成向量來生成,每一種充斥方式都需要不同的向量,你可以在《數(shù)論方法在統(tǒng)計中的應(yīng)用》這本書中查到已有的每種充斥方式對應(yīng)的那些生成向量。

      下面是我跟據(jù)對你給出的例子的理解算出的結(jié)果。

      1185:1根

      1079:1根

      985:3根

      756:1根

      剩余木料0

      1185:1根

      1079:1根

      985:3根

      756:1根

      剩余木料0

      1185:1根

      1079:1根

      985:3根

      756:1根

      剩余木料0

      1185:1根

      1079:0根

      985:1根

      756:5根

      剩余木料15

      1185:0根

      1079:3根

      985:0根

      756:0根

      剩余木料2748

      用去木料:5根

      請按任意鍵繼續(xù). . .

      程序代碼如下:(變量都是用漢語拼音標(biāo)的)

      #include stdlib.h

      #include stdio.h

      #include math.h

      #include iostream.h

      #include iomanip.h

      #include time.h

      #include fstream.h

      #include windows.h

      #include "glp.h"

      #define jiedeweishu 4

      #define glpgeshu 10007

      #define glpgeshu1 5003//100063

      #define glpgeshu2 6007//33139//71053//172155//100063

      #define yuanmuchang 6000

      #define qiegesushi 5

      #define chicun1 1185

      #define chicun2 1079

      #define chicun3 985

      #define chicun4 756

      #define chicun1shuliang 4

      #define chicun2shuliang 6

      #define chicun3shuliang 10

      #define chicun4shuliang 8

      float xuqiuchicun[jiedeweishu]={chicun1,chicun2,chicun3,chicun4};

      float chicunxuqiuliang[jiedeweishu]={chicun1shuliang,chicun2shuliang,chicun3shuliang,chicun4shuliang};

      float zuobianjie0[jiedeweishu];//{-19,1,-11,1.5,0,200};//{0.39111,-18.5,1,-11,1,0,2};//左邊界

      float youbianjie0[jiedeweishu];//{-17,1.5,-7,2,0.05,900};//{0.393,-17,2,-9,2,0.1,6};//右邊界

      float zuobianjie[jiedeweishu];

      float youbianjie[jiedeweishu];

      float zuobianjie1[jiedeweishu];//過度用

      float youbianjie1[jiedeweishu];

      float zuobianjie2[jiedeweishu];//局部邊界

      float youbianjie2[jiedeweishu];

      float zuobianjie3[jiedeweishu];//大邊界

      float youbianjie3[jiedeweishu];

      float sheng_cheng_xiang_liang[jiedeweishu]={1,1206,3421,2842};//生成向量

      float sheng_cheng_xiang_liang1[jiedeweishu]={1,792,1889,191};//{1,39040,62047,89839,6347,30892,64404};//生成向量

      float sheng_cheng_xiang_liang2[jiedeweishu]={1,1351,5080,3086};//{1,18236,1831,19143,5522,22910};//{1,18010,3155,50203,6065,13328};//{1,167459,153499,130657,99554,61040,18165};

      struct chushi

      {

      float geti[jiedeweishu];

      float shiyingdu;

      };

      chushi *zuiyougeti;//精英保存策略

      chushi *zuiyougetijicunqi;

      int sishewuru(float);

      float chazhi;//左右邊界的差

      int biaozhi;//判斷尋優(yōu)是否成功1表示成功0表示不成功

      int maxgen;//最大計算代數(shù)

      int gen;//目前代數(shù)

      void initialize();//算法初始化

      void jingyingbaoliu();//精英保存的實現(xiàn)

      void mubiaohanshu1(chushi bianliang);//適應(yīng)度的計算使用殘差法

      int cmpshiyingdujiang(const void *p1,const void *p2)

      {

      float i=((chushi *)p1)-shiyingdu;

      float j=((chushi *)p2)-shiyingdu;

      return ij ? 1:(i==j ? 0:-1);//現(xiàn)在是按降序牌排列,將1和-1互換后就是按升序排列

      }

      int cmp1(const void *p1,const void *p2)

      {

      float i= *(float*)p1;

      float j= *(float*)p2;

      return ij ? 1:(i==j ? 0:-1);//現(xiàn)在是按降序牌排列,將1和-1互換后就是按升序排列

      }

      void main()

      {

      float bianjiebianhuashuzu[jiedeweishu];

      float yiwanchengshuliang[jiedeweishu];

      zuiyougeti=new chushi;//最優(yōu)個體的生成

      zuiyougetijicunqi=new chushi;

      int i;

      for(i=0;ijiedeweishu;i++)

      {

      zuiyougeti-geti[i]=0;

      yiwanchengshuliang[i]=0;

      }

      int muliaoshuliang=0;

      while(1)

      {

      if(yiwanchengshuliang[0]==chicun1shuliangyiwanchengshuliang[1]==chicun2shuliangyiwanchengshuliang[2]==chicun3shuliangyiwanchengshuliang[3]==chicun4shuliang)

      break;//都加工完了就退出程序

      biaozhi=1;

      for(i=0;ijiedeweishu;i++)

      {

      bianjiebianhuashuzu[i]=chicunxuqiuliang[i]-yiwanchengshuliang[i];

      }

      for(i=0;ijiedeweishu;i++)

      {

      zuobianjie0[i]=0;

      if(bianjiebianhuashuzu[i](int)(yuanmuchang/xuqiuchicun[i]))

      {

      youbianjie0[i]=(int)(yuanmuchang/xuqiuchicun[i]);

      }

      else

      {

      youbianjie0[i]=bianjiebianhuashuzu[i];

      }

      }

      for(i=0;ijiedeweishu;i++)

      {

      zuobianjie[i]=zuobianjie0[i];

      youbianjie[i]=youbianjie0[i];

      }

      for(i=0;ijiedeweishu;i++)//在這套程序中邊界分為兩個部分,其中一組是根據(jù)最優(yōu)解的收斂范圍進行局部尋優(yōu),如果在局部找不到最優(yōu)解則以現(xiàn)有最優(yōu)解為中心進行全局搜索

      {

      zuobianjie2[i]=zuobianjie[i];

      youbianjie2[i]=youbianjie[i];

      zuobianjie3[i]=zuobianjie[i];

      youbianjie3[i]=youbianjie[i];

      }

      zuiyougeti-shiyingdu=-3000;

      //cout zuiyougeti-shiyingduendl;

      initialize();

      //for(i=0;ijiedeweishu;i++)/////

      //{////

      // coutzuiyougeti-geti[i]",";////

      //}/////////

      //coutendl;/////

      // cout"初始最優(yōu)解:"" "-zuiyougeti-shiyingduendl;/////////////

      for(gen=1;genmaxgen;gen++)

      {

      jingyingbaoliu();

      if(chazhi1e-1)

      break;

      }

      //cout"最終在收斂的范圍內(nèi)左右邊界的最大差值: "chazhiendl;

      //for(i=0;ijiedeweishu;i++)

      //{

      // coutsetiosflags(ios::fixed)setprecision(6)zuiyougeti-geti[i]",";

      // }

      //coutendl;

      //cout"共用代數(shù)"genendl;

      cout"1185:"zuiyougeti-geti[0]"根"endl;

      cout"1079:"zuiyougeti-geti[1]"根"endl;

      cout"985:"zuiyougeti-geti[2]"根"endl;

      cout"756:"zuiyougeti-geti[3]"根"endl;

      cout"剩余木料"(-zuiyougeti-shiyingdu)endl;////////////////

      coutendl;

      for(i=0;ijiedeweishu;i++)

      {

      yiwanchengshuliang[i]=yiwanchengshuliang[i]+zuiyougeti-geti[i];

      }

      muliaoshuliang++;

      }

      cout"用去木料:"muliaoshuliang"根"endl;

      delete [] zuiyougetijicunqi;

      delete [] zuiyougeti;

      system("pause");

      }

      void initialize()

      {

      maxgen=20;//最大代數(shù)

      gen=0;//起始代

      chazhi=100;

      chushi *chushizhongqunji;

      chushizhongqunji=new chushi[glpgeshu];

      int i,j;

      for(i=0;ijiedeweishu;i++)

      {

      zuobianjie1[i]=zuobianjie[i];

      youbianjie1[i]=youbianjie[i];

      }

      float **glp_shu_zu;//第一次求解,為了使解更精確這一次求解需要的點最多

      glp_shu_zu=new (float *[glpgeshu]);

      for(i=0;iglpgeshu;i++)

      {

      glp_shu_zu[i]=new float[jiedeweishu];//生成的glp向量用glp_shu_zu儲存

      }

      glp glp_qiu_jie_first(glpgeshu,jiedeweishu);//定義生成多少組glp向量和向量的維數(shù)

      glp_qiu_jie_first.glp_qiu_jie(glp_shu_zu,sheng_cheng_xiang_liang);//將生成的glp向量用glp_shu_zu儲存,同時將生成向量帶入glp類

      for(i=0;iglpgeshu;i++)//產(chǎn)生初始種群

      {

      for(j=0;jjiedeweishu;j++)

      {

      chushizhongqunji[i].geti[j]=sishewuru((zuobianjie[j]+(youbianjie[j]-(zuobianjie[j]))*glp_shu_zu[i][j]));

      if(j==3glp_shu_zu[i][j]0)

      {

      cout"274"endl;/////////////

      coutzuobianjie[j]" "glp_shu_zu[i][j]" "youbianjie[j]endl;////////////////////

      system("pause");///////////////////

      }

      }

      }

      for(i=0;iglpgeshu;i++)//計算初始種群的適應(yīng)度

      {

      mubiaohanshu1(chushizhongqunji[i]);

      }

      qsort(chushizhongqunji,glpgeshu,sizeof(chushi),cmpshiyingdujiang);//根據(jù)適應(yīng)度將初始種群集按降序進行排列

      chushi *youxiugetiku;//建立一個儲存優(yōu)秀個體的庫

      youxiugetiku=new chushi[glpgeshu];//建立一個儲存優(yōu)秀個體的庫

      int jishuqi=0;

      i=0;

      while(chushizhongqunji[i].shiyingduzuiyougeti-shiyingdu)//凡是比上一代的最優(yōu)個體還要好的個體都放入優(yōu)秀個體庫

      {

      for(int j=0;jjiedeweishu;j++)

      {

      youxiugetiku[i].geti[j]=chushizhongqunji[i].geti[j];

      //coutyouxiugetiku[i].geti[j]endl;

      }

      //system("pause");

      i++;

      }

      // coutiendl;//////////////

      //system("pause");//////////////////////////////////////

      jishuqi=i;//將得到的優(yōu)秀個體的數(shù)量放入jishuqi保存

      float *bianjiezancunqi;//下面就要以優(yōu)秀個體庫中個體的范圍在成立一個局部搜索區(qū)域,所以先建立一個邊界暫存器

      bianjiezancunqi=new float[jishuqi];

      for(i=0;ijiedeweishu;i++)

      {

      for(int j=0;jjishuqi;j++)

      {

      bianjiezancunqi[j]=youxiugetiku[j].geti[i];//將優(yōu)秀個體庫每一維的數(shù)據(jù)都放入bianjiezancunqi

      }

      qsort(bianjiezancunqi,jishuqi,sizeof(float),cmp1);//對這些數(shù)據(jù)按降序排列,取兩個邊界又得到一個局部范圍

      //將得到的范圍進行保存

      zuobianjie[i]=bianjiezancunqi[jishuqi-1];

      youbianjie[i]=bianjiezancunqi[0];

      //coutzuobianjie[i]endl;//////////////////////////

      // coutyoubianjie[i]endl;///////////////////////////

      //coutendl;///////////////////

      //

      if(zuobianjie[i]zuobianjie2[i])//如果新得到的局部左邊界在上一代局部左邊界左邊,則左邊界取上一代的

      {

      zuobianjie[i]=zuobianjie2[i];

      }

      if(youbianjie[i]youbianjie2[i])//如果新得到的局部右邊界在上一代局部右邊界右邊,則右邊界取上一代的

      {

      youbianjie[i]=youbianjie2[i];

      }

      }

      if(chushizhongqunji[0].shiyingduzuiyougeti-shiyingdu)//本代種群的最優(yōu)個體比歷史最有個個體好,則用本代的代替之,并將標(biāo)志位賦值為1表示尋優(yōu)成功

      {

      for(i=0;ijiedeweishu;i++)

      {

      zuiyougeti-geti[i]=chushizhongqunji[0].geti[i];

      }

      zuiyougeti-shiyingdu=chushizhongqunji[0].shiyingdu;

      biaozhi=1;

      }

      delete [] bianjiezancunqi;

      delete [] youxiugetiku;

      for(i=0;iglpgeshu;i++)

      {

      delete [] glp_shu_zu[i];

      }

      delete [] glp_shu_zu;

      delete [] chushizhongqunji;

      }

      void jingyingbaoliu() //精英保留的實現(xiàn)

      {

      float glpshuliang,xiangliang[jiedeweishu];

      if(biaozhi==1)//如果尋優(yōu)成功則利用局部搜索的數(shù)據(jù)

      {

      glpshuliang=glpgeshu1;

      for(int i=0;ijiedeweishu;i++)

      {

      xiangliang[i]=sheng_cheng_xiang_liang1[i];

      }

      }

      else//否則利用全局搜索的數(shù)據(jù)

      {

      glpshuliang=glpgeshu2;

      for(int i=0;ijiedeweishu;i++)

      {

      xiangliang[i]=sheng_cheng_xiang_liang2[i];

      }

      }

      chushi *chushizhongqunji;//建立一個用來儲存種群的容器

      chushizhongqunji=new chushi[glpshuliang];

      int i,j;

      float **glp_shu_zu;//生成一個glp數(shù)組

      glp_shu_zu=new (float *[glpshuliang]);

      for(i=0;iglpshuliang;i++)

      {

      glp_shu_zu[i]=new float[jiedeweishu];//生成的glp向量用glp_shu_zu儲存

      }

      glp glp_qiu_jie_first(glpshuliang,jiedeweishu);//定義生成多少組glp向量和向量的維數(shù)

      glp_qiu_jie_first.glp_qiu_jie(glp_shu_zu,xiangliang);//將生成的glp向量用glp_shu_zu儲存,同時將生成向量帶入glp類

      //cout"377"endl;

      if(biaozhi!=1)//如果尋優(yōu)不成功則進入全局搜索

      {

      //cout"380"endl;////////////

      float bianjiecha[jiedeweishu];

      for(i=0;ijiedeweishu;i++)

      {

      bianjiecha[i]=youbianjie3[i]-zuobianjie3[i];//計算上一代全局每一維范圍的寬度

      }

      static float rou=0.9;//定義收縮比

      //float rou=pow(0.5,gen);

      for(i=0;ijiedeweishu;i++)//確定新的范圍

      {

      zuobianjie1[i]=zuiyougeti-geti[i]-rou*bianjiecha[i];//左邊界為以最優(yōu)個體為中心-范圍寬度乘以收縮比

      if(zuobianjie1[i]zuobianjie2[i])//如果新的左邊界比目前局部左邊界大,那么以目前的為全局尋優(yōu)的左邊界

      {

      zuobianjie[i]=zuobianjie1[i];

      zuobianjie3[i]=zuobianjie1[i];

      }

      else//否則以局部左邊界為全局左邊界

      {

      zuobianjie[i]=zuobianjie2[i];

      zuobianjie3[i]=zuobianjie2[i];

      }

      youbianjie1[i]=zuiyougeti-geti[i]+rou*bianjiecha[i];//右邊界為以最優(yōu)個體為中心+范圍寬度乘以收縮比

      if(youbianjie1[i]youbianjie2[i])

      {

      youbianjie[i]=youbianjie1[i];

      youbianjie3[i]=youbianjie1[i];

      }

      else

      {

      youbianjie[i]=youbianjie2[i];

      youbianjie3[i]=youbianjie2[i];

      }

      }

      qsort(bianjiecha,jiedeweishu,sizeof(float),cmp1);

      if(chazhi==bianjiecha[0])//如果最大邊界差不變的話就將收縮因子變小

      {

      rou=pow(rou,2);

      }

      chazhi=bianjiecha[0];

      }

      //cout"421"endl;/////////////////////

      for(i=0;iglpshuliang;i++)//根據(jù)新產(chǎn)生的最優(yōu)個體確定glp群

      {

      for(j=0;jjiedeweishu;j++)

      {

      chushizhongqunji[i].geti[j]=sishewuru((zuobianjie[j]+(youbianjie[j]-(zuobianjie[j]))*glp_shu_zu[i][j]));

      }

      }

      for(i=0;iglpshuliang;i++)

      {

      mubiaohanshu1(chushizhongqunji[i]);

      }

      qsort(chushizhongqunji,glpshuliang,sizeof(chushi),cmpshiyingdujiang);

      zuiyougetijicunqi-shiyingdu=zuiyougeti-shiyingdu;

      if(chushizhongqunji[0].shiyingduzuiyougeti-shiyingdu)

      {

      for(i=0;ijiedeweishu;i++)

      {

      zuiyougeti-geti[i]=chushizhongqunji[0].geti[i];

      }

      zuiyougeti-shiyingdu=chushizhongqunji[0].shiyingdu;

      biaozhi=1;

      }

      else

      {

      // cout"446"endl;/////////////

      biaozhi=0;

      }

      if(biaozhi==1)//如果尋優(yōu)成功了就需要確立一個新的局部最優(yōu)解范圍

      {

      chushi *youxiugetiku;

      youxiugetiku=new chushi[glpshuliang];

      int jishuqi=0;

      i=0;

      while(chushizhongqunji[i].shiyingduzuiyougetijicunqi-shiyingdu)

      {

      for(int j=0;jjiedeweishu;j++)

      {

      youxiugetiku[i].geti[j]=chushizhongqunji[i].geti[j];

      }

      i++;

      }

      jishuqi=i;

      float *bianjiezancunqi;

      bianjiezancunqi=new float[jishuqi];

      for(i=0;ijiedeweishu;i++)

      {

      for(int j=0;jjishuqi;j++)

      {

      bianjiezancunqi[j]=youxiugetiku[j].geti[i];

      }

      qsort(bianjiezancunqi,jishuqi,sizeof(float),cmp1);

      zuobianjie[i]=bianjiezancunqi[jishuqi-1];

      youbianjie[i]=bianjiezancunqi[0];

      // coutzuobianjie[i]endl;//////////////

      // coutyoubianjie[i]endl;/////////////

      // coutendl;///////////////

      if(zuobianjie[i]zuobianjie2[i])

      {

      zuobianjie[i]=zuobianjie2[i];

      }

      if(youbianjie[i]youbianjie2[i])

      {

      youbianjie[i]=youbianjie2[i];

      }

      }

      delete [] bianjiezancunqi;

      delete [] youxiugetiku;

      }

      for(i=0;iglpshuliang;i++)

      {

      delete [] glp_shu_zu[i];

      }

      delete [] glp_shu_zu;

      delete [] chushizhongqunji;

      }

      void mubiaohanshu1(chushi bianliang)//計算shiyingdu

      {

      int i=0;

      int sunshi,chanpin;

      sunshi=qiegesushi*(bianliang.geti[0]+bianliang.geti[1]+bianliang.geti[2]+bianliang.geti[3]-1);

      chanpin=chicun1*bianliang.geti[0]+chicun2*bianliang.geti[1]+chicun3*bianliang.geti[2]+chicun4*bianliang.geti[3];

      bianliang.shiyingdu=yuanmuchang-sunshi-chanpin;

      if(bianliang.shiyingdu!=0)//如果不能正好將木料分成所需尺寸則要多切一刀

      {

      sunshi=qiegesushi*(bianliang.geti[0]+bianliang.geti[1]+bianliang.geti[2]+bianliang.geti[3]);

      }

      if(bianliang.shiyingdu0)//罰函數(shù)

      {

      bianliang.shiyingdu=bianliang.shiyingdu+1e5;

      }

      bianliang.shiyingdu=-bianliang.shiyingdu;

      }

      int sishewuru(float x)

      {

      float y;

      int z;

      y=x-(int)x;

      if(y0.5)

      {

      z=(int)(x);

      }

      else

      {

      z=(int)x;

      z=z+1;

      }

      return z;

      }

      glp.h源文件貼不下了,把你郵箱給我我發(fā)給你

      郵箱:hu_hu605@163.com

      powell算法求解懲罰函數(shù)內(nèi)點法 用c語言實現(xiàn) 誰會 急!!!!

      #include#definestacksize100//假定預(yù)分配的棧空間最多為100個元素typedefcharelementtype;//假定棧元素的數(shù)據(jù)類型為字符,在此處可以自行設(shè)置typedefstruct{elementtypedata[stacksize];inttop;}seqstack;//置空棧voidinitstack(seqstack*s){s-top=-1;//解釋一下,s-top指向的是當(dāng)前棧頂元素的位置//當(dāng)要向棧中添加一個新元素時,要先將s-top增加1,//此時s-top指向的就是新元素要添加的位置了。//所以當(dāng)棧為空時,填加第一元素時,top加1后//s-top的值就變?yōu)?,也就是第一個元素的位置了。}//判棧空intstackempty(seqstack*s){if(s-top==-1)return1;//若相等就返回1,否則為0elsereturn0;}//入棧voidpush(seqstack*s,elementtypex){if(s-top==stacksize-1)//進棧前判斷棧是否已經(jīng)滿了printf("stackoverflow\n");else{s-top=s-top+1;s-data[s-top]=x;}}//出棧elementtypepop(seqstack*s){if(stackempty(s))//出棧前先判斷當(dāng)前棧中是否有內(nèi)容printf("stackisempty\n");else{returns-data[s-top--];//出棧后s-top的值會自減1}}//取棧頂元素(只是想知道棧頂?shù)闹担]有出棧)elementtypegettop(seqstack*s){if(stackempty(s)){printf("stackalreadyempty.\n");}elsereturns-data[s-top];}intmain(){elementtypex;seqstack*s;//定義一個棧,用指針的方式定義的initstack(s);//想初始化定義好的棧//當(dāng)棧為空時調(diào)用出棧操作pop(s);//向棧中添加一個元素apush(s,'a');//觀察此時的棧頂元素x=gettop(s);printf("%c\n",x);//再添加一個元素bpush(s,'b');//觀察此時的棧頂元素x=gettop(s);printf("%c\n",x);//彈出棧頂?shù)脑豿=pop(s);printf("%c\n",x);//觀察彈出后棧頂元素的變化情況x=gettop(s);printf("%c\n",x);return0;}


      分享題目:罰函數(shù)c語言 罰函數(shù)求解
      文章出自:http://ef60e0e.cn/article/dooggdh.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        筠连县| 枝江市| 安阳市| 鸡泽县| 漠河县| 五原县| 怀宁县| 措美县| 三门县| 陕西省| 栾城县| 德庆县| 龙泉市| 陈巴尔虎旗| 黔南| 仪陇县| 安阳市| 嘉义县| 牡丹江市| 丽江市| 佛冈县| 东乌| 贵州省| 西贡区| 陵川县| 泰州市| 桐庐县| 三河市| 武功县| 平湖市| 蛟河市| 长武县| 天祝| 琼结县| 葵青区| 九江县| 美姑县| 拉孜县| 济宁市| 海安县| 五峰|