制約の定義
変数は制約内で参照することもできます。変数を使用できるようにするには定義する必要があるという、同じ原則が適用されます。ただし、このようなケースでは変数定義と制約はそれらが適用されるディメンションの子になります。
以下はIBM® Analytical Decision Management for Campaign Optimizationアプリケーションテーブル内の定義済みの制約の例です。アプリケーションのエンド・ユーザー自身は制約を作成しません。ユーザー・インターフェースの「最適化」タブでは、使用したくない制約を無効にすることができます。制約は IBM CPLEX Optimization Studio で定義されます。
<Constraint type="max" name="ctCampaignBudgetConstraint" entityScoped="false" enabled="false" description=
"CampaignBudgetConstraint">
<Boundary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="VariableReferenceBoundary" value="CampaignBudget"/>
<ExpressionFormat format="${FN_sum} ( ${OfferCost} + ${ChannelCost} )"/>
<ExternalUsage controlVariable="use_campaign_budget_constraint" variableType="int" enabledValue="1" disabledValue="0"/>
</Constraint>
<Constraint type="min" name="ctMinCampaignSizeConstraint" entityScoped="false" enabled="false" description="MinCampaignOffers">
<Boundary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="VariableReferenceBoundary" value=
"MinCampaignOfferCount"/>
<ExpressionFormat format="${FN_count} ( ${Offer} )"/>
<ExternalUsage controlVariable="use_min_campaign_offers_constraint" variableType="int" enabledValue="1" disabledValue="0"/>
</Constraint>
<Constraint type="max" name="ctOffersAvailableConstraint" entityScoped="false" description="MaxOffersAvailable">
<Boundary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="VariableReferenceBoundary" value="OffersAvailable"/>
<ExpressionFormat format="${FN_count} ( ${Offer} )"/>
<ExternalUsage controlVariable="use_offers_available_constraint" variableType="int" enabledValue="1" disabledValue="0"/>
</Constraint>
<Constraint type="max" name="ctTotalBudgetConstraint" entityScoped="false" description="TotalBudgetForAllCampaigns">
<Boundary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="VariableReferenceBoundary" value="TotalBudget"/>
<ExpressionFormat format="${FN_sum} ( ${OfferCost} + ${ChannelCost} )"/>
<ExternalUsage controlVariable="use_total_budget_constraint" variableType="int" enabledValue="1" disabledValue="0"/>
</Constraint>
<Constraint type="max" name="ctMaxOffersConstraint" description="MaxOffersPerCustomer">
<Boundary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="VariableReferenceBoundary" value="MaxOffersNum"/>
<ExpressionFormat format="${FN_count} ( ${Offer} / ${Customer} ) + ( ${RecentOffersNum} )"/>
<ExternalUsage controlVariable="use_max_offers_constraint" variableType="int" enabledValue="1" disabledValue="0"/>
</Constraint>
<Constraint type="max" name="ctChannelCapacityConstraint" entityScoped="false" description="MaxOffersPerChannel">
<Boundary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="VariableReferenceBoundary" value="Capacity"/>
<ExpressionFormat format="${FN_count} ( ${Channel} )"/>
<ExternalUsage controlVariable="use_channel_capacity_constraint" variableType="int" enabledValue="1" disabledValue="0"/>
</Constraint>
<Constraint type="min" name="ctOfferAcceptedConstraint" entityScoped="false" enabled="false" description=
"MinOffersAcceptedPerOfferType">
<Boundary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="VariableReferenceBoundary" value=
"MinOffersAccepted"/>
<ExpressionFormat format="${FN_sum} ( ${Offer} * ${Prob.to Respond} )"/>
<ExternalUsage controlVariable="use_min_accepted_offers_constraint" variableType="int" enabledValue="1" disabledValue="0"/>
</Constraint>