Вопрос № 177998: Здравствуйте, уважаемые эксперты! Прошу вас помочь мне в доработке генетического алгоритма для задачи о диете: составление наиболее экономного (дешевого) рациона питания, удовлетворяющего определенным мед. Требованиям. Известен перечень доступных ...
Вопрос № 178030: Здравствуйте Уважаемые Эксперты. Есть пример многопотоковой программы быстрой сортировки Хоара массива целых чисел. Необходимо переделать ее для сортировки массива слов в алфавитном порядке методом Хоара. Заранее благодарен. ...
Вопрос № 177998:
Здравствуйте, уважаемые эксперты! Прошу вас помочь мне в доработке генетического алгоритма для задачи о диете: составление наиболее экономного (дешевого) рациона питания, удовлетворяющего определенным мед. Требованиям. Известен перечень доступных продуктов из N наименований. Кроме того, рассматриваются такие характеристики продуктов, как витамины, минеральные вещества жиры, белки, углеводы, калорийность. Для каждого продукта известна его медицинская характеристика т.е. количественное содержание в одной
единице указанных компонентов. Приемлем рацион, удовлетворяющий мед. Нормам, оптимальным является самый дешевый из них.
В моем программном коде отсутствует проверка на допустимость, то есть каждое решение (меню) должно соответствовать норме элементов в день, то есть жиров должно быть 30, углеводов 30 и тд. Стоимость же при этом должна быть минимальной. Финесс функция должна быть только для решений, удовлетворяющим нормам. То есть в выводе должна быть фитнесс функци
я улучшающаяся, и оптимальное решение. Заранее большое спасибо
_Die Die[20]; int mas_inx[6],N_Fitness,F_Fitness; char Name_S[11][15];
protected: int
ia,ib,ic,id,ie, ik; int res_cost,res_al,res_ca,res_fat, res_kkal, res_VitaminA; int result; gene population[MAXPOP]; //вычесление процентного содержания void (*ptrGeneralLike)(void); void GenerateLikelihoods(void);
//fitness для каждой позиции int (*ptrCreateFitness)(void); int CreateFitnesses(void);
//генерация нового поколения void CreateNewPopulation(); int GetIndex(float val); gene Breed(int p1, int p2); <
br>}; //------------------------------------------------------------
void SSDIE::Set_inx(float a, float b, float c, float d, float e, float k, int af, int bf, int cf, int df, int ef) { ia = a; ib = b; ic = c; id = d; ie = e; ik=k; res_al = af; res_ca = bf; res_fat = cf; res_kkal = df; res_VitaminA = ef; } //--генерация продуктов в меню---------------------------------- void SSDIE::Gene_Menu() { int idd, kod = 1,j = 0; // 1 - фрукты, ягоды орехи // 2 - Овощи, грибы, бахчевые //
3 - крупы, мучное, бобовые // 4 - молоко, молочные продукты // 5 - мясные продукты
Отвечает Verena, Профессионал :
Здравствуйте, Yulesik. Я добавила вывод всех допустимых решений из популяции, но более одного попадается крайне редко. Минимальное ищется только в текущей популяции (по константе MAXPOP в популяции 25 особей, т.е. 25 вариантов фитнесс-функции). Удачи!
{#/template js_tmpl_auth_reg_button}
{#template js_tmpl_auth_reg_descr}
{#if $P.login_register_tab == 1}
Для оформления подписки на выбранную рассылку, работы с интересующей вас группой или доступа в нужный вам раздел, просим авторизоваться на Subscribe.ru
{#/if}
{#if $P.login_register_tab == 2}
Для регистрации укажите ваш e-mail адрес. Адрес должен быть действующим, на него сразу после регистрации будет отправлено письмо с инструкциями и кодом подтверждения.
{#/if}
{#/template js_tmpl_auth_reg_descr}
{#template js_tmpl_soc_auth_reg_descr}
Или зарегистрируйтесь через социальную сеть.
{#/template js_tmpl_soc_auth_reg_descr}
{#template js_tmpl_auth_reg_soc}
Вам отправлено письмо для подтверждения вашего адреса {$P.register_confirm_mail}. Для подтверждения адреса перейдите по ссылке из этого письма.
{#/template js_tmpl_auth_reg_descr}
{#template js_tmpl_auth_reg_action}