Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2011, 12:05   #1
Энжи
Пользователь
 
Регистрация: 28.11.2009
Сообщений: 13
Сообщение Как правильно составить ограничения для оптимизационной задачи?

Есть задача оптимизации. В задаче есть несколько параметров, которые необходимо реализовать за заданный период времени. Ограничения накладываться должны так, чтобы, например,2-й параметр не реализовывался в 1-м году, если в этом году уже реализуется какой-либо из других параметров.
Не знаю как это сделать, Помогите, плиз!

вот мой предварительный код этих ограничений:
Причем ogr_int[t] - массив ограничений по времени, ограничений всего 3.

for (k = 1; k <= size_arr + 1; k++)
{
for (t = 1; t <= t_plan_i; t++)
{
for (ogr_int[t] = 1; ogr_int[t] <= 3; ogr_int[t]++)
{
proverka[t] = (min1[t] + opt1[t] + max1[t]) / 3;
p[t] = (vse_min1[t] + vse_opt1[t] + vse_max1[t]) / 3;

if (ogr_int[t] == 1)
{

if (proverka[t] >= p[t])
{
mas[k, t] = 1;
listBox2.Items.Add(mas[k, t].ToString() + ' ' + k.ToString() + ' ' + t.ToString());
// MessageBox.Show(proverka[t].ToString() + ' ' + p[t].ToString() + ' ' + k.ToString() + ' ' + t.ToString());

break;
}

}



if (ogr_int[t] == 2)
{
if (proverka[t] >= p[t])
{
mas[k, t] = 1;
// MessageBox.Show(mas[k, t].ToString() + ' ' + k.ToString() + ' ' + t.ToString());

// listBox2.Items.Add(mas[k, t].ToString() + ' ' + k.ToString() + ' ' + t.ToString());

break;

}


}
if (ogr_int[t] == 3)
{

if (proverka[t] <= p[t])
{
mas[k, t] = 1;
// MessageBox.Show(mas[k, t].ToString() + ' ' + k.ToString() + ' ' + t.ToString());

// listBox2.Items.Add(mas[k, t].ToString() + ' ' + k.ToString() + ' ' + t.ToString());
break;

}


}
Энжи вне форума Ответить с цитированием
Старый 30.05.2011, 12:17   #2
Риндера
Delphi, учу С
Форумчанин
 
Аватар для Риндера
 
Регистрация: 20.10.2010
Сообщений: 178
По умолчанию

Цитата:
Сообщение от Энжи Посмотреть сообщение
чтобы, например,2-й параметр не реализовывался в 1-м году, если в этом году уже реализуется какой-либо из других параметров.
Я в таких случаях использую переменные типа boolean. Дешего и удобно.
И код нужно оформлять тегом [code]
Риндера вне форума Ответить с цитированием
Старый 30.05.2011, 12:24   #3
Энжи
Пользователь
 
Регистрация: 28.11.2009
Сообщений: 13
По умолчанию

Не могли бы вы объяснить по подробнее? Мне на выходе необходимо получить двумерный массив параметров и года когда их необходимо реализовать. Не знаю, разве можно такое сделать через булевые переменные? и если можно, то как?
Энжи вне форума Ответить с цитированием
Старый 30.05.2011, 14:39   #4
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 823
По умолчанию

Введи массив из 3-х элементов,типа bool (например, bool [] BLmas=new bool[3]). Как только задействуешь один из параметров с индексом i, то все,кроме элемента i делай false. И делай проверку или введи их в целевую функцию ((int)BLmas[i])*param[i]( если BLmas[i]-false,то произведение будет равно нулю). Массив BLmas создавай при расчете каждого года,инициализируй значениями true.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 30.05.2011, 14:39   #5
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 823
По умолчанию

Пост продублировался.(
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 30.05.2011, 15:14   #6
Энжи
Пользователь
 
Регистрация: 28.11.2009
Сообщений: 13
По умолчанию

Я просто новичок в этом. Если не сложно, можете программно написать как это будет выглядеть?
Энжи вне форума Ответить с цитированием
Старый 30.05.2011, 17:16   #7
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 823
По умолчанию

Напиши условие задачи,а то разбираться в твоем коде сил нет
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 30.05.2011, 17:32   #8
Энжи
Пользователь
 
Регистрация: 28.11.2009
Сообщений: 13
По умолчанию

Есть портфель, в котором находится i-тое количество проектов и этот портфель нужно реализовать за 7 лет. Причем если в год 1 реализуется проект 1, то больше в этот год реализовывать другие проекты нельзя. Количество проектов и лет "вытягиваем" из БД.
Энжи вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно составить ER-диаграмму? Cat 1988_88 Помощь студентам 0 16.10.2010 17:20
Составной запрос, как правильно составить? Bendebej SQL, базы данных 10 26.02.2010 20:01
Как правильно составить маску? Pavell PHP 1 05.01.2009 15:58
как правильно составить формулу в Excel? Вики Помощь студентам 2 01.02.2008 12:20