К постановкам задач

4.П.5. Оптимальный план развития программных продуктов

Постановка задачи

Компания "Корвет" производит программное обеспечение на CD-ROM, которое продается в пакете с драйверами CD-ROM основными производителями компьютерного оборудования. Компания оценивает возможность развития 6 новых программных приложений. В таблице представлена информация о затратах и ожидаемой чистой приведенной прибыли от продажи приложений (с учетом временной стоимости денег, в тыс. долл.).
У "Корвета" 60 программистов. Фирма может выделить 3.5 млн. долл. на развитие новых программных приложений.
    Каков оптимальный набор приложений, которые следует развивать, если:
  1. Ожидается, что клиенты, заинтересованные в приложении 4, будут заинтересованы также в приложении 5 и наоборот. Т.о., эти приложения должны вместе развиваться или не развиваться.
  2. Развитие приложения 1 имеет смысл только при наличии приложения 2. Т.о., если развивается приложение 1, должно развиваться и приложение 2, но приложение 2 может развиваться и без приложения 1.
  3. Приложения 3 и 6 эксплуатируют одну и ту же тему. Следовательно, если одно из них развивается, то другое - нет.
  4. Стремясь обеспечить качество продукции, "Корвет" не склонен развивать более 3 программных продуктов.
Проанализируйте влияние каждого из 4 последних ограничений на оптимальное решение.
приложениезатраты на развитиечисло программистовчистая прибыль
П140062000
П21100183600
П3940204000
П4760163000
П51260284400
П61800346200
Ресурсы350060

Решение задачи

Модель MO4P5

Параметры задачи приведены в таблице в постановке задачи. Мы добавили в ту же таблицу ресурсы "Корвета" и дали названия приложениям П1,...,П6.
    Для условий изменим порядок и перепишем их в следующем виде:
  1. |{П3, П6}| <=1 (из П1, П6 - не более 1)
  2. |{Пi}| <=3 (из П1,...,П6 - не более 3)
  3. П1 => П2 (П2 необходим для П1; если П1, то П2)
  4. П4 <=> П5 ( П1 и П2 вместе выбираются или нет; П4 => П5 и П5 => П4 одновременно)

  5. в таком порядке условия рассматривать удобнее.
Для решения задачи можно использовать следующую модель.
Ресурсы "Корвета" (тип "Приобретение") поступают в Приложения (тип "Производство"), где происходит выбор и развитие приложений. Прибыль от Приложений поступает и учитывается в Прибыли (тип "Сбыт").
Для задания условий понадобится Управление (тип "Хранение"), из которого проведена связь в Счет (тип "Производство"). В Управлении будут задаваться условия на флаги, в Счете - выполняться действия над флагами. Управление и Приложения связаны двусторонней связью, т.е. поток флагов передается в обоих направлениях.

Вставим в модель объект типа "Приобретение" с именем "Ресурсы", объект типа "Производство" с именем "Приложения", объект типа "Сбыт" с именем "Прибыль". Проведем связи-потоки из Ресурсов в Приложения и из Приложений в Прибыль. Это базовая модель, к которой будет добавлено управление, чтобы задавать нужные дополнительные условия.
В Ресурсах, в таблице закупок, введем материалы: программисты, инвестиции. Зададим для них Мах кол-во из параметров задачи.
В Приложениях, в процессах, добавим 6 процесссов-приложений: П1,...,П6. Зададим для них целочисленность: для каждого зададим Ед./блок = 1, Мах = 1. Во входящих материалах для каждого из процессов введем оба материала, поступающие из Ресурсов, потребление зададим из параметров задачи. В исходящих материалах для каждого процесса введем один продукт, одноименный с процессом, с выходом = 1.
В Прибыль, в таблицу продаж, введем все эти 6 продуктов с ценой = прибыли из параметров задачи.
Обеспечим задание условий. Вставим в модель объект типа "Хранение" с именем "Управление", объект типа "Производство" с именем "Счет", проведем связи-потоки из Управления в Счет, из Управления в Приложения и из Приложений в Управление.
Чтобы задать условие-1, введем в Приложения, во входящие материалы, для процессов П3 и П6 материал-флаг "|{3,6}|" с потреблением = 1. Введем в Управление, в хранимые материалы, этот флаг "|{3,6}|". Задавая начальный запас для него, мы определяем, какое количество из процессов, потребляющих этот флаг, может быть выполнено. При начальном запасе = 0, процессы не выполняются. При запасе = 1, может быть выполнено не более 1 процесса, что и требуется в условии. При запасе >= 2, условие отменяется - могут быть выполнены оба процесса.
Условие-2 задается подобным же образом. Введем в Приложения, во входящие материалы, для каждого из процессов материал-флаг "|{1-6}|" с потреблением = 1. Введем в Управление, в хранимые материалы, этот флаг. Задавая начальный запас для него, мы определяем, какое количество из процессов, потребляющих этот флаг, может быть выполнено. В условии-2 запас=3. Чтобы отключить условие, достаточно задать запас >= 6.
Условие-3 задается следующим образом. Введем в Приложения, в исходящие материалы, для процессов П1 и П2 продукты-флаги соответственно (П1)=>П2 и П1=>(П2) с выходом = 1. Эти флаги показывают, что связанные с ними процессы выполнялись. Отправим эти флаги в Управление: введем в Управление, в хранимые материалы, эти флаги. Нам надо, чтобы, если поступил флаг (П1)=>П2, то поступил бы и флаг П1=>(П2). Зададим для (П1)=>П2 Мах запас = 0. Введем в Счет, в процессы, процесс "П1=>П2", во входящие материалы для этого процесса материалы (П1)=>П2 и П1=>(П2) с потреблением = 1. Теперь, если П1 выполнен, в Управление передается флаг (П1)=>П2, он должен быть использован (Мах запас = 0), для этого должен быть выполнен процесс П1=>П2 в Счете, для этого требуется передать этому процессу П1=>(П2) из Управления, для этого в Управление должен поступить П1=>(П2), для этого должен быть выполнен П2. Если же П1 не выполняется, не возникает нужды в выполнении каких-либо действий в Управлении. Если при этом выполняется П2, в Управление поступает флаг П1=>(П2) и там остается, выполнение процесса в Счете необязательно. Чтобы отключить условие, достаточно сделать Мах запас неопределенным или >= 1.
Условие-4 подобно условию-3 в обе стороны. Оно задается подобным же образом. Введем в Приложения, в исходящие материалы, для процессов П4 и П5 продукты-флаги соответственно (П4)<=>П5 и П4<=>(П5) с выходом = 1. Введем в Управление, в хранимые материалы, эти флаги, зададим для обоих флагов Мах запас = 0. Введем в Счет, в процессы, процесс "П4<=>П5", во входящие материалы для этого процесса флаги (П4)<=>П5 и П4<=>(П5) с потреблением = 1. Теперь, если П4 выполнен, должен быть выполнен П5, и наоборот. Но они могут также оба не выполняться. Условие легко можно превратить в условие типа условия-3 ("=>"), убрав одно из ограничений на Мах запас, или разрешив Мах запас >=1. Чтобы отключить условие, достаточно сделать оба Мах запаса неопределенными или >= 1.

Решение модели с любым набором условий, мы оставляем пользователю. Для этого достаточно указанным способом отключить ненужные условия, установить нужные, решить модель.

К постановкам задач