<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://discopal.ispras.ru/index.php?action=history&amp;feed=atom&amp;title=Blog%3AAdvanced_Algorithms%2F%D0%A0%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%C2%AB%D0%9D%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D1%82%D1%83%D0%B4%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D0%B2_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%8B%C2%BB</id>
		<title>Blog:Advanced Algorithms/Разбор задачи «Назначение студентов в группы» - История изменений</title>
		<link rel="self" type="application/atom+xml" href="https://discopal.ispras.ru/index.php?action=history&amp;feed=atom&amp;title=Blog%3AAdvanced_Algorithms%2F%D0%A0%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%C2%AB%D0%9D%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D1%82%D1%83%D0%B4%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D0%B2_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%8B%C2%BB"/>
		<link rel="alternate" type="text/html" href="https://discopal.ispras.ru/index.php?title=Blog:Advanced_Algorithms/%D0%A0%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%C2%AB%D0%9D%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D1%82%D1%83%D0%B4%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D0%B2_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%8B%C2%BB&amp;action=history"/>
		<updated>2026-04-24T19:38:44Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.26.4</generator>

	<entry>
		<id>https://discopal.ispras.ru/index.php?title=Blog:Advanced_Algorithms/%D0%A0%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%C2%AB%D0%9D%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D1%82%D1%83%D0%B4%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D0%B2_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%8B%C2%BB&amp;diff=27431&amp;oldid=prev</id>
		<title>StasFomin в 10:52, 13 ноября 2023</title>
		<link rel="alternate" type="text/html" href="https://discopal.ispras.ru/index.php?title=Blog:Advanced_Algorithms/%D0%A0%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%C2%AB%D0%9D%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D1%82%D1%83%D0%B4%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D0%B2_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%8B%C2%BB&amp;diff=27431&amp;oldid=prev"/>
				<updated>2023-11-13T10:52:39Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='ru'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 10:52, 13 ноября 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l74&quot; &gt;Строка 74:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 74:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* BigM не обязательно должно быть большой константой.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* BigM не обязательно должно быть большой константой.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Смело смотрите решения друг-друга, подглядывая интересное и полезное.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Смело смотрите решения друг-друга, подглядывая интересное и полезное.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{wl-publish: 2023-11-13 10:52:39 +0000 | StasFomin }}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key discopal:diff:version:1.11a:oldid:27375:newid:27431 --&gt;
