Главная > Экономико-математическое моделирование > Метод послідовних порівнянь

Метод послідовних порівнянь


25-01-2012, 11:47. Разместил: tester4

Федеральне агентство з рибальству

Федеральне державне освітня установа

Вищої професійної освіти

Мурманський державний технічний університет

Кафедра обчислювальної математики та програмного забезпечення ЕОМ


Розрахунково-графічне завдання

з дисципліни

Теорія прийняття рішень

Тема:

Метод послідовних порівнянь

Виконав: студент ВТФ, групи П-561

Воронкова О.В.

Перевірив: Зав. кафедри ВМ та ПЗ ЕОМ

Середа В.І.

Мурманськ 2010


Зміст

1. Мета роботи

2. Теоретичні відомості

2.1 Експертні методи в дослідженні систем управління

2.2 Метод послідовних порівнянь

2.3 Проблеми, для вирішення яких залучаються методи експертних оцінок

3. Опис інтерфейсу розробленого програмного продукту

4. Лістинг

4.1 Клас В«CombinationGeneratorВ»

4.2 Клас В«ConditionPanelВ»

4.3 Клас В«MainFrameВ»

Висновки

Список використаної літератури

Список використаних програмних засобів

Додаток


1. Мета роботи

Програмно реалізувати інтерактивний метод послідовних порівнянь


2.Теоретичні відомості 2.1 Експертні методи в дослідженні систем управління

Експертні методи спочатку використовувалися в основному в галузі науки і техніки, а потім почали широко застосовуватися в управлінні та економіці. Сутність цих методів як при вирішенні задач ІСУ, так і при використанні їх в практиці узагальненого думки (судження) фахівців-експертів з питань, що розглядаються. Це узагальнена думка виходить в результаті усереднення різними способами думок фахівців-експертів.

Методи експертних оцінок - це наукові методи аналізу складних проблем. Експерти проводять інтуїтивно-логічний аналіз проблеми з кількісною оцінкою суджень, з формальної обробкою результатів. Їх узагальнена думка, отримане в результаті обробки індивідуальних оцінок, приймається як рішення проблеми.

Ці методи передбачають організацію спеціальної процедури отримання інформації, коли фахівці в області розв'язуваної проблеми (експерти) використовують кількісні методи, як при організації процедури експертної оцінки, так і при обробці її результатів.

Досліджувані або оцінювані за допомогою методів експертних оцінок об'єкти або явища розрізняються на основі ознак, характеристик, параметрів, показників. Як правило, кожен показник відбиває деяке властивість, характеристику об'єкта.

У загальному випадку ця властивість може бути виміряна, відображує декількома способами. У теж час, який би із способів ми не обрали, повинні зберігатися незмінними деякі співвідношення значень показників для різних об'єктів.

З кожним показником зв'язується з одного боку деяка характеристика, що залишається постійною при будь-яких допустимих способах його вимірювання. А з іншого боку безліч перетворень переходу від допустимого способу вимірювання даного показника до іншого.

Якщо два показники мають співпадаючі безлічі допустимих перетворень, то говорять, що показники мають шкалу одного типу.

Якщо допустимо перетворення: множення на позитивну константу, то відповідна шкала називається "шкалою відносинВ».

Якщо до цього перетворенню можна доповнити наступне перетворення: додати константу, така шкала називається "шкалою інтервалівВ».

Показники, що мають шкалу не менш досконалу, сем шкала інтервалів, називаються кількісними. Можуть зустрітися показники з т.зв. номінальною шкалою. У цьому випадку встановлюються тільки тотожності або відмінності. Показники з порядковими шкалами прийнято називати якісними.

При класифікації за ознакою оцінки переваг при прийнятті рішень в даний час найбільш поширені метод рангів, метод безпосереднього оцінювання, метод зіставлень. Він включає в себе дві різновиди: парного порівняння та послідовного порівняння.

2.2 Метод послідовних порівнянь

Загальним недоліком показників, одержуваних на основі підсумовування балів, є те, що недолік якості по одному з них можна компенсувати за рахунок інших, отримуючи один і той же результат при різної значимості факторів. Тому для підвищення надійності оцінок, значення має виявлення зв'язків та встановлення залежностей між усіма значущими факторами. Встановлення таких залежностей можливо методом послідовних порівнянь (У. Черчмен, Р. Акофа).

