Exemple #1
0
def readNeos(filename, json_folder):
    f = open(filename, 'r')
    for i in range(3):
        line = f.readline()

    obj_value = float(line[17:])
    actual = math.exp(obj_value)

    p, f = os.path.split(filename)
    fname = f[:-4] + '.json'
    json_file = os.path.join(json_folder, fname)

    STN = loadSTNfromJSONfile(json_file)
    result, conflicts, bounds, weight = DC_Checker(STN.copy(), report=False)
    contingent = bounds['contingent']

    total = 1
    for (i, j) in list(STN.contingentEdges.keys()):
        edge = STN.contingentEdges[(i, j)]
        length = edge.Cij + edge.Cji
        total *= length

        if (i, j) not in contingent:
            actual *= length

    return actual, total, float(actual / total)
Exemple #2
0
def processOptimal():
    json_folder = input("Please input folder with json file:\n")
    json_list = glob.glob(os.path.join(json_folder, '*.json'))

    result = {}
    for fname in json_list:
        p, f = os.path.split(fname)
        print("Processing: ", f)

        STN = loadSTNfromJSONfile(fname)
        new_STN, count = relaxSearch(STN.copy())
        new, orig, degree = dynamicMetric(STN.copy(), new_STN.copy())

        result[f] = {}
        result[f]['shrinked'] = new
        result[f]['original'] = orig
        result[f]['degree'] = degree

    output_folder = input("Please input output folder:\n")
    filename = os.path.join(output_folder, 'result_optimal.json')

    with open(filename, 'w') as f:
        json.dump(result, f)

    return result
Exemple #3
0
def sampleAll(listOfFile, success='default', LP='original'):
    result = {}
    for fname in listOfFile:
        p, f = os.path.split(fname)
        print("Processing file: ", f)
        STN = loadSTNfromJSONfile(fname)
        degree, success = sample(STN, success=success, LP=LP)
        result[f] = (degree, success)

    return result
Exemple #4
0
def sample_from_folder(folder_name,
                       gauss=False,
                       success='default',
                       LP='original'):
    results = {}
    for filename in os.listdir(folder_name):
        print(filename)
        STN = loadSTNfromJSONfile(folder_name + filename)
        degree, success_rate = sample(STN, success, LP, gauss)
        results[filename] = (degree, success_rate)
    return results
Exemple #5
0
def generate_result_relax(data_path, out_name):
    data_list = glob.glob(os.path.join(data_path, '*.json'))

    result = {}

    for data in data_list:
        STN = loadSTNfromJSONfile(data)
        _, count, _, _ = relaxSearch(STN)

        path, name = os.path.split(data)
        result[name] = count

    # return result
    # Save the results
    with open(out_name, 'w') as f:
        json.dump(result, f)
Exemple #6
0
def computeDynamic(nlp=False):
    uncertain_folder = input("Please input uncertain STNUs folder:\n")
    chain_folder = input("Please input chain STNUs folde:\n")

    listOfFile = []
    listOfFile += glob.glob(os.path.join(uncertain_folder, '*.json'))
    listOfFile += glob.glob(os.path.join(chain_folder, '*.json'))

    degree = {}
    for fname in listOfFile:
        p, f = os.path.split(fname)
        print("Processing: ", f)

        STN = loadSTNfromJSONfile(fname)
        new_STN, count = relaxSearch(STN.copy(), nlp=nlp)

        if not new_STN:
            degree[f] = 0
        else:
            degree[f] = dynamicMetric(STN.copy(), new_STN.copy())[2]

    return degree
Exemple #7
0
def compare(actual_Dict):
    dynamic_folder = input("Please input directory with DC STNUs:\n")
    uncertain_folder = input("Please input directory with uncertain STNUs:\n")

    compare_Dict = {}
    for x in list(actual_Dict.keys()):
        actual_volume = actual_Dict[x]

        if x[:7] == 'dynamic':
            fname = os.path.join(dynamic_folder, x + '.json')
        else:
            fname = os.path.join(uncertain_folder, x + '.json')

        STN = loadSTNfromJSONfile(fname)

        _, _, epsilons = originalLP(STN.copy())
        original, shrinked = newInterval(STN, epsilons)

        old, new, degree = calculateMetric(original, shrinked)
        actual = float(actual_volume / old)
        compare_Dict[x] = (degree, actual)

    return compare_Dict
Exemple #8
0
    directory = "small_examples"
    data_list = glob.glob(os.path.join(directory, '*.json'))

    # testing dream data ##

    # directory = 'dataset/dreamdata/'
    # folders = os.listdir(directory)
    # data_list = []
    # result = []
    # for folder in folders:
    #     data = glob.glob(os.path.join(directory, folder, '*.json'))
    #     data_list += data

    for data in data_list:
        print("simulating", data)
        stn = loadSTNfromJSONfile(data)
        stnc = stn.copy()
        stnc.floyd_warshall()
        a, b, c, d = DC_Checker(stnc)
        print(a)
        alpha, outputstn = srea(stnc)
        e, f, g, t = DC_Checker(outputstn)

        if not e:
            print(data)
            print(outputstn)
            print(t)
            break

        # if outputstn != None:
        #     a,b,c,d = DC_Checker(outputstn)
Exemple #9
0
def simulate_file(file_name, size, verbose=False, gauss=False, relaxed=False) -> float:
    network = loadSTNfromJSONfile(file_name)
    result = simulation(network, size, verbose, gauss, relaxed)
    if verbose:
        print(f"{file_name} worked {100*result}% of the time.")
    return result
Exemple #10
0
def prob_of_DC_file(file_name: str) -> float:
    network = loadSTNfromJSONfile(file_name)
    return prob_of_DC(network)
Exemple #11
0
def dc_checking_file(filename):
    STN = loadSTNfromJSONfile(filename)
    return dc_checking(STN)
Exemple #12
0
def modelDynamicFile(path):
    STN = loadSTNfromJSONfile(path)
    p, f = os.path.split(path)
    fname = f[:-5] + '.mod'
    fname = os.path.join('../../../model/dynamic/model', fname)
    modelObjDynamic(STN, fname)