&lt;/table&gt;</summary>
		<author><name>StasFomin</name></author>	</entry>

	<entry>
		<id>https://discopal.ispras.ru/index.php?title=Blog:Advanced_Algorithms/%D0%A0%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%C2%AB%D0%9D%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D1%82%D1%83%D0%B4%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D0%B2_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%8B%C2%BB&amp;diff=27375&amp;oldid=prev</id>
		<title>StasFomin в 03:27, 13 ноября 2023</title>
		<link rel="alternate" type="text/html" href="https://discopal.ispras.ru/index.php?title=Blog:Advanced_Algorithms/%D0%A0%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%C2%AB%D0%9D%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D1%82%D1%83%D0%B4%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D0%B2_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%8B%C2%BB&amp;diff=27375&amp;oldid=prev"/>
				<updated>2023-11-13T03:27:41Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='ru'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 03:27, 13 ноября 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;В рамках ревью ваших заданий (конкретно [[Участник:Bagurgl/Назначение студентов в группы]]), как-то возникло желание сделать разбор-решение задачи [[Optprob/Назначение_студентов_в_группы]], прямо в ноутбуке [[Участник:Bagurgl]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;В рамках ревью ваших заданий (конкретно [[Участник:Bagurgl/Назначение студентов в группы]]), как-то возникло желание сделать разбор-решение задачи [[Optprob/Назначение_студентов_в_группы]], прямо в ноутбуке [[Участник:Bagurgl]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{vimeoembed|883845305|800|450}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Можете смотреть решение там, но если [[Участник:Bagurgl]] вдруг решит удалить сильно переписать, то на всякий случай, сохраню эту свое видение правильной компактной и верифицируемой бизнес-модели и тут.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Можете смотреть решение там, но если [[Участник:Bagurgl]] вдруг решит удалить сильно переписать, то на всякий случай, сохраню эту свое видение правильной компактной и верифицируемой бизнес-модели и тут.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l71&quot; &gt;Строка 71:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 73:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Посмотрите в решении функции мои хелперы как быстро смотреть решение — ну можете доработать и свои, полезно сделать какую-нибудь интересную визуализацию (ну если там графы какие или еще что вдруг). &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Посмотрите в решении функции мои хелперы как быстро смотреть решение — ну можете доработать и свои, полезно сделать какую-нибудь интересную визуализацию (ну если там графы какие или еще что вдруг). &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* BigM не обязательно должно быть большой константой.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* BigM не обязательно должно быть большой константой.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Смело смотрите решения друг-друга, подглядывая интересное и полезное.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key discopal:diff:version:1.11a:oldid:27374:newid:27375 --&gt;
&lt;/table&gt;</summary>
		<author><name>StasFomin</name></author>	</entry>

	<entry>
		<id>https://discopal.ispras.ru/index.php?title=Blog:Advanced_Algorithms/%D0%A0%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%C2%AB%D0%9D%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D1%82%D1%83%D0%B4%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D0%B2_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%8B%C2%BB&amp;diff=27374&amp;oldid=prev</id>
		<title>StasFomin: Новая страница: «В рамках ревью ваших заданий (конкретно Участник:Bagurgl/Назначение студентов в группы), к…»</title>
		<link rel="alternate" type="text/html" href="https://discopal.ispras.ru/index.php?title=Blog:Advanced_Algorithms/%D0%A0%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%C2%AB%D0%9D%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D1%82%D1%83%D0%B4%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D0%B2_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%8B%C2%BB&amp;diff=27374&amp;oldid=prev"/>
				<updated>2023-11-13T03:23:36Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «В рамках ревью ваших заданий (конкретно &lt;a href=&quot;/Permission_denied&quot; title=&quot;Permission denied&quot;&gt;Участник:Bagurgl/Назначение студентов в группы&lt;/a&gt;), к…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;В рамках ревью ваших заданий (конкретно [[Участник:Bagurgl/Назначение студентов в группы]]), как-то возникло желание сделать разбор-решение задачи [[Optprob/Назначение_студентов_в_группы]], прямо в ноутбуке [[Участник:Bagurgl]].&lt;br /&gt;
&lt;br /&gt;
Можете смотреть решение там, но если [[Участник:Bagurgl]] вдруг решит удалить сильно переписать, то на всякий случай, сохраню эту свое видение правильной компактной и верифицируемой бизнес-модели и тут.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def get_model(распределение_по_уровням, рейтинг_уровня, число_групп, макс_размер_группы):&lt;br /&gt;
    m = pe.ConcreteModel()&lt;br /&gt;
    &lt;br /&gt;
    число_уровней = len(распределение_по_уровням)&lt;br /&gt;
    блестящий = число_уровней - 1&lt;br /&gt;
    отличник = блестящий - 1&lt;br /&gt;
    m.I = range(число_уровней)&lt;br /&gt;
    m.J = range(число_групп)&lt;br /&gt;
&lt;br /&gt;
    m.x = pe.Var(m.J, m.I, within=pe.NonNegativeIntegers)&lt;br /&gt;
    &lt;br /&gt;
    def рейтинг_группы(j):&lt;br /&gt;
        return sum([рейтинг_уровня[i] * m.x[j, i] for i in m.I])&lt;br /&gt;
        &lt;br /&gt;
    m.макс_рейтинг = pe.Var()&lt;br /&gt;
    @m.Constraint(m.J)            &lt;br /&gt;
    def макс_рейтинг_больше_всех(m, j):&lt;br /&gt;
        return m.макс_рейтинг &amp;gt;= рейтинг_группы(j)&lt;br /&gt;
                &lt;br /&gt;
    m.мин_рейтинг  = pe.Var()&lt;br /&gt;
    @m.Constraint(m.J)            &lt;br /&gt;
    def мин_рейтинг_меньше_всех(m, j):&lt;br /&gt;
        return m.мин_рейтинг &amp;lt;= рейтинг_группы(j)&lt;br /&gt;
&lt;br /&gt;
    @m.Objective(sense=pe.minimize)                &lt;br /&gt;
    def дисбаланс(m):&lt;br /&gt;
        return m.макс_рейтинг - m.мин_рейтинг&lt;br /&gt;
&lt;br /&gt;
    @m.Constraint(m.I)            &lt;br /&gt;
    def распределение_по_уровням_совпадает(m, i):&lt;br /&gt;
        return sum(m.x[..., i]) == распределение_по_уровням[i]&lt;br /&gt;
&lt;br /&gt;
    @m.Constraint(m.I)            &lt;br /&gt;
    def размер_группы_не_превосходит_заданный(m, j):&lt;br /&gt;
        return sum(m.x[j, ...]) &amp;lt;= макс_размер_группы&lt;br /&gt;
&lt;br /&gt;
    m.есть_блестящий = pe.Var(m.J, within=pe.Binary)&lt;br /&gt;
    @m.Constraint(m.J, [0, 1])            &lt;br /&gt;
    def установим_блестящего(m, j, t):&lt;br /&gt;
        if t:&lt;br /&gt;
            return распределение_по_уровням[блестящий] * m.есть_блестящий[j] &amp;gt;=  m.x[j, блестящий]&lt;br /&gt;
        return m.есть_блестящий[j] &amp;lt;=  m.x[j, блестящий]&lt;br /&gt;
    &lt;br /&gt;
    @m.Constraint(m.J, m.J)            &lt;br /&gt;
    def если_у_вас_есть_блестящий_а_у_нас_нет_докажите_что_у_вас_нет_лишнего(m, j, k):&lt;br /&gt;
        if j == k:&lt;br /&gt;
            return pe.Constraint.Skip&lt;br /&gt;
        return m.x[k, блестящий] &amp;lt;= 1 + распределение_по_уровням[блестящий] * (m.есть_блестящий[j] + 1 - m.есть_блестящий[k])&lt;br /&gt;
    return m&lt;br /&gt;
    &lt;br /&gt;
    @m.Constraint(m.J, m.J)            &lt;br /&gt;
    def если_у_вас_есть_блестящий_а_у_нас_нет_мы_требуем_не_меньше_отличников(m, j, k):&lt;br /&gt;
        if j == k:&lt;br /&gt;
            return pe.Constraint.Skip&lt;br /&gt;
        return m.x[j, отличник] - m.x[k, отличник] &amp;gt;= -распределение_по_уровням[отличник] * (m.есть_блестящий[j] + 1 - m.есть_блестящий[k])&lt;br /&gt;
    return m&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Краткие выводы (что вспомнил):&lt;br /&gt;
* Старайтесь сделать компактно и понятно (вам еще потом видео записывать, а кому-то его придется смотреть и все это читать).&lt;br /&gt;
** Если можно обойтись без формул-латеха — то и не надо. Это как раз бич бизнес-оптимизационных статей, куча невнятных переменных, запутанные формулы — это только затрудняет верификацию.&lt;br /&gt;
** Можно заводить промежуточные переменные-функции, для большей понятности&lt;br /&gt;
* Удобно модель возвращать функцией от входных данных (легче играть с параметрами).&lt;br /&gt;
* Делайте модель итерационно, смотрите что получается — и добавляйте и меняйте ограничения, поэкспериментируйте и с входными данными.&lt;br /&gt;
* Давайте использовать по умолчанию солвер «SCIP», меньше вероятности, что затупит даже на этих детских задачах (в этом году пока мы без Gurobi и других более эффективных солверов, хотя я пытаюсь их вернуть).&lt;br /&gt;
* Посмотрите в решении функции мои хелперы как быстро смотреть решение — ну можете доработать и свои, полезно сделать какую-нибудь интересную визуализацию (ну если там графы какие или еще что вдруг). &lt;br /&gt;
* BigM не обязательно должно быть большой константой.&lt;/div&gt;</summary>
		<author><name>StasFomin</name></author>	</entry>

	</feed>