Метод последовательных сравнений
Дипломная работа - Менеджмент
Другие дипломы по предмету Менеджмент
° и область анализа расположены на разных вкладках. Однако предложенный альтернативный вариант не является оптимальным с точки зрения минимизации временных интервалов, так как при таком расположении основных областей, пользователь будет вынужден совершать лишние перемещения мыши между указанными областями и лишние клики по рабочей области.
Таким образом, реорганизация анализируемого интерфейса не целесообразна. Спроектированный интерфейс является оптимальным, лаконичным и простым в использовании.
4.Листинг
4.1 Класс CombinationGenerator
class CombinationGenerator {int[] a;int n;int r;BigInteger numLeft;BigInteger total;CombinationGenerator(int n, int r) {(r > n) {new IllegalArgumentException();
}(n < 1) {new IllegalArgumentException();
}.n = n;.r = r;= new int[r];nFact = getFactorial(n);rFact = getFactorial(r);nminusrFact = getFactorial(n - r);= nFact.divide(rFact.multiply(nminusrFact));();
}
//------
// Reset
//------void reset() {(int i = 0; i < a.length; i++) {[i] = i;
}= new BigInteger(total.toString());
} // Return number of combinations not yet generated
//------------------------------BigInteger getNumLeft() {numLeft;
}
//-----------------------------
// Are there more combinations?
//-----------------------------boolean hasMore() {numLeft.compareTo(BigInteger.ZERO) == 1;
} // Return total number of combinations
//--------------------------BigInteger getTotal() {total;
}
//------------------
// Compute factorial
//------------------static BigInteger getFactorial(int n) {fact = BigInteger.ONE;(int i = n; i > 1; i--) {= fact.multiply(new BigInteger(Integer.toString(i)));
}fact;
}
//--------------------------------
// Generate next combination (algorithm from Rosen p. 286)
//----------------------------------int[] getNext() {(numLeft.equals(total)) {= numLeft.subtract(BigInteger.ONE);a;
}i = r - 1;(a[i] == n - r + i) {-;
}[i] = a[i] + 1;(int j = i + 1; j < r; j++) {[j] = a[i] + j - i;
}= numLeft.subtract(BigInteger.ONE);
return a;
}
}
4.2 Класс ConditionPanel
public class ConditionPanel extends javax.swing.JPanel {ConditionPanel() {();
}void setCondition(int indices[], int num) {s;= " " + (indices[0] + 1) + " > ";(int i = 1; i < indices.length - 1; i++) {+= (indices[i] + 1) + " + ";
}+= (indices[indices.length - 1] + 1);.setText("" + num + ". " + s);
}void check() {.setSelected(!jCheckBox1.isSelected());
}isSelected() {
return jCheckBox1.isSelected();
}
}
4.3 Класс MainFrame
public class MainFrame extends javax.swing.JFrame {
/** Creates new form MainFrame */MainFrame() {();.setCellRenderer(new ListCellRenderer() {Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {comp = (Component)value;.setBackground(isSelected ? Color.LIGHT_GRAY : Color.white);comp;
}
});.addMouseListener(new MouseAdapter() {
@Overridevoid mouseReleased(MouseEvent e) {.get(jList1.getSelectedIndex()).check();.updateUI();super.mouseReleased(e);
}
});.setValue(2);
}Vector();[] lastNumIndex = new int[value];(int num : lastNumIndex) {.out.println(num);
}(int i = 3; i <= value; i++) {[] indices;x = new CombinationGenerator(value, i);(x.hasMore()) {= x.getNext();.add(indices.clone());
}
}.sort(conditions, new Comparator() {int compare(int[] o1, int[] o2) {( o1[0] < o2[0] ) {-1;
} else if( o1[0] == o2[0] ) {(o1.length < o2.length) {-1;
} else {0;
}
} else {1;
}
}
});= new Vector();num = 1;(int[] indices : conditions) {list = new ConditionPanel();.setCondition(indices, num);++;.add(list);
}.setListData(vec);.updateUI();
}void jSpinner1StateChanged(javax.swing.event.ChangeEvent evt) {.setModel(new DefaultTableModel((Integer)jSpinner1.getValue(), 3) [] canEdit = new boolean [] {, true, true
};
@Overrideboolean isCellEditable(int rowIndex, int columnIndex) {canEdit [columnIndex];
}
@OverrideString getColumnName(int column) {name = "";(column) {0:= "№";;1:= "цель";;2:= "оценка";;
}name;
}
});(int i = 0; i < (Integer)jSpinner1.getValue(); i++){s = "" + (1-0.1*i);.setValueAt(i + 1, i, 0);.setValueAt("цель " + (i + 1), i, 1);.setValueAt(s, i, 2);
}
}float[] values;void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {.updateUI();count = (Integer)jSpinner1.getValue();= new float[count];(int i = 0; i < count; i++) {[i] = Float.parseFloat((String) jTable1.getModel().getValueAt(i, 2));
}(jRadioButton1.isSelected()) {();
} else {();
}
}
}void manualSolve() {i = checkConditions();(i !=-1){.showMessageDialog(this, (i + 1) + " правило не выполнилось. Скорректируйте оценки");
}{();.showMessageDialog(this, "Принятые оценки корректны");
}
}void automaticSolve() {();.add(0);(int i = 1; i < conditions.size(); i++) {[] currentIndex = conditions.get(i);[] previousIndex = conditions.get(i - 1);(currentIndex[0] == previousIndex[0]
&& currentIndex.length == previousIndex.length) {(isConditionSelected(i) != isConditionSelected(i - 1)) {
JOptionPane.showMessageDialog(this, "Уловия не могут быть выполнены при данных значениях оценок !!!");
return;
}
}(currentIndex[0] == previousIndex[0]
&& currentIndex.length > previousIndex.length) {(isConditionSelected(i) == true && isConditionSelected(i - 1) == false) {
JOptionPane.showMessageDialog(this, "Уловия не могут быть выполнены при данных значениях оценок !!!");
return;
}
}(currentIndex.length != previousIndex.length) {.add(i);
}
}
{first = 0; sublist = ind.subList(first, first + size);.reverse(sublist);.addAll(sublist);+= size;
}= sortedInd;
}n = ind.size();delta = 0.01f;(int i = 0; i values[cond[0] + 1]) {[cond[0]] = value;
} else {.showMessageDialog(this, "Уловия не могут быть выполнены при данных значениях оценок");
return;
}
} else {value = getSumm(conditionNum, values) + delta;(cond[0]==0){[cond[0]] = value;
} else {d = value - values[cond[0]];[cond[0]] = value;(int j = 0; j < cond[0]; j++) {[j] += d;
}
}
}
}
}();.showMessageDialog(this, "Принятые оценки корректны");
}int checkConditions() {checkConditions(conditions.size()-1, values);
}boolean isConditionSelected(int numCondition){vec.get(numCondition).isSelected();
}int checkConditions(int lastCondition, float[] values) {(int i = 0; i <= lastCondition; i++) {selected = isConditionSelected(i);(calculute(i, values) == !selected) {i;
}
}-1;
}boolean calculute(int i, float[] values) {[] indices = conditions.get(i);leftValue = values[indices[0]];summ = 0;(int j = 1; j < indices.length; j++) {+= values[indices[j]];
}leftValue > summ;
}float getSumm(int i, float[] values) {[] indices = conditions.get(i);summ = 0;(int j = 1; j < indices.length; j++) {+= values[indices[j]];
}summ;
}void norm() {count = values.length;val = values[0];(int i = 0; i < count; i++) {[i] = values[i] / val;.setValueAt("" + values[i], i, 2);
}
}
}
Выводы
Основное преимущество методов экспертных оценок - возможность их применения в условиях повышенного риска и неопределенности. Эта неопределенность чаще всего является следствием вероятного характера исследуемых явлений, невозможности то?/p>