首页 > 其他分享 >11

11

时间:2023-09-25 22:11:18浏览次数:23  
标签:11 score idx st num array numpy

import pulp
import numpy as np

# 创建线性规划问题
model = pulp.LpProblem("CrossDistribution", pulp.LpMaximize)

# 定义评审专家数量和作品数量
num_experts = 125
num_works = 3000

# 定义每位评审专家最多评审的作品数量和每份作品需要被评审的专家数量
k = 120  # 每个专家最多评审的作品数量
m = 5  # 每份作品需要被评审的专家数量

# 创建二进制变量x(i, j)
x = pulp.LpVariable.dicts("x", ((i, j) for i in range(num_experts) for j in range(num_works)), cat='Binary')

# 定义目标函数:最大化交叉评审数量
model += pulp.lpSum(x[i, j] for i in range(num_experts) for j in range(num_works))

# 添加约束条件
# 每位评审专家最多评审k份作品的约束
for i in range(num_experts):
    model += pulp.lpSum(x[i, j] for j in range(num_works)) <= k

# 每份作品需要被评审m位专家的约束
for j in range(num_works):
    model += pulp.lpSum(x[i, j] for i in range(num_experts)) == m

# 求解线性规划问题
model.solve()

# 打印结果
print("Status:", pulp.LpStatus[model.status])
assignments = np.zeros((num_experts, num_works))
# 打印每位评审专家评审的作品列表
for i in range(num_experts):
    selected_works = [j for j in range(num_works) if x[i, j].value() == 1]
    for j in selected_works:
        assignments[i - 1, j] = 1
    print(f"评审专家 {i + 1} 评审的作品列表:{selected_works}")

print(assignments)  # 分配矩阵
print(np.sum(assignments, axis=0))


def calculateCorrelation(matrix):
    num_experts = matrix.shape[0]
    num_works = matrix.shape[1]
    counter = 0
    cor = 0
    for expertx in range(num_experts):
        for expertx1 in range(expertx + 1, num_experts):
            cor += np.sum(matrix[expertx] * matrix[expertx1])
            counter += 1

    cor /= counter
    return cor


print("rate:", calculateCorrelation(assignments))

  

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import json
import math
def find_score(df,column_indices):
    multiple_columns_data = df.iloc[:, column_indices]
    array_from_to_numpy = multiple_columns_data.values[2:]
    result = []
    for arrary in array_from_to_numpy:
        result.extend(arrary)
    prof_list = list(set(result))
    # 统计第二阶段评审
    index = 0
    flag = 0
    for i, arrary in enumerate(array_from_to_numpy):
        for a in arrary:
            if isinstance(a, float):
                index = i
                flag = 1
                break
        if flag == 1:
            break

    second_stage_list = array_from_to_numpy[:index].tolist()
    return second_stage_list

def cover_iloc(array_from_to_numpy):
    all_result = []
    for i in range(len(array_from_to_numpy[0])):
        tmp = []
        for j in range(len(array_from_to_numpy)):
            tmp.append(array_from_to_numpy[j][i])
        all_result.append(tmp)
    return all_result

def Calculation_of_standard_scores(array_from_to_numpy_or):
    all_stand_score = []
    for score in array_from_to_numpy_or:
        or_score = integer_list = [int(x) for x in score]
        expert_num = len(or_score)
        stand_score = []
        _a = sum(or_score) / expert_num
        _sum = 0
        for i in range(expert_num):
            _sum += pow(or_score[i] - _a, 2)
        s = math.sqrt(_sum / (expert_num - 1))
        for i in range(expert_num):
            x_k = 50 + 10 * ((or_score[i] - _a) / (s + 1))
            stand_score.append(int(x_k))
        all_stand_score.append(stand_score)
    #print(all_stand_score)
    return all_stand_score
def find_or_st_2():
    # 读取Excel文件,指定文件路径
    excel_file = '数据1.xlsx'
    # 使用pandas的read_excel函数读取Excel文件
    df = pd.read_excel(excel_file)
    column_indices_or = [24, 28, 32]
    array_from_to_numpy_or = find_score(df, column_indices_or)
    array_from_to_numpy_or = cover_iloc(array_from_to_numpy_or)
    #print(array_from_to_numpy_or)
    array_from_to_numpy_st = Calculation_of_standard_scores(array_from_to_numpy_or)
    return array_from_to_numpy_or, array_from_to_numpy_st
