アットウィキロゴ

fg

Imports System.IO
Public Class Form1
    'Imports System.Math
    Function u(ByVal c1 As Single, ByVal l1 As Single, ByVal l2 As Single) As Single
        Dim pp As Single
        pp = 0
        If l1 < 0 Then pp = 1
        If l2 < 0 Then pp = 1
        If c1 < 0 Then pp = 1
        If l1 > 0.99 Then pp = 1
        If l2 > 0.99 Then pp = 1
        If pp > 0.5 Then c1 = 0.5
        If pp > 0.5 Then l1 = 0.5
        If pp > 0.5 Then l2 = 0.5
        u = Math.Log(c1) + Math.Log(1 - l1) + Math.Log(1 - l2)
    End Function
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim s As Single
        Dim q As Single
        Dim u1 As Single
        Dim th1(10) As Single
        Dim th2(10) As Single
        Dim y1(10, 10) As Single
        Dim y2(10, 10) As Single
        Dim c(10, 10) As Single
        Dim g(10, 2, 2, 2) As Single
        Dim w(9, 2, 2, 2) As Single
        Dim v(9, 2, 2, 2, 10) As Single
        Dim gotoc(9, 2, 2, 2, 10) As Single
        Dim goto1(9, 2, 2, 2, 10) As Single
        Dim goto2(9, 2, 2, 2, 10) As Single
        Dim gotoq(9, 2, 2, 2, 10) As Single
        Dim endv(2, 2, 2) As Single
        Dim endc(2, 2, 2) As Single
        Dim end1(2, 2, 2) As Single
        Dim end2(2, 2, 2) As Single
        Dim endq(2, 2, 2) As Single
        Dim tl As Single
        Dim tk As Single
        Dim tr As Single
        Dim s1 As Single
        Dim s2 As Single
        Dim n1 As Single
        Dim n2 As Single
        Dim n3 As Single
        Dim cp As Single
        Dim yp1 As Single
        Dim yp2 As Single
        Dim l1 As Single
        Dim l2 As Single
        Dim h As Single
        Dim qx As Single
        Dim mx1 As Single
        Dim mx2 As Single
        Dim mx3 As Single
        Dim vs As Single
        Dim pp As Single
        Dim v1 As Single
        Dim nx1 As Single
        Dim nx2 As Single
        Dim nx3 As Single
        Dim ep As Single
        Dim t As Single
        Dim z(10) As Single
        Dim maxu As Single
        Dim u2 As Single
        For s = 1 To 10
            th1(s) = 0.2 * s
            th2(s) = 0.1 * s
        Next
        Dim sr2 As StreamReader
        Dim sr1 As StreamReader
        Dim src As StreamReader
        Dim n As Single
        Dim a(100) As Single
        n = 1
        src = New StreamReader("C:\datac.txt")
        Do While Not src.EndOfStream
            a(n) = src.ReadLine()
            n = n + 1
        Loop
        src.Close()
        s1 = 1
        s2 = 1
        For n = 1 To 100
            c(s1, s2) = a(n)
            s2 = s2 + 1
            If s2 = 11 Then s1 = s1 + 1
            If s2 = 11 Then s2 = 1
        Next
        n = 1
        sr1 = New StreamReader("C:\data1.txt")
        Do While Not sr1.EndOfStream
            a(n) = sr1.ReadLine()
            n = n + 1
        Loop
        sr1.Close()
        s1 = 1
        s2 = 1
        For n = 1 To 100
            y1(s1, s2) = a(n)
            s2 = s2 + 1
            If s2 = 11 Then s1 = s1 + 1
            If s2 = 11 Then s2 = 1
        Next
        n = 1
        sr2 = New StreamReader("C:\data2.txt")
        Do While Not sr2.EndOfStream
            a(n) = sr2.ReadLine()
            n = n + 1
        Loop
        sr2.Close()
        s1 = 1
        s2 = 1
        For n = 1 To 100
            y2(s1, s2) = a(n)
            s2 = s2 + 1
            If s2 = 11 Then s1 = s1 + 1
            If s2 = 11 Then s2 = 1
        Next

        For s2 = 1 To 10
            h = 0.001
            t = 0
            Do Until t > 20
                For s1 = 1 To 10
                    maxu = -999
                    For m1 = 1 To 10
                        For m2 = 1 To 10
                            cp = c(m1, m2)
                            yp1 = y1(m1, m2)
                            yp2 = y2(m1, m2)
                            l1 = yp1 / th1(s1)
                            l2 = yp2 / th2(s2)
                            u1 = u(cp, l1, l2)
                            If m2 = s2 Then u1 = -999
                            If u1 > maxu Then maxu = u1
                        Next
                    Next
                    z(s1) = maxu
                Next
                For s1 = 1 To 10
                    For n1 = -1 To 1
                        For n2 = -1 To 1
                            For n3 = -1 To 1
                                cp = c(s1, s2) + n3 * h
                                yp1 = y1(s1, s2) + n1 * h
                                yp2 = y2(s1, s2) + n2 * h
                                l1 = yp1 / th1(s1)
                                l2 = yp2 / th2(s2)
                                u1 = u(cp, l1, l2)
                                If z(s1) > u1 Then u1 = -999
                                g(s1, n1 + 1, n2 + 1, n3 + 1) = u1
                            Next
                        Next
                    Next
                Next
                For s1 = 1 To 10
                    For n1 = -1 To 1
                        For n2 = -1 To 1
                            For n3 = -1 To 1
                                pp = 0
                                For m1 = 1 To 10
                                    For m2 = 1 To 10
                                        cp = c(m1, m2)
                                        yp1 = y1(m1, m2)
                                        yp2 = y2(m1, m2)
                                        l1 = yp1 / th1(m1)
                                        l2 = yp2 / th2(m2)
                                        u1 = u(cp, l1, l2)
                                        cp = c(s1, s2) + n3 * h
                                        yp1 = y1(s1, s2) + n1 * h
                                        yp2 = y2(s1, s2) + n2 * h
                                        l1 = yp1 / th1(m1)
                                        l2 = yp2 / th2(m2)
                                        u2 = u(cp, l1, l2)
                                        If s2 = m2 Then u2 = -999
                                        If u2 > u1 Then pp = 10
                                    Next
                                Next
                                If pp > 5 Then g(s1, n1 + 1, n2 + 1, n3 + 1) = -999
                            Next
                        Next
                    Next
                Next
                For s1 = 1 To 9
                    For n1 = -1 To 1
                        For n2 = -1 To 1
                            For n3 = -1 To 1
                                cp = c(s1, s2) + n3 * h
                                yp1 = y1(s1, s2) + n1 * h
                                yp2 = y2(s1, s2) + n2 * h
                                l1 = yp1 / th1(s1 + 1)
                                l2 = yp2 / th2(s2)
                                w(s1, n1 + 1, n2 + 1, n3 + 1) = u(cp, l1, l2)
                            Next
                        Next
                    Next
                Next
                For n1 = -1 To 1
                    For n2 = -1 To 1
                        For n3 = -1 To 1
                            For q = -5 To 5
                                v(1, n1 + 1, n2 + 1, n3 + 1, q + 5) = -999
                            Next
                        Next
                    Next
                Next
                For n1 = -1 To 1
                    For n2 = -1 To 1
                        For n3 = -1 To 1
                            q = n2 + n1 - n3
                            v(1, n1 + 1, n2 + 1, n3 + 1, q + 5) = g(1, n1 + 1, n2 + 1, n3 + 1)
                        Next
                    Next
                Next
                For s1 = 2 To 9
                    For n1 = -1 To 1
                        For n2 = -1 To 1
                            For n3 = -1 To 1
                                For q = -5 To 5
                                    qx = q - n1 - n2 + n3
                                    pp = 0
                                    If qx > 5 Then pp = 1
                                    If qx < -5 Then pp = 1
                                    If qx > 5 Then qx = 0
                                    If qx < -5 Then qx = 0
                                    vs = -999
                                    For m1 = -1 To 1
                                        For m2 = -1 To 1
                                            For m3 = -1 To 1
                                                v1 = g(s1, n1 + 1, n2 + 1, n3 + 1) + v(s1 - 1, m1 + 1, m2 + 1, m3 + 1, qx + 5)
                                                If w(s1 - 1, m1 + 1, m2 + 1, m3 + 1) > g(s1, n1 + 1, n2 + 1, n3 + 1) Then v1 = -999
                                                If v1 > vs Then mx1 = m1
                                                If v1 > vs Then mx2 = m2
                                                If v1 > vs Then mx3 = m3

                                                If v1 > vs Then vs = v1
                                            Next
                                        Next
                                    Next
                                    If pp = 1 Then vs = -999
                                    v(s1, n1 + 1, n2 + 1, n3 + 1, q + 5) = vs
                                    gotoc(s1, n1 + 1, n2 + 1, n3 + 1, q + 5) = mx3
                                    goto1(s1, n1 + 1, n2 + 1, n3 + 1, q + 5) = mx1
                                    goto2(s1, n1 + 1, n2 + 1, n3 + 1, q + 5) = mx2
                                    gotoq(s1, n1 + 1, n2 + 1, n3 + 1, q + 5) = qx
                                Next
                            Next
                        Next
                    Next
                Next
                For n1 = -1 To 1
                    For n2 = -1 To 1
                        For n3 = -1 To 1
                            qx = n3 - n1 - n2
                            vs = -999
                            For m1 = -1 To 1
                                For m2 = -1 To 1
                                    For m3 = -1 To 1
                                        v1 = g(10, n1 + 1, n2 + 1, n3 + 1) + v(9, m1 + 1, m2 + 1, m3 + 1, qx + 5)
                                        If w(9, m1 + 1, m2 + 1, m3 + 1) > g(10, n1 + 1, n2 + 1, n3 + 1) Then v1 = -999
                                        If v1 > vs Then mx1 = m1
                                        If v1 > vs Then mx2 = m2
                                        If v1 > vs Then mx3 = m3
                                        If v1 > vs Then vs = v1
                                    Next
                                Next
                            Next
                            endc(n1 + 1, n2 + 1, n3 + 1) = mx3
                            end1(n1 + 1, n2 + 1, n3 + 1) = mx1
                            end2(n1 + 1, n2 + 1, n3 + 1) = mx2
                            endq(n1 + 1, n2 + 1, n3 + 1) = qx
                            endv(n1 + 1, n2 + 1, n3 + 1) = vs
                        Next
                    Next
                Next
                vs = -999
                For n1 = -1 To 1
                    For n2 = -1 To 1
                        For n3 = -1 To 1
                            If endv(n1 + 1, n2 + 1, n3 + 1) > vs Then nx1 = n1
                            If endv(n1 + 1, n2 + 1, n3 + 1) > vs Then nx2 = n2
                            If endv(n1 + 1, n2 + 1, n3 + 1) > vs Then nx3 = n3
                            If endv(n1 + 1, n2 + 1, n3 + 1) > vs Then vs = endv(n1 + 1, n2 + 1, n3 + 1)
                        Next
                    Next
                Next
                Dim opc(10) As Single
                Dim op1(10) As Single
                Dim opq(10) As Single
                Dim op2(10) As Single
                opc(10) = nx3
                op1(10) = nx1
                op2(10) = nx2
                opc(9) = endc(op1(10) + 1, op2(10) + 1, opc(10) + 1)
                op1(9) = end1(op1(10) + 1, op2(10) + 1, opc(10) + 1)
                op2(9) = end2(op1(10) + 1, op2(10) + 1, opc(10) + 1)
                opq(9) = endq(op1(10) + 1, op2(10) + 1, opc(10) + 1)
                For j = 1 To 8
                    s1 = 9 - j
                    opc(s1) = gotoc(s1 + 1, op1(s1 + 1) + 1, op2(s1 + 1) + 1, opc(s1 + 1) + 1, opq(s1 + 1) + 5)
                    op1(s1) = goto1(s1 + 1, op1(s1 + 1) + 1, op2(s1 + 1) + 1, opc(s1 + 1) + 1, opq(s1 + 1) + 5)
                    op2(s1) = goto2(s1 + 1, op1(s1 + 1) + 1, op2(s1 + 1) + 1, opc(s1 + 1) + 1, opq(s1 + 1) + 5)
                    opq(s1) = gotoq(s1 + 1, op1(s1 + 1) + 1, op2(s1 + 1) + 1, opc(s1 + 1) + 1, opq(s1 + 1) + 5)
                Next
                ep = 0
                For s1 = 1 To 10
                    ep = ep + opc(s1) * opc(s1) + op1(s1) * op1(s1) + op2(s1) * op2(s1)
                Next

                If ep < 2 Then h = h / 2
                If h < 0.0001 Then t = 1000
                For s1 = 1 To 10
                    c(s1, s2) = c(s1, s2) + opc(s1) * h
                    y1(s1, s2) = y1(s1, s2) + op1(s1) * h
                    y2(s1, s2) = y2(s1, s2) + op2(s1) * h
                Next
                t = t + 1
            Loop

        Next
        MsgBox(vs)

        For s1 = 1 To 10
            h = 0.001
            t = 0
            Do Until t > 20
                For s2 = 1 To 10
                    maxu = -999
                    For m1 = 1 To 10
                        For m2 = 1 To 10
                            cp = c(m1, m2)
                            yp1 = y1(m1, m2)
                            yp2 = y2(m1, m2)
                            l1 = yp1 / th1(s1)
                            l2 = yp2 / th2(s2)
                            u1 = u(cp, l1, l2)
                            If m1 = s1 Then u1 = -999
                            If u1 > maxu Then maxu = u1
                        Next
                    Next
                    z(s2) = maxu
                Next
                For s2 = 1 To 10
                    For n1 = -1 To 1
                        For n2 = -1 To 1
                            For n3 = -1 To 1
                                cp = c(s1, s2) + n3 * h
                                yp1 = y1(s1, s2) + n1 * h
                                yp2 = y2(s1, s2) + n2 * h
                                l1 = yp1 / th1(s1)
                                l2 = yp2 / th2(s2)
                                u1 = u(cp, l1, l2)
                                If z(s2) > u1 Then u1 = -999
                                g(s2, n1 + 1, n2 + 1, n3 + 1) = u1
                            Next
                        Next
                    Next
                Next
                For s2 = 1 To 10
                    For n1 = -1 To 1
                        For n2 = -1 To 1
                            For n3 = -1 To 1
                                pp = 0
                                For m1 = 1 To 10
                                    For m2 = 1 To 10
                                        cp = c(m1, m2)
                                        yp1 = y1(m1, m2)
                                        yp2 = y2(m1, m2)
                                        l1 = yp1 / th1(m1)
                                        l2 = yp2 / th2(m2)
                                        u1 = u(cp, l1, l2)
                                        cp = c(s1, s2) + n3 * h
                                        yp1 = y1(s1, s2) + n1 * h
                                        yp2 = y2(s1, s2) + n2 * h
                                        l1 = yp1 / th1(m1)
                                        l2 = yp2 / th2(m2)
                                        u2 = u(cp, l1, l2)
                                        If s1 = m1 Then u2 = -999
                                        If u2 > u1 Then pp = 10
                                    Next
                                Next
                                If pp > 5 Then g(s2, n1 + 1, n2 + 1, n3 + 1) = -999
                            Next
                        Next
                    Next
                Next
                For s2 = 1 To 9
                    For n1 = -1 To 1
                        For n2 = -1 To 1
                            For n3 = -1 To 1
                                cp = c(s1, s2) + n3 * h
                                yp1 = y1(s1, s2) + n1 * h
                                yp2 = y2(s1, s2) + n2 * h
                                l1 = yp1 / th1(s1)
                                l2 = yp2 / th2(s2 + 1)
                                w(s2, n1 + 1, n2 + 1, n3 + 1) = u(cp, l1, l2)
                            Next
                        Next
                    Next
                Next
                For n1 = -1 To 1
                    For n2 = -1 To 1
                        For n3 = -1 To 1
                            For q = -5 To 5
                                v(1, n1 + 1, n2 + 1, n3 + 1, q + 5) = -999
                            Next
                        Next
                    Next
                Next
                For n1 = -1 To 1
                    For n2 = -1 To 1
                        For n3 = -1 To 1
                            q = n2 + n1 - n3
                            v(1, n1 + 1, n2 + 1, n3 + 1, q + 5) = g(1, n1 + 1, n2 + 1, n3 + 1)
                        Next
                    Next
                Next
                For s2 = 2 To 9
                    For n1 = -1 To 1
                        For n2 = -1 To 1
                            For n3 = -1 To 1
                                For q = -5 To 5
                                    qx = q - n1 - n2 + n3
                                    pp = 0
                                    If qx > 5 Then pp = 1
                                    If qx < -5 Then pp = 1
                                    If qx > 5 Then qx = 0
                                    If qx < -5 Then qx = 0
                                    vs = -999
                                    For m1 = -1 To 1
                                        For m2 = -1 To 1
                                            For m3 = -1 To 1
                                                v1 = g(s2, n1 + 1, n2 + 1, n3 + 1) + v(s2 - 1, m1 + 1, m2 + 1, m3 + 1, qx + 5)
                                                If w(s2 - 1, m1 + 1, m2 + 1, m3 + 1) > g(s2, n1 + 1, n2 + 1, n3 + 1) Then v1 = -999
                                                If v1 > vs Then mx1 = m1
                                                If v1 > vs Then mx2 = m2
                                                If v1 > vs Then mx3 = m3

                                                If v1 > vs Then vs = v1
                                            Next
                                        Next
                                    Next
                                    If pp = 1 Then vs = -999
                                    v(s2, n1 + 1, n2 + 1, n3 + 1, q + 5) = vs
                                    gotoc(s2, n1 + 1, n2 + 1, n3 + 1, q + 5) = mx3
                                    goto1(s2, n1 + 1, n2 + 1, n3 + 1, q + 5) = mx1
                                    goto2(s2, n1 + 1, n2 + 1, n3 + 1, q + 5) = mx2
                                    gotoq(s2, n1 + 1, n2 + 1, n3 + 1, q + 5) = qx
                                Next
                            Next
                        Next
                    Next
                Next
                For n1 = -1 To 1
                    For n2 = -1 To 1
                        For n3 = -1 To 1
                            qx = n3 - n1 - n2
                            vs = -999
                            For m1 = -1 To 1
                                For m2 = -1 To 1
                                    For m3 = -1 To 1
                                        v1 = g(10, n1 + 1, n2 + 1, n3 + 1) + v(9, m1 + 1, m2 + 1, m3 + 1, qx + 5)
                                        If w(9, m1 + 1, m2 + 1, m3 + 1) > g(10, n1 + 1, n2 + 1, n3 + 1) Then v1 = -999
                                        If v1 > vs Then mx1 = m1
                                        If v1 > vs Then mx2 = m2
                                        If v1 > vs Then mx3 = m3
                                        If v1 > vs Then vs = v1
                                    Next
                                Next
                            Next
                            endc(n1 + 1, n2 + 1, n3 + 1) = mx3
                            end1(n1 + 1, n2 + 1, n3 + 1) = mx1
                            end2(n1 + 1, n2 + 1, n3 + 1) = mx2
                            endq(n1 + 1, n2 + 1, n3 + 1) = qx
                            endv(n1 + 1, n2 + 1, n3 + 1) = vs
                        Next
                    Next
                Next
                vs = -999
                For n1 = -1 To 1
                    For n2 = -1 To 1
                        For n3 = -1 To 1
                            If endv(n1 + 1, n2 + 1, n3 + 1) > vs Then nx1 = n1
                            If endv(n1 + 1, n2 + 1, n3 + 1) > vs Then nx2 = n2
                            If endv(n1 + 1, n2 + 1, n3 + 1) > vs Then nx3 = n3
                            If endv(n1 + 1, n2 + 1, n3 + 1) > vs Then vs = endv(n1 + 1, n2 + 1, n3 + 1)
                        Next
                    Next
                Next
                Dim opc(10) As Single
                Dim op1(10) As Single
                Dim opq(10) As Single
                Dim op2(10) As Single
                opc(10) = nx3
                op1(10) = nx1
                op2(10) = nx2
                opc(9) = endc(op1(10) + 1, op2(10) + 1, opc(10) + 1)
                op1(9) = end1(op1(10) + 1, op2(10) + 1, opc(10) + 1)
                op2(9) = end2(op1(10) + 1, op2(10) + 1, opc(10) + 1)
                opq(9) = endq(op1(10) + 1, op2(10) + 1, opc(10) + 1)
                For j = 1 To 8
                    s2 = 9 - j
                    opc(s2) = gotoc(s2 + 1, op1(s2 + 1) + 1, op2(s2 + 1) + 1, opc(s2 + 1) + 1, opq(s2 + 1) + 5)
                    op1(s2) = goto1(s2 + 1, op1(s2 + 1) + 1, op2(s2 + 1) + 1, opc(s2 + 1) + 1, opq(s2 + 1) + 5)
                    op2(s2) = goto2(s2 + 1, op1(s2 + 1) + 1, op2(s2 + 1) + 1, opc(s2 + 1) + 1, opq(s2 + 1) + 5)
                    opq(s2) = gotoq(s2 + 1, op1(s2 + 1) + 1, op2(s2 + 1) + 1, opc(s2 + 1) + 1, opq(s2 + 1) + 5)
                Next
                ep = 0
                For s2 = 1 To 10
                    ep = ep + opc(s2) * opc(s2) + op1(s2) * op1(s2) + op2(s2) * op2(s2)
                Next
                If ep < 2 Then h = h / 2
                If h < 0.0001 Then t = 1000
                For s2 = 1 To 10
                    c(s1, s2) = c(s1, s2) + opc(s2) * h
                    y1(s1, s2) = y1(s1, s2) + op1(s2) * h
                    y2(s1, s2) = y2(s1, s2) + op2(s2) * h
                Next
                t = t + 1
            Loop
        Next
        Dim don As Single
        don = 0
        For s1 = 1 To 10
            For s2 = 1 To 10
                cp = c(s1, s2)
                l1 = y1(s1, s2) / th1(s1)
                l2 = y2(s1, s2) / th2(s2)
                don = don + u(cp, l1, l2)
            Next
        Next
        Dim Writer1 As New IO.StreamWriter("C:\datac.txt")
        For s1 = 1 To 10
            For s2 = 1 To 10
                Writer1.WriteLine(c(s1, s2))
            Next
        Next
        Writer1.Close()
        Dim Writer2 As New IO.StreamWriter("C:\data1.txt")
        For s1 = 1 To 10
            For s2 = 1 To 10
                Writer2.WriteLine(y1(s1, s2))
            Next
        Next
        Writer2.Close()
        Dim Writer3 As New IO.StreamWriter("C:\data2.txt")
        For s1 = 1 To 10
            For s2 = 1 To 10
                Writer3.WriteLine(y2(s1, s2))
            Next
        Next
        Writer3.Close()
        MsgBox(don)

    End Sub
End Class
最終更新:2009年11月30日 08:05