Процедура полягає в наступному. Експертові надається перелік факторів (критеріїв, альтернатив, результатів), які необхідно оцінити за їх відносної важливості і він виробляє ранжування. Найбільш важливого чинника приписується оцінка (вага) = 1, а іншим оцінки () між 0 і 1 в порядку відносної важливості.

Потім експерт встановлює, є фактор з оцінкою 1 більш важливим, ніж комбінація інших факторів.

В· Якщо так, то він збільшує оцінку, щоб вона була більшою, ніж сума всіх інших, тобто

В· Якщо ні, то він коригує оцінку (якщо необхідно), щоб вона була меншою від суми всіх інших, тобто

Далі визначається, чи є другий фактор з оцінкою більш важливим, ніж всі інші. І так далі до фактора.

Таким чином, процедура полягає в систематичній перевірці оцінок на базі їх послідовного порівняння.

Загальна процедура методу наступна:

1. Упорядкувати результати відповідно до їх значимості (відносної важливістю) з точки зору експерта.

Нехай представляє найбільш важливий результат, - наступний за ступенем важливості і т. д., а - найменш важливий.

2. Приписати вага 1,00 результату (тобто = 1,00) та інші ваги всім іншим результатам.

3. Порівняти

з + + ... +:

В· якщо переважніше, треба змінити (в разі необхідності) значення так, щоб> + + ... + . При цій коригуванню, так само як і при всіх інших, слід прагнути до того, щоб ваги набору (, і т.д.) залишилися без змін. Далі слід перейти до кроку 4.

В· якщо = + + ... +, то змінити (в разі необхідності) значення, так щоб виконувалася рівність = + + ... + і потім перейти до кроку 4

В· якщо результат менше привабливий, ніж + + ... +, То змінити значення так, щоб виконувалася нерівність <+ + ... +. Далі порівняти з + + ... + І повторювати до тих пір, поки буде або переважніше, або рівноцінний усім іншим результатам.

4. Порівняти з + ... + І виконати весь крок 3.

5. Продовжити крок 4 до тих пір, поки не буде виконано порівняння з +.

6. Перетворити кожне отримане значення в нормоване ', розділивши відповідні ваги на. У підсумку 'повинна бути дорівнює 1,00.

Якщо число результатів більше семи, метод стає громіздким. У цьому випадку застосовується процедура розбиття на підмножини, до кожному з яких застосовується ця процедура.

експертний послідовний інтерактивний порівняння

2.3 Проблеми, для вирішення яких залучаються методи експертних оцінок

Експертні методи спочатку використовувалися в основному в області науки і техніки, а потім почали широко застосовуватися в управлінні та економіці. Сутність цих методів як при вирішенні завдань ІСУ, так і при використанні їх в практиці узагальненого думки (судження) фахівців-експертів з розглядуваних питань. Це узагальнена думка виходить в результаті усереднення різними способами думок фахівців-експертів.

Це наукові методи аналізу складних проблем. Експерти проводять інтуїтивно-логічний аналіз проблеми з кількісною оцінкою суджень, з формальної обробкою результатів. Їх узагальнена думка, отримане в результаті обробки індивідуальних оцінок, приймається як рішення проблеми.

Проблеми, для вирішення яких доводиться застосовувати методи експертних оцінок, часто ділять на два класи, кожен з яких певним ч...ином впливає на етапи і процедури проведення експертизи.

Проблеми першого класу характеризуються тим, що в їх відношенні в цілому є достатня інформація, але вона може носити якісний характер або є багатокритеріальність, що викликає необхідність залучення експертів. Основні завдання, які в даному випадку доводиться вирішувати при використанні методів експертних оцінок, полягає у пошуку хороших експертів і правильної організації процедури експертизи, при цьому вважають, що групова думка експертів наближається до істинного значення оцінюваних параметрів. У цьому випадку при обробці оцінок широко використовуються методи математичної статистики. Експерти найчастіше використовують порядкову і інтервальну шкали.

Проблеми, складові другий клас, не характеризуються достатнім інформаційним потенціалом. До них частіше ставляться проблеми, що виникають при вирішенні більшості завдань прогнозування. Тут експерти використовують частіше номінальну і порядкову шкали.

До різновидів експертного методу можна віднести соціологічний аналіз, який заснований на опитуванні, зборі і аналізі думок респондентів. Наприклад, фактичних або потенційних споживачів. Таке опитування і збір думок виробляється звичайно в письмовій формі (анкети), або усно (Конференції, аукціони, виставки).

