Index · Правила · Поиск· Группы · Регистрация · Личные сообщения· Вход

Список разделов Нужна помощь
 
 
 

Раздел: Нужна помощь Помогите рещить задачу линейного программирования 

Создана: 11 Мая 2013 Суб 16:05:24.
Раздел: "Нужна помощь"
Сообщений в теме: 23, просмотров: 2520

На страницу: Назад  1, 2  Вперёд
  1. Y@shok


    Частый гость


    Более 10 лет на форумеМуж.
    11 Мая 2013 Суб 16:05:24
    Всем привет!

    Дано собственно:
    10 кандидатов, 7 предметных областей.
    Ни один из какндидатов не разбирается во всех семи областях одновременно. Можно представить в виде бинарной матрицы (10 строк, 7 столбцов), где "1" означает, что кандидат разбирается в данной области, "0" - нет :
    1234567
    (к1) 1010100
    (к2) 0010000
    ........
    (к10) 1100100

    Как найти номера кандидатов, которых необходимо принять на работу, чтобы при этом все предметные области были перекрыты их знаниями с наименьшим числом дублирования знаний. Все кандидаты готовы работать за одну и ту же ЗП. Количество нанятых кандидатов не имеет значения. Главное чтобы было наименьшее кол-во дублируемых знаний у кандидатов.
  2. 12 Мая 2013 Вск 14:13:12
    Teruro писал :
    Тогда
    К1: 1000000
    К2: 1110000
    К3: 0001111
    К4-К10: 0000000

    Спасибо, вижу. Я допустил ошибку. Думаю, она поправима, если в алгоритм добавить условие "IF" (если), в момент отбора, "зачисления" очередного кандидата, проверив его области знания "на покрытие" знаний ранее отобранных кандидатов с возможной, при этом, их "отбраковкой".

    С поправками получается так:

    Изначально кандидатам "прикрепим бейджики с номерами".
    Вычислим количество "единиц" у каждого кандидата, затем отсортируем этих кандидатов по количеству "единиц" и начнем рассматривать кандидатов для приема на работу с тех, у кого этих "единиц" меньше всего. Очередной кандидат принимается бы на работу, если бы его знания могли бы "закрыть" хотя бы одну предметную область.
    При этом проверяем его знания предметных областей с уже ранее принятыми (отобранными) кандидатами. Если он, своими знаниями полностью «покрывает» знания ранее отобранного, то тому отобранному, – «до свидание, мы Вас больше не задерживаем» и продолжаем проверять с оставшимися уже отобранными кандидатами.
    С его зачислением, эта(и) предметная (ые) область(и) считается закрытой. Прием кандидатов останавливается, когда все предметные области будут закрыты.
    "Отобрать у принятых кандидатов" их бейджики.
    "Банка" с бейджиками и будет итогом.

    Количество действий приближается к простому перебору и на таких маленьких значениях как 10 и 7 может быть и лучше будет просто перебрать.
  3. Teruro


    Хранитель


    Более 10 лет на форумеУчастнику дано предупреждение от модератораМуж.
    12 Мая 2013 Вск 17:14:43
    туннель писал(а) ? ? ? :С поправками получается так:
    ...

    Мне нравится как вы мыслите. Но, к сожалению, и этот алгоритм не даёт правильного решения:
    контрпример
    К1: 1001000
    К2: 0100100
    К3: 0010010
    К4: 1000001
    К5: 1110000
    К6: 0001111
    К7-10: 0000000

    Вам не хватает чуть-чуть самокритичности. Дело в том, что мало просто изобрести решение. Нужно проверить своё решение на корректность. Для настоящего учёного самым первым и самым придирчивым критиком всегда выступает он сам! С гибкостью ума у вас всё в порядке, развивайте самокритичность.

    Что касается топикстартера, то мы скорее всего его изрядно напугали своими эвристическими методами и терминологией векторной алгебры, которой он по всей видимости не владеет. Y@shok, посмотрите моё первое письмо, там разжёванное решение. Вам осталость только написать программу на том языке, которому вас учил преподаватель. Кстати, его зовут случайно не Ирина Ивановна? :)
  4. 12 Мая 2013 Вск 17:24:33
    Teruro писал :Вам осталость только написать программу на том языке, которому вас учил преподаватель.

    так это не линейное программирование?
  5. Teruro


    Хранитель


    Более 10 лет на форумеУчастнику дано предупреждение от модератораМуж.
    12 Мая 2013 Вск 17:38:29
    spectrum писал(а) :
    Teruro писал ... :Вам осталость только написать программу на том языке, которому вас учил преподаватель.

    так это не линейное программирование?

    Не знаю как в других вузах, а у нас требовали в том числе и программу, реализующую алгоритм. Хотя, может быть за 18 лет что-то сильно поменялось.
  6. Y@shok


    Частый гость


    Более 10 лет на форумеМуж.
    12 Мая 2013 Вск 22:28:00
    Teruro писал :
    Что касается топикстартера, то мы скорее всего его изрядно напугали своими эвристическими методами и терминологией векторной алгебры, которой он по всей видимости не владеет. Y@shok, посмотрите моё первое письмо, там разжёванное решение. Вам осталость только написать программу на том языке, которому вас учил преподаватель. Кстати, его зовут случайно не Ирина Ивановна? :)


    Когда-то раньше владел, но как и все полезное-неиспользуемое - знания имеют свойства забываться. Мне стыдно, но такого преподавателя не припомню. Что-то с памятью моею стало :) Надо завязывать с Алкоголем.
    Во всяком случае ни програмирование, ни математику данный препод у меня не вел.

    У вас действительно решение выглядит очень убедительно. Спасибо.
    Да осталось дело за малым.
  7. 12 Мая 2013 Вск 22:32:30
    объясните происхождение задачи
  8. 13 Мая 2013 Пон 6:55:05
    spectrum писал(а) : объясните происхождение задачи

    Эта стандартная задача линейного программирования, в которой целевая функция - сумма всех элементов матрицы XC (в Вашем обозначении), минимизируется.
  9. Teruro


    Хранитель


    Более 10 лет на форумеУчастнику дано предупреждение от модератораМуж.
    13 Мая 2013 Пон 7:25:13
    туннель писал(а) :Эта стандартная задача линейного программирования

    Spectrum не про это спрашивает. Он имеет в виду, откуда взялась у ТС эта задача.
На страницу: Назад  1, 2  Вперёд