if __name__ == '__main__':

    array_from_to_numpy_or, array_from_to_numpy_st = find_or_st_2()
    bin_width = 10
    bins = list(range(0, 101, bin_width))

    # 初始化一个列表,用于存储每个小列表中每个区间的数值个数
    histograms = []
    # 计算需要创建的子图数量
    num_subplots = len(array_from_to_numpy_or)

    # 计算每行显示的子图数量(一行排两个,不足两个的就排一个)
    num_cols = 2
    num_rows = (num_subplots + 1) // 2

    # 创建一个大图,拥有动态确定的子图布局
    fig, axs = plt.subplots(num_rows, num_cols, figsize=(12, 6 * num_rows))

    # 遍历大列表中的每个小列表
    # 遍历大列表中的每个小列表
    for i, (small_list_or, small_list_st) in enumerate(zip(array_from_to_numpy_or, array_from_to_numpy_st)):
        # 使用numpy的histogram函数计算数值列表的分布
        hist_or, bin_edges_or = np.histogram(small_list_or, bins=bins)
        hist_st, bin_edges_st = np.histogram(small_list_st, bins=bins)

        # 计算当前子图的行和列索引
        row_idx = i // num_cols
        col_idx = i % num_cols
        # 处理直方图数据,将负数替换为0
        hist_or = np.clip(hist_or, 0, None)
        hist_st = np.clip(hist_st, 0, None)
        # 绘制条形图,并指定ax参数,以便将每个条形图绘制在不同的子图上
        axs[row_idx, col_idx].bar(bin_edges_or[:-1], hist_or, width=bin_width, align='edge', alpha=0.5, label='original score')
        axs[row_idx, col_idx].bar(bin_edges_st[:-1], hist_st, width=bin_width, align='edge', alpha=0.5, label='standard scores')

        # 设置X轴和Y轴标签
        axs[row_idx, col_idx].set_xlabel('corridor')
        axs[row_idx, col_idx].set_ylabel('Number')
        # 设置子图标题
        axs[row_idx, col_idx].set_title(f'Distribution of ratings for expert {i+1}')

        # 添加图例
        axs[row_idx, col_idx].legend()

    # 隐藏不需要的空白子图
    for i in range(num_subplots, num_cols * num_rows):
        axs[i // num_cols, i % num_cols].axis('off')

    # 调整子图之间的距离
    plt.tight_layout()

    # 显示图形
    plt.show()

  

 

标签:11,score,idx,st,num,array,numpy
From: https://www.cnblogs.com/zhaojianhui/p/17728982.html

相关文章

  • 牛客周赛 Round 11
    https://ac.nowcoder.com/acm/contest/64593A题签到B题值得说得是对非降序的理解:非降序表示数组中的前一个数要<=下一个数C题也算dp,因为需要注意遍历顺序,计算的是所有子串的的权重,我们知道枚举所有子串需要\(O(n^2)\)的复杂度,按照本题数据范围显然不能\(O(n^3)\),我们只能在枚......
  • 11
    https://api.cn2.pw/api/v1/client/subscribe?token=d880fa160708bf1fc85b0774ebafb650&flag=clashwhttps://qiuyin.click/api/v1/client/subscribe?token=44bd8851fdc334f9775628c40befec2f......
  • CF1106D Lunar New Year and a Wander 题解
    CF1106D题解暑期学校军训第一天模拟赛的题,相对而言比较简单题意:题意其实很简单,就是有一个无向图,需要你从\(1\)号节点出发,然后一次遍历所有的点,输出其中字典序最小的遍历思路说说思路吧,这题既然要遍历图上所有点,那首先就会想到\(\texttt{BFS}\)或\(\texttt{DFS}\),可本题还......
  • 《看了受制了》第二十五天吗,5道题,合计119道题
    2023年9月24日今天下午,把atcoder翻译的弄成了一个ChatGpt的接口版本。优化了很多。牛客周赛13矩阵转置置题面理解就是语法,倒着输出即可。代码实现#include<iostream>#include<algorithm>#include<unordered_map>#include<cstring>#include<cstdio>#include<vect......
  • 20211314王艺达学习笔记3
    sh编程sh脚本与C程序·C程序必须先编译链接到一个二进制可执行文件,再通过主sh的子进程运行该二进制可执行文件;sh则可直接执行行命令。·sh脚本不需要main函数。编写sh脚本shell的基本语法主要就是如何输入命令运行程序以及如何在程序之间通过shell的一些参数提供便利手段来进......
  • 20211301 学习笔记3
    20211301《Unix/Linux系统编程》学习笔记3学习目标总结一下一门程序设计语言有哪些必备的要素和技能?这些要素和技能在shell脚本中是如果呈现出来的?教材知识总结10.1sh脚本定义:sh脚本是一个包含sh语句的文本文件、命令解释程序sh要执行该语句sh:sh是解释程序,逐行......
  • P3514 [POI2011] LIZ-Lollipop
    很神奇的题题意:给你一个由\(0\)和\(1\)组成的序列,给出\(q\)个询问,每次询问是否有原序列是否有总和为\(x\)的子段。考虑递推,但是小答案对大答案的影响不好算。考虑大区间对小区间的影响。设当前区间为\([l,r]\),总和为sum,有\(4\)种情况\(a[l]=2,a[r]=2\);这是无......
  • 20211316郭佳昊 《信息安全系统设计与实现(上)》第三周学习笔记
    一、任务要求[1]知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题核心是要求GPT:请你以苏格拉底的方式对我进行提问然后GPT就会......
  • 2023-2024-1 20211306 密码系统设计与实现课程学习笔记3
    20211306密码系统设计与实现课程学习笔记3学习任务详情自学教材第10章,提交学习笔记大家学习过Python,C,Java等语言,总结一下一门程序设计语言有哪些必备的要素和技能?这些要素和技能在shell脚本中是如果呈现出来的?知识点归纳以及自己最有收获的内容,选择至少2个知识点利用......
  • QE01/QA11/QA02屏幕增强
    1、业务需求需要对来料检验增加“合格数量”和“不合格数量”字段,涉及三个增强开发2、QE01\QE02\QE03\QE51N屏幕增强增强表增强点BADI:QEEM_SUBSCREEN_5000创建程序,包含子屏幕,在增强点中调用在程序屏幕中绘制字段在输出流中可以通过事务代码控制字段编辑和必输效果"--......