Fortran 板


LINE

接触FORTRAN时间不算太常但也不短 但是对於副程式和写数对b(i,j)的部分还是偏弱的 以下是修改後有问题的所有程式码,想看原本的程式码可私信给我信箱 我在下方每一代产生20个母体的部分有个小问题 因为怕产生的母体会有重复而影响程式效率 所以想加上判断式,进而提高效率 问题点在"确认数列是否重复"那一段 小弟手边也有FORTRAN 95 彭国伦编写的书 或许有人可以跟我指点一下哪边可以找到 program wu use msimsl parameter(n=08,m=20,l=1) !n=工作件数,m=代数,l=总资料组数 integer a(n),pt1(n),pt2(n),ag(n),tempa(n),t(n) integer ag1,ag2,best(n),dd(n),b(l,m) real sum,suma,cta(n),ctb(n) open(4,file='lovsol.txt') !!! 141 format(08i5) 100 format(1x,08i5) 101 format(1x,08i5,/) 103 format(1x,08i5,2x,f12.4) !!! 108 format(1x,08i5,2x,2f24.4) !!! 109 format(1x,08i5,f24.4) !!! 102 format(1x,08i5,2x,f12.4) open(1,file='data01.txt') c call rnset(20130827) c===================================================== c 步骤一、读取排序与值 c===================================================== do 999 kkk=1,l t0=cpsec() c-----读取资料 pt ----- read(1,100) (pt1(i),i=1,n) read(1,100) (pt2(i),i=1,n) read(1,100) (ag(i),i=1,n) read(1,101) (dd(i),i=1,n) tmax=1*10e30 c-----定义排序 a ----- do i=1,n a(i)=i enddo c write(*,*)'原始排序' c write(*,'(08i5)')a c pause c===================================================== do 223 cc=1,m !!!20代 c===================================================== 10 loop=0 11 do i=1,n t(i)=8*rnunf()+1 end do !----确认为可使用数列 do i=1,n-1 do j=i+1,n if (t(i)==t(j)) then go to 11 end if end do end do do i=1,n a(i)=t(i) end do !----确认数列是否重复 do i=1,n b(kkk,cc)=a(i) end do do s=1,kkk do t=1,cc if (a(i)==b(s,t)) then go to 11 end if end do end do !---- do i=1,n if (ag(a(i))==1) then ag1=i else if (ag(a(i))==2) then ag2=i end if if (ag2<ag1) then go to 11 end if end do c write(*,100) (i,i=1,n) c write(*,100) (a(i),i=1,n) c write(*,100) (pt1(a(i)),i=1,n) c write(*,100) (pt2(a(i)),i=1,n) c write(*,101) (ag(a(i)),i=1,n) c pause !----算目标函数 sum=0.0 suma=0.0 25 do 30 i=1,n cta(i)=0.0 ctb(i)=0.0 if (i==1) then cta(i)=pt1(a(i)) ctb(i)=cta(i)+pt2(a(i)) else cta(i)=cta(i-1)+pt1(a(i)) ctb(i)=max(cta(i),ctb(i-1))+pt2(a(i)) endif ct=ctb(i) suma=suma+ctb(i) sum=suma 30 continue c write(*,*) sum c pause !---------------判别大小(sum是挑选前,tmax是挑选後) if (sum<tmax) then tmax=sum do i=1,n best(i)=a(i) end do end if c print*, kk, sum !--------------- loop=loop+1 if (loop<20) then !!!母体数量 go to 11 end if c write(*,103) (best(i),i=1,n),tmax c write(*,*) !-------------------- if (sum<tmax) then tmax=sum do i=1,n best(i)=a(i) end do end if 223 continue t1=cpsec() print*, kkk, tmax, t1-t0 write(4,103) (best(i),i=1,n),tmax c pause 999 continue end --



※ 发信站: 批踢踢实业坊(ptt.cc)
※ 编辑: goddirk 来自: 140.134.18.171 (09/15 16:32)
1F:→ charlesdc:基本上你要描述的问题是? 09/15 17:04
2F:→ charlesdc:还有你对提高效率的意思可能误解很深! 09/15 17:04
我让他跑了20个母体出来然後重复这动作做了20次~也就是总共跑了400个母体 但是这400个母体中可能出现同样的母体,所以我想去做排除 抱歉~词不达意= =" ※ 编辑: goddirk 来自: 140.134.18.171 (09/15 17:07)
3F:→ charlesdc:所以你的问题是乱数取值中不重复的问题吧? 09/15 18:52
4F:→ charlesdc:做一个阵列存用过值 每次取值时去比对 09/15 18:53
5F:→ charlesdc:觉得麻烦你就一开始产生400组不重复的值去用就好了 09/15 18:54
这方法应该行不通 我们用的是基因演算法,第一代产生20个母体,然後做20代,看其收敛情况 ※ 编辑: goddirk 来自: 122.117.36.192 (09/16 03:03)
6F:→ charlesdc:那这样就有趣啦 既然母体产生的样本会演化 演化到样本一 09/16 20:04
7F:→ charlesdc:样不是很正常的事吗? 09/16 20:05
这话有道哩!我去跟我老板讨论讨论 ※ 编辑: goddirk 来自: 122.117.36.192 (09/16 23:21)
8F:→ charlesdc:其实争议的地方还有几个 你的rand seed可靠吗? 09/17 00:31
关於这个~SEED的我C掉了 因为我发现只要是产生400个,不论是20*20或是10*40、5*80等等 跑出来的结果都会一样 ※ 编辑: goddirk 来自: 122.117.36.192 (09/17 01:25)
9F:→ charlesdc:seed通常都有一个重制的语法可以查一下 应该是漏了什麽 09/17 09:59
10F:→ charlesdc:然後通常你要你的样本分布较均匀的话 量要大 09/17 10:00
11F:→ charlesdc:不然你就得先跑出一大组数据符合分布後再从里面乱数拿取 09/17 10:01
这问题跟老师回覆过了.....他可能再想想吧XD ※ 编辑: goddirk 来自: 122.117.36.192 (10/24 17:26)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP