pasuka 发表于 2014-4-30 10:00:30

本帖最后由 pasuka 于 2014-4-30 10:09 编辑

我是处手 发表于 2014-4-30 09:56
我使用的是compaq visual fortran6.5编辑器,程序好像是八几年的,我导师给我的,需要我做分离机械结构参数优 ...

我的建议:
为发论文毕业的话,就别折腾这种F77的古董了,直接上matlab,使用现成工具箱的话,代码量不会超过300行
btw,这样的导师一来不负责任,二来长期脱离科研第一线,三则高估了现在学生的学习能力和学习欲望了

我是处手 发表于 2014-4-30 10:07:36

除了这样,没有办法了吗?

pasuka 发表于 2014-4-30 10:23:41

本帖最后由 pasuka 于 2014-4-30 10:25 编辑

我是处手 发表于 2014-4-30 10:07
除了这样,没有办法了吗?

1、从lz的发帖来看,我感觉不到lz有任何主动学习的欲望和想法,只是被动完成老板交代的任务;
2、如果1成立,那么多快好省地完成任务,按时发论文毕业且找到满意的工作才是最符合lz利益的
综上所述,我的建议就是彻底和fortran说88,投入matlab的怀抱,上手快,可以吃现成饭,网上参考资料也多,甚至可以说是信手拈来,最合适不过的敲门砖
若1不成立,那么请问lz花费多少精力在学习fortran和优化算法上面了呢?彭国伦的书看过了吗?本站的相关文章阅读了多少?优化算法的书又看了多少?文献又阅读了多少?
一分耕耘一分收获,读研做项目可以取巧,但是不能饭来张口,衣来伸手
以上是一家之言,仅供lz参考,人各有志,不能强求

fcode 发表于 2014-4-30 14:00:39

楼上说得对。

如果你打算静下来检查问题的错误,这里可能有一些线索。

WRITE(*,1060)I1,I2,I3,I4,I5,I6
1060FORMAT(8X,'I1',8X,'I2',8X,'I3',8X,'I4',8X,'I5',8X,'I6',/,6I10)
write(*,7001)
7001format(3x,'data file name=****.***')
read(*,*)chr2 !// 此处修改为 *,*
7003format(17x,a)
write(*,7005)
7005format(3x,'a new file or an old one?(new/old)',\)
read(*,'(a3)')chr3
if(chr3.eq.'new'.or.chr3.eq.'NEW') then
open(1,file=chr2,status='new',access='direct',form='binary',
   1recl=80)

几点建议:
1.除非万不得已,read 语句一律用 * ,而不要格式符控制。
2.你的错误在于找不到 1 号文件。
open(1,file=chr2 这里的 chr2 可能根本就没有值。因为 read 的格式是 7003format(17x,a)

为什么要用 17x,a 来读取字符串呢??不是很奇怪么?用 read(*,*) 就可以了

aliouying 发表于 2014-5-2 21:45:24

我是处手 发表于 2014-4-30 09:53
这是约束非线性离散变量组合型优化设计方法,我下面代有优化数学模型,执行生成exe文件后,操作到

确定文件名是"chr2" ?

我是处手 发表于 2014-5-3 21:59:22

对于楼上各位评论,我接受,我也很无语,这程序是八几年导师买来的,里面没有任何注释,我只知道是约束非线性混合离散变量组合型优化程序,里面是一维搜索方法,我就开始看这个优化方法的内容和程序,关于里面的字符含义百分之八十没有具体说明.非计算机专业,fortran我本人看书学习了一个月,语法懂些,没有自己设计过程序.关于这个帖子的问题,已经解决.
在执行件中,输入数据,有严格格式要求,当时没有注意.谢谢各位了.
目前又出现新问题了 Vertices Storage File Name=****.*** NSCH=***
                            0012.dat      001
Input Vertices?(y/n)y
forrtl: severe (36): attempt to access non-existent record, unit 2, file F:\M\00
12.dat
Image            PC      Routine            Line      Source
M.exe            00419409Unknown               UnknownUnknown
M.exe            0041923BUnknown               UnknownUnknown
M.exe            00418444Unknown               UnknownUnknown
M.exe            00418879Unknown               UnknownUnknown
M.exe            00414F1AUnknown               UnknownUnknown
M.exe            00414710Unknown               UnknownUnknown
M.exe            00405AE6Unknown               UnknownUnknown
M.exe            00404C87Unknown               UnknownUnknown
M.exe            00444A39Unknown               UnknownUnknown
M.exe            00436E54Unknown               UnknownUnknown
kernel32.dll       7C816037Unknown               UnknownUnknown

Incrementally linked image--PC correlation disabled.
Press any key to continue
真心不懂,如果有懂的,或者可以帮助调试整个程序的,可以私密我QQ736223939.有偿

我是处手 发表于 2014-5-3 22:20:38

fcode 发表于 2014-4-30 14:00
楼上说得对。

如果你打算静下来检查问题的错误,这里可能有一些线索。


data file name=****.***
读入时格式控制,输入正好对齐****.***
程序执行时是这样来的,你说的也行,这个程序是F77,这个程序是六五国家科技攻关项目

我是处手 发表于 2014-5-3 22:23:37

突然好失落啊,被鄙视了,确实,若是直接用matlab工具箱,带入个数学优化模型就搞定,那学位论文的题目又有何意义?

fcode 发表于 2014-5-4 05:28:50

1.这里没有计算机专业的。据我所知,没有,大家都是非计算机专业。
2.你别介意,大家给你意见,是为让你提高。尽管有时候不太中听。
3.关于 attempt to access non-existent record, 的问题,请看本章常见错误:http://error.w.fcode.cn

我是处手 发表于 2014-5-4 23:37:55

        WRITE(*,'(1x,A)')'Vertices Storage File Name=****.*** NSCH=***'
        READ(*,'(28X,A8,6X,I3)')NAME,NSCH
919        write(*,'(1x,a,\)')'Input Vertices?(y/n)'
        READ(*,'(A)')IYN
        IF(IYN.EQ.'y'.or.IYN.EQ.'Y') then
        goto 913
        elseif(iyn.ne.'n'.and.iyn.ne.'N') then
        goto 919
        endif
        do 300 i=1,n
300        iv(i,1)=ix0(i)
        y(1)=pf0
430        continue
        do 302 k=1,n
        do 304 i=1,n
        if (i.eq.k) go to 306
        ii=k+1
        iv(i,ii)=ix0(i)
        ii=ii+n
        iv(i,ii)=ix0(i)
        go to 308
306        ii=k+1
        iv(i,ii)=ixl(i)
        ii=ii+n
        iv(i,ii)=ixu(i)
308        continue
304        continue
302        continue
        goto 440
913        OPEN(2,FILE=NAME,ACCESS='DIRECT',FORM='binary',
   1RECL=160)
        DO 921 I=1,NV
        READ(2,REC=I)(IV(J,I),J=1,N)
921        CONTINUE
        nv1=nv+1
        read(2,rec=nv1)sch,fun,cst,cycle
        CLOSE(2)
        DO 923 I=1,N
923        IX0(I)=IV(I,1)
        CALL ROUND(X0,IX0)
        PF0=EF(X0)
        Y(1)=PF0
        write(*,'(1x,2hx0,6f13.6)')(x0(i),i=1,n)
        write(*,'(1x,5hf(x0),3x,f13.6)')pf0
        write(*,'(1x,4hsch=,i4,3x,4hfun=,i5,3x,4hcst=,i5,3x,6hcycle=,i2)
   1')sch,fun,cst,cycle
440        continue
        do 310 i=2,nv
        do 312 j=1,n
312        ixt(j)=iv(j,i)
        call round(xt,ixt)
310        y(i)=ef(xt)
450        call compar
        if (i6.ne.1) go to 350
        write(*,1000) (y(i),i=1,nV)
1000        format(1x,2hf=,/,5f15.7)
        do 320 i=1,nv
        do 315 j=1,n
315        ixt(j)=iv(j,i)
        call round(xt,ixt)
        write(*,1010) i,(xt(ii),ii=1,n)
1010        format(1x,2hx=,i5,/,(5f15.7))
320        continue
350        ir=0
        do 352 i=1,n
        dl=1.e10
        du=-1.e10
        do 354 j=1,nv
        w=iv(i,j)
        if (w.ge.du) du=w
        if (w.le.dl) dl=w
354        continue
        w=du-dl
        if (w.le.idx(i)) ir=ir+1
352        continue
        if (ir.ge.en) go to 470
        if (i2.ne.1) go to 360
        w=sch/15
        iw=int(w)
        if (iw.le.qun) go to 360
        call quadr
        if (f1.ge.y(1)) go to 360
        call round(xb,ixb)
        write(*,1020) qun,f1,(xb(i),i=1,n)
1020        format(10x,7hsuccess,/,10x,4hqun=,i5,/,10x,2hf=,f15.7,/,
   110x,2hx=,/,(5f15.7))
        y(nv)=f1
        do 356 i=1,n
356        iv(i,nv)=ixb(i)
        go to 450
360        continue
        IF(I7.EQ.1) THEN
        isch=sch/50
        if (isch*50.ne.sch) go to 351
        ngl=0
        do 337 i=1,n
        ngt=0
        nlt=0
        do 331 j=2,nv
        if (iv(i,j).gt.iv(i,1)) ngt=ngt+1
        if (iv(i,j).lt.iv(i,1)) nlt=nlt+1
331        continue
        if (ngt.gt.1.and.nlt.gt.1) ngl=ngl+1
337        continue
        if (ngl.gt.1) go to 351
        sub=1.
        n1=nv
        call search
        if (f1.gE.y(n1)) go to 351
        do 346 i=1,n
346        iv(i,nv)=ixb(i)
        y(nv)=f1
        KT=4
        go to 450
351        continue
        ENDIF
        n1=nv
***************************
460        MSCH=SCH/NSCH
        IF(MSCH*NSCH.EQ.SCH) THEN
        OPEN(2,FILE=NAME,STATUS='NEW',ACCESS='DIRECT',FORM='binary',
   1RECL=160)
        DO 927 I=1,NV
        WRITE(2,REC=I)(IV(J,I),J=1,N)
927        CONTINUE
        nv1=nv+1
        write(2,rec=nv1)sch,fun,cst,cycle
        CLOSE(2)
        ENDIF
管理员,我在窗口里按提示输入数据,中间到goto913那句就出现forrtl: severe (36): attempt to access non-existent record, unit 2,导师说以前就打不开,我应该怎么改写,纠结快一星期了,可以指导下吗?
页: 1 [2] 3 4
查看完整版本: forrtl: severe (29): file not found, unit 1, file 问题