При використанні цього методу також слід застосовувати науково-обгрунтовані способи опитування, математичні принципи збору та обробки інформації. Обробка експертних і соціологічних даних, розрахунки заходів узгодженості вимагають трудомістких обчислень. Тому при зборі та обробці результатів експертної та соціологічної інформації використовують обчислювальну техніку і спеціально розроблені програмні продукти.


3. Опис інтерфейсу розробленого програмного продукту

Вікно додатку підрозділяється на дві основні області: область вводу даних для реалізації Методу послідовних порівнянь і область аналізу та виконання зазначеного методу.

Область введення даних для реалізації методу

Область аналізу та виконання методу

Довжина першої області становить 350 px, довжина другої області - 230 px. Співвідношення довжин областей становить 65%, в свою чергу, золотий перетин представляє відношення 2:3. Таким чином, створений інтерфейс програмного продукту повністю задовольняє вимогам пропорційності.

Пропозиції щодо покращення інтерфейсу: проаналізувавши пропорції елементів управління відносно один одного і краю форми, а також пропорції основних областей форми, можна зробити висновок про коректності побудови спроектованого інтерфейсу.

Альтернативним є варіант організації інтерфейсу, коли основні області: область вводу даних для реалізації методу і область аналізу розташовані на різних вкладках. Однак запропонований альтернативний варіант не є оптимальним з точки зору мінімізації часових інтервалів, оскільки при такому розташуванні основних областей, користувач буде змушений здійснювати зайві переміщення миші між зазначеними областями і зайві кліки по робочій області.

Таким чином, реорганізація аналізованого інтерфейсу не доцільна. Спроектований інтерфейс є оптимальним, лаконічним і простим у використанні.


4. Лістинг 4.1 Клас В«CombinationGeneratorВ»

public class CombinationGenerator {

private int [] a;

private int n;

private int r;

private BigInteger numLeft;

private BigInteger total;

public CombinationGenerator (int n, int r) {

if (r> n) {

throw new IllegalArgumentException ();

}

if (n <1) {

throw new IllegalArgumentException ();

}

this.n = n;

this.r = r;

a = new int [r];

BigInteger nFact = getFactorial (n);

BigInteger rFact = getFactorial (r);

BigInteger nminusrFact = getFactorial (n - r);

total = nFact.divide (rFact.multiply (nminusrFact));

reset ();

}

// ------

// Reset

// ------

public void reset () {

for (int i = 0; i

a [i] = i;

}

numLeft = new BigInteger (total.toString ());

}// Return number of combinations not yet generated

// ------------------------------

public BigInteger getNumLeft () {

return numLeft;

}

// -----------------------------

// Are there more combinations?

// -----------------------------

public boolean hasMore () {

return numLeft.compareTo (BigInteger.ZERO) == 1;

}// Return total number of combinations

// --------------------------

public BigInteger getTotal () {

return total;

}

// ------------------

// Compute factorial

// ------------------

private static BigInteger getFactorial (int n) {

BigInteger fact = BigInteger.ONE;

for (int i = n; i> 1; i -) {

fact = fact.multiply (new BigInteger (Integer.toString (i)));

}

return fact;

}

// --------------------------------

// Generate next combination (algorithm from Rosen p. 286)

// ----------------------------------

public int [] getNext () {

if (NumLeft.equals (total)) {

numLeft = numLeft.subtract (BigInteger.ONE);

return a;

}

int i = r - 1;

while (a [i] == n - r + i) {

i -;

}

a [i] = a [i] + 1;

for (int j = i + 1; j

a [j] = a [i] + j - i;

}

numLeft = numLeft.subtract (BigInteger.ONE);

return a;

}

}

4.2 Клас В«ConditionPanelВ»

public class ConditionPanel extends javax.swing.JPanel {

public ConditionPanel () {

initComponents ();

}

public void setCondition (int indices [], int num) {

String s;

s = "" + (Indices [0] + 1) +">";

for (int i = 1; i

s + = (indices [i] + 1) + "+";

}

s + = (Indices [indices.length - 1] + 1);

jLabel1.setText ("" + Num + ". "+ S);

}

public void check () {

jCheckBox1.setSelected (! jCheckBox1.isSelected ());

}

boolean isSelected () {

return jCheckBox1.isSelected ();

}

}

