Модель экспертной оценки
Сравнительная характеристика эффективности и простоты применения зажиточных за Кондорсе правил голосования Копленда и Симпсона, законов Бордо и оптимальности по Парето с целью разработки автоматизированной программы для нахождения победителя выборов.
Рубрика | Экономико-математическое моделирование |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 20.08.2010 |
Размер файла | 141,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Продемонстрируем решение контрольного примера по правилу Копленда. Определяем оценку Копленда.
Кандидат а является лучшим за b для 1+1+3 избирателей, а для 4-х избирателей кандидат b является лучшим за а. Определим такие преимущества для каждого кандидата, сравним его со всеми другими.
ab - 5 ac - 5 ad - 5 ae - 1 |
ba - 4 ca - 4 da - 4 ea - 8 |
bc - 5 bd - 4 de - 5 |
cb - 4 db - 5 eb - 4 |
cd - 5 ce - 5 |
dc - 4 ec - 4 |
de - 5 |
ed - 4 |
Определим оценку Копленда для каждого кандидата. Кандидат а является лучшим за b (добавляем +1); он также является лучшим за c и d (добавляем два разы +1) и худшим за e (добавляем -1). Следовательно, оценка Копленда для а ровна 2.
Найдем оценку для других кандидатов.
a=+1+1+1-1=2
b=-1+1-1+1=0
c=-1-1+1+=0
d=-1+1-1+1=0
e=+1-1-1-1=-2
Среди полученных оценок определяем максимальную. Как видим, она равняется 2 и принадлежит кандидату а. Следовательно, а - победитель Копленда.
Если бы у нас получились два кандидата с максимальной оценкой, например b и f, мы бы избрали кандидата b, так как он расположен ближе за алфавитом.
Для этого же профиля найдем победителя Борда.
Следовательно, получаем такие оценки:
a=1*4+4*0+1*3+3*3=16
b=3*1+2*4+1*1+2*3=18
c=2*1+4*4+0+0=18
d=1*1+4*3+2*1+1*3=18
e=1*4+1*4+3*4+0=20
Победителем за Борда является кандидат е.
Как видим, оценки Борда ранжируют кандидатов в порядке, противоположном до того, который получается по оценкам Копленда.
Выводы
Данная курсовая работа была посвящена обзору методов голосования большинством голосов. Была проведена сравнительная характеристика каждого из методов и из их множественного числа избраны наилучшие. К ним относятся:
1. зажиточные за Кондорсе правила Копленда и Симпсона, дерево многоэтапного исключения;
2. один из методов подсчета очков - правило Борда.
Все эти правила удовлетворяют условиям оптимума по Парето, монотонности и анонимности. Кроме того, правило Борда удовлетворяет также аксиоме участия и пополнения.
Для программной реализации были избраны методы Копленда и Борда.
Результаты работы программы продемонстрированы на контрольном примере.
Список литературы
Мулен Э. "Кооперативное принятие решений: Аксиомы и модели" - Москва, Мир, 1991.
Миркин Б. Проблема группового выбора. - Москва, Наука, 1974.
Льюс Р.Д., Райфа Х. Игры и решения. М.: ИЛ, 1961.
Антонов А. В. "Системный анализ", М.-2004г.
Ларичев О.И. Наука и искусство принятия решений. - М: Наука, 1979. - 200 с.
Макаров И.М. Теория выбора и принятия решений. - М.: Наука,1987. - 350 с.
Кузнецов А.В., Сакович В.А., Холод Н.И. "Высшая математика. Математическое программирование ", Минск, Вышейшая школа, 2001г.
Красс М.С., Чупрынов Б.П. "Основы математики и ее приложения в экономическом образовании", Издательство "Дело", Москва 2001г.
В.И. Ермаков "Общий курс высшей математики для экономистов", Москва, Инфра-М, 2000г.
Теория прогнозирования и принятия решений. М:1989. 160 стр.
Дополнения
Программа
uses wincrt;
label в, z;
type mas = string[6];
type ball =array[1..10] of shortint;
var N: byte; {кол-во избирателей}
M: byte; {кол-во кандидатов}
s: byte; {кол-во групп}
rang: array[1..10,1..100] of mas; {профиль преимуществ}
к,i,j,l,r,contrl: byte;
а,b: byte; {для проведения парных сравнений}
kopl: ball; {массив оценок Копленда}
vybor1, vybor2: mas;
bord: ball; {массив оценок Борда}
name: array[1..10] of mas; {массив имен кандидатов}
many: array[1..100] of byte; {массив групп избирателей}
n1: array[1..10] of mas;
c: char;
{данные контрольного примера}
{---------------------------}
procedure example;
var и, j: byte;
begin
clrscr; M:=5; n:=9; s:=4;
name[1]:='a'; name[2]:='b'; name[3]:='c'; name[4]:='d'; name[5]:='e';
many[1]:=1; many[2]:=4; many[3]:=1; many[4]:=3;
rang[1,1]:='a'; rang[1,2]:='c'; rang[1,3]:='e'; rang[1,4]:='e';
rang[2,1]:='b'; rang[2,2]:='d'; rang[2,3]:='a'; rang[2,4]:='a';
rang[3,1]:='c'; rang[3,2]:='b'; rang[3,3]:='d'; rang[3,4]:='b';
rang[4,1]:='d'; rang[4,2]:='e'; rang[4,3]:='b'; rang[4,4]:='d';
rang[5,1]:='e'; rang[5,2]:='a'; rang[5,3]:='c'; rang[5,4]:='c';
gotoXY(15,1);
writeln; writeln('Число избирателей: ', N);
writeln('Число кандидатов: ', M);
writeln('Профиль преимуществ:');
for i:=1 to 40 do
write('-');
writeln; write('Число избирателей ');
gotoXY(19,7);
for i:=1 to s do
write(many[i] ' ');
writeln; gotoXY(19,9);
for i:=1 to M do
begin
for j:=1 to s do
write(rang[і,j] ' ');
gotoXY(19, 9+i);
end;
gotoXY(1,15);
end;
{---------------------------}
{проверяет правильность ввода варианта выбора} procedure right;
label l;
begin
l: readln(c);
if (c<>'0') and (c<>'1') then
begin
write('Повторите попытку: ');
goto l;
end;
end;
{---------------------------}
{выводит список имен кандидатов}
procedure help;
var x,y,i: byte;
begin
x:=WhereX;
y:=WhereY;
gotoXY(1,24);
write('Имена кандидатов: ');
for i:=1 to M do
if i<>M then write(name[i] ', ')
else write(name[i]);
gotoXY(x,y);
end;
{---------------------------}
{определение победителя выборов}
procedure victory(v: ball; s: string);
var max, t: shortint;
hl: array[1..10] of byte;
begin
{определение максимальной оценки}
help;
max:=v[1];
for i:=1 to M do
if max<v[i] then
max:=v[i];
t:=1;
{определение кандидатов с максимальной оценкой}
for i:=1 to M do
if (v[i]-max)=0 then
begin
hl[t]:=i;
t:=t+1;
end;
if (t-1)=1 then
begin
write('Победитель за ', s ' с сохранением нейтральности: ');
writeln(name[hl[1]]); writeln('Сумма очков - ', max);
end
else
begin
vybor1:=name[hl[1]];
for i:=2 to t-1 do
if name[hl[i]]<vybor1 then
vybor1:=name[hl[i]];
write('Победитель за ', s ' без сохранения нейтральности: ');
writeln(vybor1);
writeln('Сумма очков - ', max);
writeln('избранный из множественного числа наилучших:');
for i:=1 to t-1 do
writeln(name[hl[i]]);
end;
end;
{---------------------------}
{основная программа}
begin
gotoXY(21,1); writeln('Определение победителя выборов');
writeln; writeln('Запуск контрольного примера - 1; Самостоятельное внесение профиля 0');
right;
if c='1' then
begin
example;
help;
goto z;
end
else clrscr;
write('Введите количество кандидатов: ');
readln(M);
write('Введите количество избирателей: ');
readln(N);
writeln('Введите имена кандидатов');
for i:=1 to M do
begin
write('Кандидат ', и ': ');
readln(name[i]);
end;
writeln('Как будет осуществляться занос
информации?');
write('1- отдельными избирателями, 0- комитетом: ');
right;
if c='1' then
for i:=1 to N do
many[i]:=1;
clrscr; writeln('Введите профиль преимуществ');
s:=1; contrl:=0;
while contrl<>N do
begin
if c='1' then writeln('Избиратель ', s)
else writeln('Группа ', s);
for i:=1 to m do
n1[i]:='';
help;
for j:=1 to M do
begin
y:readln(vybor1);
{проверка на корректность введенного профиля}
r:=0; a:=0; b:=0;
n1[j]:=vybor1;
for l:=1 to M do
begin
if vybor1=name[l] then
begin
b:=1;
for a:=1 to M do
{такое имя уже было введено в данном профиле}
if (vybor1=n1[a]) and ((a-j)<>0) then r:=1;
end;
{имя введенного кандидата не совпадает с ни одним из списка}
if (vybor1<>name[l]) and (l=M) and
(b<>1) then r:=1;
end;
if r=1 then
begin
n1[j]:='';
writeln('Внимательно вводите имена кандидатов');
goto в;
end
else rang[j,s]:=vybor1; {профиль корректен}
end;
if c='0' then
begin
writeln('Количество избирателей в
группе ', s);
readln(many[s]);
contrl:=contrl+many[s];
end
else
contrl:=contrl+1;
s:=s+1;
clrscr;
end; {while}
{Определение оценок Копленда}
z: contrl:=1;
while contrl<=M do
begin
k:=contrl+1;
vybor1:=name[contrl]; vybor2:=name[k];
while k<=M do
begin
i:=1; a:=0; b:=0;
while i<=s do
begin
for j:=1 to M do
if rang[j,i]=vybor1 then l:=j
else
if rang[j,i]=vybor2 then r:=j;
if l<r then a:=a+many[i]
else
if l>r then b:=b+many[i];
i:=i+1;
end;
if a>b then
begin
kopl[contrl]:=kopl[contrl]+1;
kopl[k]:=kopl[k]-1;
end
else
if a<b then
begin
kopl[k]:=kopl[k]+1;
kopl[contrl]:=kopl[contrl]-1;
end;
k:=k+1;
vybor2:=name[k];
end; {while по к}
contrl:=contrl+1;
end; {while по contrl}
{определение оценок Борда}
for i:=1 to s do
for j:=1 to M do
begin
for k:=1 to M do
if rang[j,i]=name[k] then r:=k;
bord[r]:=many[i]*(M-j)+bord[r];
end;
victory(kopl, 'Коплендом');
writeln ('Нажмите любую клавишу
'); readkey; writeln;
victory(bord, 'Борда');
end.
Результаты работы программы
Самостоятельное внесение профиля.
Введите количество кандидатов: 5
Введите количество избирателей: 9
Введите имена кандидатов
Кандидат 1: а
Кандидат 2: b
Кандидат 3: c
Кандидат 4: d
Кандидат 5: е
Как будет осуществляться занос
информации?
1-отдельными избирателями, 0 -
комитетом: 0
Введите профиль преимуществ
Группа 1
a
b
c
d
e
Количество избирателей в группе 1: 1
Группа 2
c
d
b
e
a
Количество избирателей в группе 2: 4
Группа 3
e
a
d
b
c
Количество избирателей в группе 3: 1
Группа 4
e
a
b
d
c
Количество избирателей в группе 4: 3
Победитель по Копленду с сохранением нейтральности - а
Сумма очков - 2
Победитель по Борду с сохранением нейтральности - е
Сумма очков - 20
Результаты работы программы
Подобные документы
Особенности формирования математической модели принятия решений, постановка задачи выбора. Понятие оптимальности по Парето и его роль в математической экономике. Составление алгоритма поиска парето-оптимальных решений, реализация программного средства.
контрольная работа [1,2 M], добавлен 11.06.2011Типы многокритериальных задач. Принцип оптимальности Парето и принцип равновесия по Нэшу при выборе решения. Понятие функции предпочтения (полезности) и обзор методов решения задачи векторной оптимизации с использованием средств программы Excel.
реферат [247,4 K], добавлен 14.02.2011Рассмотрение теоретических и практических аспектов задачи принятия решения. Ознакомление со способами решения с помощью построения обобщенного критерия и отношения доминирования по Парето; примеры их применения. Использование критерия ожидаемого выигрыша.
курсовая работа [118,8 K], добавлен 15.04.2014Классическая теория оптимизации. Функция скаляризации Чебышева. Критерий Парето-оптимальность. Марковские процессы принятия решений. Метод изменения ограничений. Алгоритм нахождения кратчайшего пути. Процесс построения минимального остовного дерева сети.
контрольная работа [182,8 K], добавлен 18.01.2015Проблемы неравномерного распределения доходов среди населения. Закон распределения Парето: зависимость между размером доходов и количеством людей. Распределение Парето в теории катастроф. Методы обработки данных с распределением с тяжелыми хвостами.
курсовая работа [413,0 K], добавлен 06.01.2012Экономико-математическая модель распределения средств рекламного бюджета по различным источникам для получения наибольшей прибыли. Оценка деятельности продавцов компании, создание матрицы назначений по должностям с целью увеличения объема продаж.
контрольная работа [1,9 M], добавлен 16.11.2010Целевая функция, экстремальное значение которой нужно найти в условиях экономических возможностей, как показатель эффективности или критерий оптимальности. Оптимальное использование ресурсов и производственных мощностей. Общая идея симплексного метода.
контрольная работа [1,1 M], добавлен 18.05.2015Структура и параметры эффективности функционирования систем массового обслуживания. Процесс имитационного моделирования. Распределения и генераторы псевдослучайных чисел. Описание метода решения задачи вручную. Перевод модели на язык программирования.
курсовая работа [440,4 K], добавлен 30.10.2010Вычисление приближенного значения интеграла методом Симпсона, путем ввода функции, отрезка и шага dx. Решение задачи методом Симпсона с помощью ПЭВМ. Быстрота и точность решения определенного интеграла от функции, имеющей неэлементарную первообразную.
курсовая работа [601,2 K], добавлен 15.03.2009Проектирование формы входных документов и выходного плана выплат по вкладам на основе исходной информации. Рассмотрение наиболее рациональных путей разработки автоматизированной информационной системы в условиях Маслянинского ДО ОАО Банк "Левобережный".
курсовая работа [314,6 K], добавлен 28.04.2010