席位分配问题——惯例Q值法和d'hondt法的MATLAB程序
本篇博文为追忆以前写过的算法系列第四篇
温故知新
本篇于2009年发表于百度博客,当时还没接触CSDN。所以是文学和技术博客混淆,只是这个程序博文訪问量突破2000,有不少网友评论互动。应该对非常多人有一定的帮助。
程序介绍了数学建模中经典问题的两种解法,即席位分配问题!
%适用于全部情况 BY Gu
clear all
clc %惯例Q值法分配席位,wy为席位数。ps为人数总和,R为分配方案
wy=19;
P=[103 63 34]
%菜单选项
MENUN=menu('选择方法','惯例Q值法','dhondt法','都用');
%惯例Q值法
if (MENUN==1||MENUN==3)==1
n=size(P,2);
ps=sum(P);
RS=0;
for i=1:n
R(i)=fix(P(i)/ps*wy);
RS=RS+R(i);
end
wy1=wy-RS;
for i=1:wy1
for j=1:n
Q(j,i)=P(j).^2/(R(j)*(R(j)+1));
end
t=Q(1,i);
a=1;
for m=2:n
if Q(m,i)>t
t=Q(m,i);
a=m;
end
end
R(a)=R(a)+1;
end
disp('惯例Q值法席位分配为:')
R
end
%d'hondt法………………………………………………………………………………$$
if (MENUN==2||MENUN==3)==1
zs=P;
n=size(zs,2);
for i=1:n
for j=1:wy
r(i,j)=zs(i)/j;
end
end
t=r(:)';
T=sort(t,'descend');
min=T(wy);
R1=zeros(1,n);
for i=1:n
for j=1:wy
if r(i,j)>min
R1(i)=R1(i)+1;
end
end
end
rest=wy-sum(R1);%剩余席位
%对剩余席位的分配处理
k=0;
for i=1:n
if k>=rest%席位分配完成,结束循环
break;
end
for j=1:wy
if r(i,j)==min
R1(i)=R1(i)+1;
k=k+1;%对剩余席位分配计数
break;
end
end
end
disp ('dhondt法席位分配:')
R1
end
原博文地址:http://hi.baidu.com/gujinjin2008/item/659fdb8a33c37354e73d1931
席位分配问题——惯例Q值法和d'hondt法的MATLAB程序的更多相关文章
- 1.1python解决数学建模之席位分配问题
一:上代码 #比例法def rate_method(p,n): lst =[] #保存各组席位数 sum_ =sum(p) #人数和 k =0#临时变量 for i in ...
- ARIMA模型识别、计算p、q值
#-*- coding: utf-8 -*- #确定最佳p.d.q值 import pandas as pd #参数初始化 discfile = '../data/discdata_processed ...
- Q值, 电感Q因素, 电感品质因素, Inductor Q, Quality Factor
Q值基本概念 Q值, 品质因素, Quality Factor 是广泛使用于物理和工程领域的一个参数, 这指的是一个机械或非机械的组件里, 共振(谐振)的能量损失比例, 是衡量一个元件或谐振回路性能的 ...
- 电感的Q值
电感的Q值又称为品质因数,即在通过一定频率信号时,感抗与等效损耗之比.品质因数越高即系统损耗越小效率越高,一般为50`100,最高500左右,再大就会烧毁.一般Q值与很多因素有关:绕线粗细,长度与直径 ...
- 关于电容与Q值
1, 电容模型 电容阻抗可以表示为: 可算得自谐振频率点为: 在该点,容抗与感抗差为0,电容表现出纯电阻性. 2, 阻抗曲线 自谐点是区分电容器呈容性还是感性的分界点.从阻抗曲线看,在自谐点附近阻抗较 ...
- 二值法方法综述及matlab程序
在某些图像处理当中一个关键步是二值法,二值化一方面能够去除冗余信息,另一方面也会使有效信息丢失.所以有效的二值化算法是后续的处理的基础.比如对于想要最大限度的保留下面图的中文字,以便后续的定位处理. ...
- Pycharm下运行程序查看每个变量的值的方法(类似于Spyder和MATLAB)
昨天,用了大量篇幅讲了Spyder的各种问题,之所以要用Spyder,最重要的一个原因就是能够非常方便的查看中间变量的值.类似MATLAB的工作空间,非常方便.如下图所示: 但是Spyder的代码自动 ...
- 002.MVC开发方法和步骤--用一个简单的加法程序来演示
MVC的工作原理: 注:ASP.NET MVC中的url 特殊:构成 http//....../控制器名/方法名 默认: 1.Url请求直接来到Controller中 2.Controller从Mod ...
- 强化学习(十)Double DQN (DDQN)
在强化学习(九)Deep Q-Learning进阶之Nature DQN中,我们讨论了Nature DQN的算法流程,它通过使用两个相同的神经网络,以解决数据样本和网络训练之前的相关性.但是还是有其他 ...
随机推荐
- Kotlin-Not enough information to infer parameter T in fun<T:View> findViewById(id: Int): T!
代码改变世界 错误: Type inference failed : Not enough information to infer parameter T in fun<T:View> ...
- JMeter 性能测试进阶实战
课程简介 本课程制作的主要目的是为了让大家快速上手 JMeter,期间穿插了大量主流项目中用到的技术,以及结合当今主流微服务技术提供了测试 Dubbo 接口.Java 工程技术具体实施方案,注重实践. ...
- 模块(二)——简单的log日志
简单的log日志 鉴于任何功能模块或系统在调试时都需要日志打印,这里随便写了一下,作为以后代码调试之用,只实现了不同等级的日志输出功能,其他的调试功能以后再行添加:使用方法简单,只需要在头文件里事先按 ...
- 【APIO 练习题】Lock Puzzle
题意 你有一个长度为 $n$ 的字符串,你需要经过若干次操作将其变成目标串 $n'$. 一次操作:选择串 $n$ 的一个后缀,将其翻转,并放到串 $n$ 的最前面. 请你输出任意一种方案.当然,你达到 ...
- nodeJS学习(9)--- nodeJS模块:exports vs module.exports
模块简介: 通过Node.js的官方API可以看到Node.js本身提供了很多核心模块 http://nodejs.org/api/ 这些核心模块被编译成二进制文件,可以 require('模块名') ...
- Tortoise SVN 提示 clean up 然而 clean up 没卵用的解决方法
当 svn 提示clean up时,而clean up 仍然没用的情况下 先下载 sqlite3.exe 然后 在svn目录下,.svn 隐藏文件夹中 有个 wc.db 的文件, 执行下面命令行 s ...
- SPOJ QTREE Query on a tree V
You are given a tree (an acyclic undirected connected graph) with N nodes. The tree nodes are number ...
- input上报流程分析【转】
转自:http://blog.chinaunix.net/uid-28320320-id-3389196.html .参考文章 [Andorid]input系统的事件处理 .源码分析 linux )查 ...
- linux内核之系统调用nanosleep与pause()
nanosleep()使得进程进入睡眠状态,指定时候后唤醒进程,sleep()基于其实现 asmlinkage long sys_nanosleep(struct timespec *rqtp, st ...
- Spring Boot学习——统一异常处理
本随笔记录使用Spring Boot统一处理异常. 本文实例是从数据库中根据ID查询学生信息,要求学生的年龄在14——20岁之间.小于14岁,提示“你可能在上初中”:大于20岁,提示“呢可能在上大学” ...