4.3 Клас В«MainFrameВ»

public class MainFrame extends javax.swing.JFrame {

/** Creates new form MainFrame */

public MainFrame () {

initComponents ();

jList1.setCellRenderer (new ListCellRenderer () {

public Component getListCellRendererComponent (JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {

Component comp = (Component) value;

comp.setBackground (isSelected ? Color.LIGHT_GRAY: Color.white);

return comp;

}

});

jList1.addMouseListener (new MouseAdapter () {

@ Override

public void mouseReleased (MouseEvent e) {

vec.get (jList1.getSelectedIndex ()). check ();

jList1.updateUI (); super.mouseReleased (e);

}

});

jSpinner1.setValue (2);

}

private Vector vec;

private LinkedList conditions;

private void jButton1ActionPerformed (java.awt.event.ActionEvent evt) {

int value = (Integer) jSpinner1.getValue ();

conditions = new LinkedList ();

int [] lastNumIndex = new int [value];

for (int num: lastNumIndex) {

System.out.println (num);

}

for (int i = 3; i <= value; i + +) {

int [] indices;

CombinationGenerator x = new CombinationGenerator (value, i);

while (X.hasMore ()) {

indices = x.getNext ();

conditions.add (indices.clone ());

}

}

Collections.sort (conditions, new Comparator () {

public int compare (int [] o1, int [] o2) {

if (o1 [0]

return -1;

} else if ( o1 [0] == o2 [0]) {

if (o1.length

return -1;

} else {

return 0;

}

} else {

return 1;

}

}

});

vec = new Vector ();

int num = 1;

for (int [] indices: conditions) {

ConditionPanel list = new ConditionPanel ();

list.setCondition (indices, num);

num + +;

vec.add (list);

}

jList1.setListData (vec);

jList1.updateUI ();

}

private void jSpinner1StateChanged (javax.swing.event.ChangeEvent evt) {

jTable1.setModel (new DefaultTableModel ((Integer) jSpinner1.getValue (), 3)

boolean [] canEdit = new boolean [] {

false, true, true

};

@ Override

public boolean isCellEditable (int rowIndex, int columnIndex) {

return canEdit [ColumnIndex];

}

@ Override

public String getColumnName (int column) {

String name = "";

switch (column) {

case 0:

name = "№";

break;

case 1:

name = "мета";

break;

case 2:

name = "оцінка";

break;

}

return name;

}

});

for (int i = 0; i <(Integer) jSpinner1.getValue (); i + +) {

String s = "" + (1-0.1 * i);

jTable1.setValueAt (i + 1, i, 0);

jTable1.setValueAt ("мета" + (i + 1), i, 1);

jTable1.setValueAt (s, i, 2);

}

}

private float [] values;

private void jButton2ActionPerformed (java.awt.event.ActionEvent evt) {

jTable1.updateUI ();

int count = (Integer) jSpinner1.getValue ();

values ​​= new float [count];

for (int i = 0; i

values ​​[i] = Float.parseFloat ((String) jTable1.getModel (). GetValueAt (i, 2));

}

if (JRadioButton1.isSelected ()) {

manualSolve ();

} else {

automaticSolve ();

}

}

}

private void manualSolve () {

int i = checkConditions ();

if (i! = -1) {

JOptionPane.showMessageDialog (this, (I + 1) + "правило не виповнилося. Скоректуйте оцінки ");

}

else {

norm ();

JOptionPane.showMessageDialog (this, "Прийняті оцінки коректні ");

}

}

private void automaticSolve () {

ArrayList ind = new ArrayList ();

ind.add (0);

for (int i = 1; i

int [] currentIndex = conditions.get (i);

int [] previousIndex = conditions.get (i - 1);

if (CurrentIndex [0] == previousIndex [0]

&& currentIndex.length == previousIndex.length) {

if (IsConditionSelected (i)! = IsConditionSelected (i - 1)) {

JOptionPane.showMessageDialog (this, "Улов не можуть бути виконані при даних значеннях оцінок!");

return;

}

}

if (CurrentIndex [0] == previousIndex [0]

&& currentIndex.length> previousIndex.length) {

if (IsConditionSelected (i) == true && isConditionSelected (i - 1) == false) {

JOptionPane.showMessageDialog (this, "Улов не можуть бути виконані при даних значеннях оцінок!");

return;

}

}

if (currentIndex.length ! = PreviousIndex.length) {

ind.add (i);

}

}

{

int first = 0;

ArrayList sortedInd = new ArrayList ();

for (int size = Values.length - 2; size> 0; size -) {

List sublist = ind.subList (first, first + size);

Collections.reverse (sublist);

sortedInd.addAll (sublist);

first + = size;

}

ind = sortedInd;

}

int n = ind.size ();

float delta = 0.01f;

for (int i = 0; i

int conditionNum = Ind.get (i);

int [] cond = conditions.get (conditionNum);

boolean solving = calculute (conditionNum, values);

boolean selected = isConditionSelected (conditionNum);

if (solving! = selected) {

if (solving) {

float value = getSumm (conditionNum, values) - delta;

if (value> values ​​[cond [0] + 1]) {

values ​​[cond [0]] = Value;

} else {

JOptionPane.showMessageDialog (this, "Улов не можуть бути виконані при даних значеннях оцінок");

return;

}

} else {

float value = getSumm (conditionNum, values) + delta;

if (cond [0] == 0) {

values ​​[cond [0]] = Value;

} else {

float d = value - values ​​[cond [0]];

values ​​[cond [0]] = Value;

for (int j = 0; j

values ​​[j] + = d;

}

}

}

}

}

norm ();

JOptionPane.showMessageDialog (this, "Прийняті оцінки коректні ");

}

private int checkConditions () {

return checkConditions (conditions.size () -1, values);

}

private boolean isConditionSelected (int numCondition) {

return vec.get (numCondition). isSelected ();

}

private int checkConditions (int lastCondition, float [] values) {

for (int i = 0; i <= lastCondition; i + +) {

boolean selected = isConditionSelected (i);

if (Calculute (i, values) ==! Selected) {

return i;

}

}

return -1;

}

private boolean calculute (int i, float [] values) {

int [] indices = Conditions.get (i);

float leftValue = values ​​[indices [0]];

float summ = 0;

for (int j = 1; j

summ + = values ​​[indices [j]];

}

return leftValue> summ;

}

private float getSumm (int i, float [] values) {

int [] indices = Conditions.get (i);

float summ = 0;

for (int j = 1; j

summ + = values ​​[indices [j]];

}

return summ;

}

public void norm () {

int count = values.length;

float val = values ​​[0];

for (int i = 0; i

values ​​[i] = values ​​[i]/val;

jTable1.setValueAt ("" + Values ​​[i], i, 2);

}

}

}


Висновки

Основна перевага методів експертних оцінок - можливість їх застосування в умовах підвищеного ризику і невизначеності. Ця невизначеність найчастіше є наслідком вірогідного характеру досліджуваних явищ, неможливості точного передбачення остаточних результатів багатьох процесів і т.д. Залучення експертів для прийняття рішень дозволяє знизити рівень невизначеності і підвищити достовірність рішень. У загальному випадку передбачається, що думка групи експертів надійніше, ніж думка окремого індивідуума. Головна перевага групової оцінки полягає у зменшенні відмінностей у думках, у можливості отримання в якійсь мірі узагальненого і більш представницького думки.

Специфіка і розмаїтість розв'язуваних за участю експертів проблем істотно обмежує можливості створення єдиних універсальних правил і моделей експертизи. Однак можна орієнтовно намітити наступні основні етапи проведення експертизи:

В· формулювання мети експертизи і розробка процедури опитування;

В· формування групи фахівців-аналітиків;

В· відбір та формування групи експертів;

В· проведення опитування;

В· аналіз і обробка інформації, отриманої від експертів;

В· синтез об'єктивної (статистичної) інформації та інформації, отр...иманої від експертів, з метою приведення їх у форму, зручну для прийняття рішення.

Послідовність і зміст цих етапів будуть змінюватися в залежності від реальних умов і обмежень при проведенні експертизи.

Математико-статистичні методи експертних оцінок отримують все більш широке застосування в практиці прийняття рішень. Однак існує ряд проблем і завдань, що потребують подальших теоретичних досліджень і практичної перевірки. Можна вказати на необхідність вдосконалення системи відбору експертів, підвищення надійності характеристик групової думки, розробки методів перевірки обгрунтованості оцінок і ряд інших.


Список використаної літератури

1. Електронний ресурс:
засобів
Додаток 1